Нечеткий матч Solr Lucene, возвращающий неверные результаты - PullRequest
1 голос
/ 20 сентября 2011

Я пытаюсь протестировать SOLR для моего приложения на предмет совпадения процентов между строками.

На данный момент я настроил solr и определил схему только для соответствия имени и имени, в схеме я использовал тип данных text_general (solr 3.3).

В моем документе / csv я сохранил слово "rushik", а в запросе solr я пытаюсь выполнить поиск с помощью "rushk" - намеренно удалил "i"

В идеале при использовании алгоритма Левенштейна расстояние между двумя строками должно быть равно 1, поэтому процентное совпадение между строками должно быть (1 - distance / maxLen (string1, string2)), что составляет (1 - 1/6) = 0,83 - это означает, что обе строки 83% совпадения.

Но в solr его соответствие пока я не даю rushk ~ 0,79 в запросе - когда я использую ~ 0,80, 0,81 и т. Д., Оно не соответствует документу.

Не уверен, что мой расчет совпадения строк Левенштейна неверен или как именно я могу определить, где проблема.

Любая помощь здесь высоко ценится.

Спасибо, Rushik.

1 Ответ

0 голосов
/ 20 сентября 2011

Расчет нечеткого процента для нечеткого запроса -

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

В вашем случае это будет 1 - 1/5 = 0,8 Так что это кажется действительным.

...