lucene模糊搜索懒惰?

时间:2010-06-27 06:28:13

标签: lucene fuzzy-search

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

1 个答案:

答案 0 :(得分:2)

  

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

没有。您要查看的代码是FuzzyTermEnum的第57-59行:

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

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

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