如何在Lucene中对两个多词短语进行邻近搜索.例如,我想找到所有黑色实验室*(黑色拉布拉多犬,黑色拉布拉多犬等),用5个单词的"宠物店".我应该使用哪种分析仪?建议使用哪个查询解析器?我正在使用Lucene.NET.我已将ComplexPhraseQueryParser从Java移植到C#,但该解析器似乎没有做到这一点(或者我可能只是错误地使用它).我刚刚开始使用Lucene,所以非常感谢你的帮助.
您可以使用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);
Run Code Online (Sandbox Code Playgroud)
默认的Lucene QueryParser不支持跨度查询,但您可以尝试使用Surround查询解析器.我在文档的方式上找不到太多其他东西.
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |