2012-09-16 9 views
9

Estoy especificando un fuzzy_prefix_length en la cadena de consulta, pero una búsqueda de "tes" no arranca publicaciones tituladas "prueba" ... ¿Alguna idea de lo que estoy haciendo mal?Borrosidad de búsqueda elástica en query_string

esta es mi configuración de cadena de consulta

"query" : { 
    "query_string" : { 
    "query" : the-query-string-goes-here, 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 

Respuesta

13

Usted es, probablemente, la falta de operador "fuzzy" al final de la consulta. Prueba esto:

"query" : { 
    "query_string" : { 
    "query" : "tes~", 
    "default_operator" : "AND", 
    "fuzzy_prefix_length" : 3, 
    } 
} 
+0

Ahh Veo ... un par de preguntas si no te importa ... He oído que las consultas con comodines son más lentas que la media y no se escalan. ¿Alguna preocupación similar con este operador? Además, en este momento, una búsqueda de "tes" mostrará una publicación titulada "prueba", pero una búsqueda de "est" no ... ¿hay alguna manera de hacerlo hacer esto ... o estoy exagerando? – concept47

+1

"est" no devuelve ningún resultado porque especificó fuzzy_prefix_length distinto de cero. El fuzzy_prefix_length establece el número de caracteres al principio del término que tienen que coincidir. Zorro fuzzy_prefix_length requeriría elasticsearch para confundir todos los términos en el diccionario con el término en su consulta. Al especificar un fuzzy_prefix_length distinto de cero, puede limitar significativamente el número de términos para verificar y mejorar el rendimiento. Como mencionaste, es algo similar a las consultas de comodín, excepto que el algoritmo de coincidencia de términos es más sofisticado en el caso de un operador difuso. – imotov

Cuestiones relacionadas