我正在使用Lucene搜索引擎,但它似乎只能找到在术语开头发生的匹配。
例如: 搜索“one”将匹配“onematch”或“one day a time”但不匹配“loneranger”。
Lucene doc说它不支持搜索字符串前面的通配符,因此我不确定Lucene是否搜索了期间匹配,或者只能匹配以搜索词开头的文档。
这是我创建索引的方式,如何构建搜索查询或仅限Lucene的问题?
答案 0 :(得分:3)
在Stack Overflow [LUCENE.NET] Leading wildcard throws an error"
上的另一篇文章中找到了一些信息您可以在Query Parser上设置SetAllowLeadingWildcardCharacters属性,以便在搜索过程中允许使用前导通配符。这当然会产生明显的大的性能影响,但允许用户在搜索词中找到匹配项。
答案 1 :(得分:0)
答案 2 :(得分:0)
您的查询应该是
“查询查询=新的WildcardQuery(新术语(”内容“,” * one * “));”
其中contents是您要搜索的字段名称。
“one”应附有星号标记。在*之后我在查询中给出了空格,但不应该有任何空格。没有空格*没有显示这就是为什么我加了星。