如何在Lucene中搜索拼音错误的单词?

时间:2014-05-31 06:29:44

标签: java lucene

以下是Lucene搜索的场景,

在Lucene文档中包含两个具有值的字段" Red"和" Red Feather"

我想搜索 Red Feathar

它正在返回" Red"作为第一个结果。但我想要" Red Feather"作为第一个结果

我尝试使用模糊查询词匹配。但它使我的申请变慢。

那么有没有其他方法可以在Lucene中搜索拼音错误的单词?

谢谢,

1 个答案:

答案 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