【发布时间】:2014-05-31 06:29:44
【问题描述】:
这是 Lucene 搜索的场景,
在 Lucene 文档中包含 两个字段,其值为“Red”和“Red Feather”。
我想搜索红羽。
它返回“红色”作为第一个结果。但我希望 “Red Feather”作为第一个结果。
我尝试使用模糊查询词匹配。但它让我的应用程序变慢了。
那么有没有其他方法可以在 Lucene 中搜索拼音拼写错误的单词?
谢谢,
【问题讨论】:
这是 Lucene 搜索的场景,
在 Lucene 文档中包含 两个字段,其值为“Red”和“Red Feather”。
我想搜索红羽。
它返回“红色”作为第一个结果。但我希望 “Red Feather”作为第一个结果。
我尝试使用模糊查询词匹配。但它让我的应用程序变慢了。
那么有没有其他方法可以在 Lucene 中搜索拼音拼写错误的单词?
谢谢,
【问题讨论】:
Lucene 中有Phonetic matching methods,但我认为FuzzyQuery 是这种情况下的正确选择。有几种方法可以提高其性能:
您使用的是 Lucene 4.0 或更高版本吗? FuzzyQuery 的表现获得了huge boost in 4.0。
设置prefixLength。这会强制前 x 个字符直接匹配,从而显着缩小匹配项的搜索范围,并更好地利用 lucene 的索引方法,从而显着提高性能。
如果您使用的是 3.6 或更早版本(并且无法切换到更新的版本),请确保您设置了 minimumSimilarity
如果您使用的是 4.0 或更高版本,您可以尝试将 maxEdits 设置为 1
【讨论】: