【问题标题】:How to search phonetic misspelled word in Lucene?如何在 Lucene 中搜索拼音拼写错误的单词?
【发布时间】:2014-05-31 06:29:44
【问题描述】:

这是 Lucene 搜索的场景,

在 Lucene 文档中包含 两个字段,其值为“Red”和“Red Feather”

我想搜索红羽

它返回“红色”作为第一个结果。但我希望 “Red Feather”作为第一个结果

我尝试使用模糊查询词匹配。但它让我的应用程序变慢了。

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

谢谢,

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    Lucene 中有Phonetic matching methods,但我认为FuzzyQuery 是这种情况下的正确选择。有几种方法可以提高其性能:

    • 您使用的是 Lucene 4.0 或更高版本吗? FuzzyQuery 的表现获得了huge boost in 4.0

    • 设置prefixLength。这会强制前 x 个字符直接匹配,从而显着缩小匹配项的搜索范围,并更好地利用 lucene 的索引方法,从而显着提高性能。

    • 如果您使用的是 3.6 或更早版本(并且无法切换到更新的版本),请确保您设置了 minimumSimilarity

    • 如果您使用的是 4.0 或更高版本,您可以尝试将 maxEdits 设置为 1

    【讨论】:

    • 非常感谢@femtoRgn!我按照您的步骤进行操作,这对我提高 Lucene 性能有很大帮助..
    猜你喜欢
    • 2021-10-05
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2015-05-06
    • 2010-10-16
    • 2018-11-25
    相关资源
    最近更新 更多