领先的通配符在Lucene.NET中引发错误

时间:2009-01-22 07:10:58

标签: lucene lucene.net wildcard

如果搜索查询包含前导通配符(*?),则QueryParser的{​​{1}}函数会抛出错误。

Parse

有没有办法在Lucene.NET v2.0.0.4中解决这个问题?

3 个答案:

答案 0 :(得分:5)

QueryParser.SetAllowLeadingWildcard Method设为true。 API页面指出“这可能会对大型索引产生非常慢的查询”。

答案 1 :(得分:1)

也许您必须使用WildcardQuery,但

  

...为了防止极度缓慢   WildcardQueries,一个通配符术语   不应该从其中一个开始   通配符...

答案 2 :(得分:0)

您可以使用NGramFilter作为索引分析器来避免使用通配符查询。您必须使用search_analyzer而不是NGramFilter。这样,您甚至可以在不需要通配符的情况下搜索类似于like "%text%"的内容。您只需输入'abc'即可快速搜索包含'abc'的所有条目。