нечеткий поиск lucene ленив? - PullRequest
3 голосов
/ 27 июня 2010

Я хотел бы использовать нечеткий поиск Люсена, который, как я понимаю, основан на каком-то левенштейновском алгоритме.Если я использую довольно высокий порог (т. Е. «Нью-Йорк ~ 0,9»), он сначала вычислит расстояние редактирования, а затем посмотрит, меньше ли оно, чем соответствует 0,9, или отключит алгоритм, если станет очевидно,документ не соответствует запросу, который близко?Я понимаю, что это возможно с помощью алгоритма Левенштейна.

1 Ответ

2 голосов
/ 28 ноября 2010

будет ли он отключать алгоритм, если станет очевидно, что документ не соответствует запросу так близко?

Нет.Код, который вы хотите видеть, это строки 57-59 FuzzyTermEnum:

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

Вы можете видеть, что он вычисляет расстояние, а затем возвращает значение, если оно меньше порога.Вы заботитесь об этом, хотя?Если ваши термины не содержат тысячи символов, вычисление полного расстояния редактирования будет очень быстрым.

...