Używam dopasowania rozmytego w moim projekcie, głównie w celu znalezienia błędów pisowni i różnych pisowni tych samych nazw. Muszę dokładnie zrozumieć, w jaki sposób sprawdza się rozmyte dopasowanie elastycznego wyszukiwania i jak korzysta z 2 parametrów wymienionych w tytule.elasticsearch fuzzy matching max_expansions & min_similarity
Jak rozumiem, min_similarity to procent, o jaki zapytanie odpowiada ciągowi w bazie danych. Nie mogłem znaleźć dokładnego opisu, w jaki sposób obliczana jest ta wartość.
Zgodnie z moją wiedzą jest to odległość Levenshtein, według której należy wykonać wyszukiwanie. Gdyby to była odległość Levenshteina, byłoby to dla mnie idealne rozwiązanie. W każdym razie, to nie działa na przykład mam słowo „Samvel”
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
Dokumentacja mówi coś ja naprawdę nie rozumiem:
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).
Więc można zadowolić ktoś mi wyjaśnić, jak dokładnie te parametry wpływa na wyniki wyszukiwania.
ah, następnie max_expansions i min_similarity powinny być używane razem. więc rzeczywiste ograniczenie odległości jest wykonywane przez 'min_similarity', a' max_expansions' działa tak samo jak klauzula "LIMIT" MySQL? Po prostu ogranicza liczbę potencjalnych wyników? –
tak, działa podobnie do klauzuli "LIMIT", a nie do ostatecznego zapytania, które jest uruchamiane, ale do tymczasowego zapytania, które jest używane do znajdowania listy terminów do wyszukania w ostatecznym zapytaniu – DrTech
Wielkie dzięki :) Pomogło to dużo :) –