如何在 Lucene 中对两个多词短语进行邻近搜索。例如,我想查找所有包含“宠物店”一词的 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);
默认的 LuceneQueryParser
不支持跨度查询,但您可以尝试使用Surround 查询解析器。我在文档中找不到太多其他内容。
于 2012-06-11T16:13:28.913 回答
0
你只需要设置 slop。
于 2012-05-31T15:50:08.547 回答