【问题标题】:is lucene fuzzy search lazy?lucene 模糊搜索是懒惰的吗?
【发布时间】:2010-06-27 06:28:12
【问题描述】:

我想使用 Lucene 的模糊搜索,据我了解,它基于某种类似于 Levenshtein 的算法。如果我使用相当高的阈值(即“new york~0.9”),它是否会首先计算编辑距离,然后查看它是否小于 0.9 对应的任何值,或者如果很明显它会切断算法文档与查询不匹配?我知道使用 levenshtein 算法可以做到这一点。

【问题讨论】:

    标签: lucene fuzzy-search


    【解决方案1】:

    如果文档明显与查询不匹配,它会切断算法吗?

    没有。你想看的代码是 FuzzyTermEnum 的第 57-59 行:

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

    你可以看到它计算距离,如果小于阈值则返回。

    你为什么要关心这个?除非您的术语有数千个字符长,否则计算完整的编辑距离会非常快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2012-06-08
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      相关资源
      最近更新 更多