我怎样才能做到在Lucene的两个多字短语邻近搜索。 例如,我想找到所有黑实验室*(黑色拉布拉多,黑色拉布拉多等)withing短语“宠物商店”的5个字。 其分析我应该使用? 哪个查询分析器将建议? 我用Lucene.NET工作。 我已经移植了ComplexPhraseQueryParser从Java到C#,但解析器似乎并没有做的伎俩(或者也许我只是用错了)。 我刚开始使用Lucene的,所以你的帮助是非常赞赏。
Answer 1:
您可以使用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的QueryParser
不支持范围查询,但你可以尝试环绕查询分析器 。 我找不到别的不多于文档的方式。
您也可以找到这个答案和这个博客帖子有用。
Answer 2:
你只需要设置的斜率 。
文章来源: “”black lab*“ ”pet shop“”~5 in Lucene (proximity search with multi-word phrases)