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