Я использую нечеткое сопоставление в своем проекте в основном для поиска орфографических ошибок и различных написаний одних и тех же имен. Мне нужно точно понять, как работает нечеткое сопоставление эластичного поиска и как в нем используются 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).
Кто угодно может объяснить мне, как именно эти параметры влияют на результаты поиска.