2010-06-27 84 views
3

我想使用Lucene的模糊搜索,我的理解是基于某种类似Levenshtein的算法。如果我使用相当高的阈值(即,“纽约〜0.9”),将它首先计算编辑距离,然后看它是否比任何0.9对应于为更小,或将其切断的算法,如果它变得显而易见的是该文件与紧密的查询不匹配?我明白levenshtein算法是可能的。是lucene模糊搜索懒?

回答

2

如果显然文档与查询不匹配,它会关闭算法吗?

号你想看到的代码行FuzzyTermEnum 57-59:

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

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

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