sto usando fuzzy matching nel mio progetto principalmente per trovare errori di ortografia e le diverse grafie con gli stessi nomi. Ho bisogno di capire esattamente come funziona la corrispondenza fuzzy della ricerca elastica e come utilizza i 2 parametri menzionati nel titolo.elasticsearch fuzzy matching max_expansions & min_similarity
Come ho capito la min_similarity è una percentuale in base alla quale la stringa interrogata corrisponde alla stringa nel database. Non sono riuscito a trovare una descrizione esatta di come viene calcolato questo valore.
Il max_expansions come ho capito è la distanza Levenshtein con la quale deve essere eseguita una ricerca. Se questa fosse davvero la distanza di Levenshtein sarebbe stata la soluzione ideale per me. In ogni caso, non funziona Per esempio io ho la parola "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
La documentazione dice qualcosa che in realtà non capisco:
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).
Così possono piacere a chiunque spiegare a me come esattamente questi parametri influenzare i risultati della ricerca.
ah, quindi max_expansions e min_similarity devono essere utilizzati insieme. quindi la limitazione della distanza effettiva viene eseguita da 'min_similarity' e' max_expansions' funziona proprio come la clausola 'LIMIT' di MySQL? Limita solo il numero di risultati potenziali? –
Sì, funziona come la clausola 'LIMIT', non sulla domanda finale che viene eseguito, ma sulla query ad interim che viene utilizzato per trovare l'elenco dei termini per cercare nella query finale – DrTech
Grazie mille :) questo ha aiutato Un sacco :) –