elasticsearch нечеткое сопоставление max_expansions & min_similarity

Я использую нечеткое сопоставление в своем проекте в основном для поиска орфографических ошибок и различных написаний одних и тех же имен. Мне нужно точно понять, как работает нечеткое сопоставление эластичного поиска и как в нем используются 2 параметра, упомянутые в заголовке.

Насколько я понимаю, min_similarity - это процент, на который запрашиваемая строка соответствует строке в базе данных. Мне не удалось найти точное описание того, как вычисляется это значение.

max_expansions , насколько я понимаю, - это расстояние Левенштейна, на котором должен выполняться поиск. Если бы это действительно была дистанция Левенштейна, это было бы для меня идеальным решением. В любом случае это не работает например, у меня есть слово «Самвел»

queryStr      max_expansions         matches?
samvel        0                      Should not be 0. error (but levenshtein distance   can be 0!)
samvel        1                      Yes
samvvel       1                      Yes
samvvell      1                      Yes (but it shouldn't have)
samvelll      1                      Yes (but it shouldn't have)
saamvelll     1                      No (but for some weird reason it matches with Samvelian)
saamvelll     anything bigger than 1 No

В документации сказано кое-что, чего я на самом деле не понимаю:

Add max_expansions to the fuzzy query allowing to control the maximum number 
of terms to match. Default to unbounded (or bounded by the max clause count in 
boolean query).

Кто угодно может объяснить мне, как именно эти параметры влияют на результаты поиска.

17
задан pnuts 1 November 2015 в 03:03
поделиться