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