如何使用Lucene.Net将搜索短语与通配符组合

本文关键字:短语 通配符 组合 搜索 何使用 Lucene Net | 更新日期: 2023-09-27 17:50:48

我正在传递一个搜索查询到Lucene QueryParser。Parse(字符串查询)方法,然后将结果传递给Searcher。查询(Query Query, int n).

字符串:

"system cleaner"

返回1次命中。

字符串:

"system clean*"

或:

"system clean'*"

返回0次点击。

如何提供既使用引号短语又使用通配符的搜索查询?

如何使用Lucene.Net将搜索短语与通配符组合

QueryParser不支持这个。您可以使用SpanQuery API构造这样的查询:

SpanQuery firstwordQuery = new SpanTermQuery(new Term("myField", "system"));
//Unfortunately, Lucene.Net doesn't have SpanMultiTermQueryWrapper...
SpanQuery secondwordQuery = new SpanRegexQuery(new Term("myField", "clean.*"));
SpanQuery[] spanClauses = new SpanQuery[] {firstwordQuery, secondwordQuery};
Query finalQuery = new SpanNearQuery(spanClauses, 0, true);