以下是Lucene搜索的场景,
在Lucene文档中包含两个具有值的字段" Red"和" Red Feather" 。
我想搜索 Red Feathar 。
它正在返回" Red"作为第一个结果。但我想要" Red Feather"作为第一个结果。
我尝试使用模糊查询词匹配。但它使我的申请变慢。
那么有没有其他方法可以在Lucene中搜索拼音错误的单词?
谢谢,
答案 0 :(得分:0)
Lucene中有Phonetic matching methods,但我认为FuzzyQuery
是这种情况的正确选择。有几种方法可以提高它的性能:
您使用的是Lucene 4.0或更高版本吗? FuzzyQuery
表现得到huge boost in 4.0。
设置prefixLength。这会强制前x个字符直接匹配,从而显着缩小搜索匹配项的范围,并更好地利用lucene的索引方法,从而显着提高性能。
如果您使用的是3.6或更早版本(并且无法切换到更新版本),请务必设置minimumSimilarity
如果您使用的是4.0或更高版本,可以尝试将maxEdits
设置为1