如果搜索查询包含前导通配符(*
或?
),则QueryParser
的{{1}}函数会抛出错误。
Parse
有没有办法在Lucene.NET v2.0.0.4中解决这个问题?
答案 0 :(得分:5)
将QueryParser.SetAllowLeadingWildcard Method设为true。 API页面指出“这可能会对大型索引产生非常慢的查询”。
答案 1 :(得分:1)
也许您必须使用WildcardQuery,但
...为了防止极度缓慢 WildcardQueries,一个通配符术语 不应该从其中一个开始 通配符...
答案 2 :(得分:0)
您可以使用NGramFilter
作为索引分析器来避免使用通配符查询。您必须使用search_analyzer
而不是NGramFilter
。这样,您甚至可以在不需要通配符的情况下搜索类似于like "%text%"
的内容。您只需输入'abc'即可快速搜索包含'abc'的所有条目。