Estoy usando coincidencias difusas en mi proyecto principalmente para encontrar errores ortográficos y diferentes deletreos con los mismos nombres. Necesito entender exactamente cómo funciona la coincidencia aproximada de búsqueda elástica y cómo usa los 2 parámetros mencionados en el título.elasticsearch fuzzy matching max_expansions & min_similarity
Según tengo entendido, min_similarity es un porcentaje por el cual la cadena consultada coincide con la cadena en la base de datos. No pude encontrar una descripción exacta de cómo se calcula este valor.
La max_expansions según tengo entendido es la distancia de Levenshtein por la cual se debe ejecutar una búsqueda. Si esto realmente fuera la distancia de Levenshtein, habría sido la solución ideal para mí. De todos modos, no está funcionando Por ejemplo, tengo la palabra "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 documentación dice algo que realmente no entiendo:
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).
Así pueden agradar a alguien que me explique cómo exactamente estos parámetros afectar los resultados de búsqueda.
ah, entonces max_expansions y min_similarity deben usarse juntas. entonces la limitación de distancia real es hecha por 'min_similarity' y' max_expansions' funciona igual que la cláusula 'LIMIT' de MySQL. ¿Simplemente limita el número de resultados potenciales? –
sí, funciona como la cláusula 'LIMIT', no en la consulta final que se ejecuta, sino en la consulta provisional que se usa para buscar la lista de términos para buscar en la consulta final – DrTech
Muchas gracias :) esto ayudó mucho :) –