【问题标题】:Solr Lucene fuzzy match returning wrong resultsSolr Lucene 模糊匹配返回错误结果
【发布时间】:2011-09-20 14:48:27
【问题描述】:

我正在尝试为我的应用程序测试 SOLR 以查找字符串之间的百分比匹配。

我现在只为名字匹配配置了 solr 并定义了模式,我在模式中使用了 text_general 数据类型(solr 3.3)。

在我的文档/csv 中,我保留了“rushik”一词,在 solr 查询中,我尝试使用“rushk”进行搜索 - 故意删除了“i”

理想情况下,使用 levenshtein 算法,上述两个字符串之间的距离为 1,因此字符串之间的百分比匹配应该是 (1 - distance/maxLen(string1, string2)),即 (1 - 1/6) = 0.83 - 这意味着两个字符串83% 匹配。

但在 solr 中,它的匹配直到我在查询中给出 rushk~0.79 - 当我使用 ~0.80、0.81 等时,它与文档不匹配。

不确定我对 levenshtein 字符串匹配的计算是否不正确,或者我如何准确地确定问题出在哪里。

非常感谢这里的任何帮助。

谢谢, 拉什克。

【问题讨论】:

    标签: lucene solr levenshtein-distance


    【解决方案1】:

    模糊查询的模糊百分比计算为 -

    distance = 1 - ((double)dist / (double)Math.min(textlen, targetlen));
    return (distance > FUZZY_THRESHOLD);
    

    在您的情况下,它将是 1 - 1/5 = 0.8 所以这似乎是有效的。

    【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2012-04-30
    • 2011-08-17
    • 2018-10-18
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2013-06-28
    • 2018-01-16
    相关资源
    最近更新 更多