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