3

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

4

1 回答 1

2

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

不,你想看的代码是 FuzzyTermEnum 的第 57-59 行:

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

您可以看到它计算距离,然后在小于阈值时返回。

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

于 2010-11-28T19:30:07.310 回答