4

如果搜索查询包含前导通配符(*?),则QueryParser'Parse函数将引发错误。

Dim q As String = "*abc"
Dim qp As New QueryParser("text", New StandardAnalyzer())
Dim query As Query = qp.Parse(q)

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

4

3 回答 3

5

QueryParser.SetAllowLeadingWildcard 方法设置为 true。API 页面指出“这会在大索引上产生非常慢的查询”。

于 2009-01-22T20:31:28.413 回答
1

也许您必须使用WildcardQuery,但是

...为了防止通配符查询速度极慢,通配符术语不应以通配符之一开头...

于 2009-01-22T07:23:05.370 回答
0

NGramFilter您可以通过使用索引分析器来避免通配符查询。比你必须使用search_analyzer没有NGramFilter. 这样,您like "%text%"甚至不需要通配符就可以进行类似的搜索。您只需输入“abc”,您的索引将很快搜索所有包含“abc”的条目。

于 2016-12-12T09:13:00.140 回答