1

Luceneで2つのマルチワードフレーズの近接検索を行うにはどうすればよいですか。たとえば、「ペットショップ」というフレーズが5語含まれている、すべての黒のラボ*(黒のラブラドール、黒のラブラドゥードルなど)を検索したいとします。どのアナライザーを使用する必要がありますか?どのクエリパーサーが推奨されますか?Lucene.NETを使用しています。ComplexPhraseQueryParserをJavaからC#に移植しましたが、そのパーサーはうまく機能していないようです(または、間違って使用している可能性があります)。Luceneを使い始めたばかりなので、ご協力いただければ幸いです。

4

2 に答える 2

5

これにはSpanQueryを使用できます。

new SpanNearQuery(
    new SpanQuery[] {
        new SpanNearQuery(
            new SpanQuery[] {
                new SpanTermQuery(new Term(FIELD, "black")),
                new SpanMultiTermQueryWrapper<WildcardQuery>(new WildcardQuery(new Term(FIELD, "lab*"))),
            },
            0,
            true),
        new SpanNearQuery(
            new SpanQuery[] {
                new SpanTermQuery(new Term(FIELD, "pet")),
                new SpanTermQuery(new Term(FIELD, "shop")),
            },
            0,
            true),
    },
    5,
    true);

デフォルトのLuceneはスパンクエリをサポートしていませんが、 SurroundクエリパーサーQueryParserを試すことができます。私はドキュメンテーションの方法で他に多くを見つけることができませんでした。

また、この回答このブログ投稿が役立つ場合があります。

于 2012-06-11T16:13:28.913 に答える
0

スロップを設定するだけです。

于 2012-05-31T15:50:08.547 に答える