【问题标题】:How to combine a search phrase with a wildcard using Lucene.Net?如何使用 Lucene.Net 将搜索短语与通配符结合起来?
【发布时间】:2015-05-26 11:13:11
【问题描述】:

我将搜索查询传递给 Lucene QueryParser.Parse(string query) 方法,然后将结果传递给 Searcher.Search(Query query, int n)。

一串:

"system cleaner"

返回 1 次命中。

一串:

"system clean*"

或:

"system clean\*"

返回 0 次点击。

如何提供同时使用带引号的短语和通配符的搜索查询?

【问题讨论】:

    标签: c# lucene lucene.net


    【解决方案1】:

    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);
    

    【讨论】:

    • 很好的例子。谢谢!
    • 对于在 JAVA Lucene v8 工作并得到此答案的人,您可以使用 SpanMultiTermQueryWrapperWildcardQuery 作为 SpanRegexQuery 的替代品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多