2012-08-30 15 views
10

Necesito una forma para que mi motor de búsqueda maneje pequeños errores tipográficos en las cadenas de búsqueda y aún así devuelva los resultados correctos.Configuración de borrosidad en ElasticSearch

De acuerdo con los documentos Elasticsearch, hay tres valores que son relevantes para la coincidencia aproximada de consultas de texto: borroso, max_expansions, y longitud_prefijo.

Desafortunadamente, no hay muchos detalles disponibles sobre exactamente qué hacen estos parámetros, y qué valores de sonido tienen. Sé que se supone que la borrosidad es un flotante entre 0 y 1.0, y los otros dos son enteros.

¿Alguien puede recomendar valores razonables de "punto de partida" para estos parámetros? Estoy seguro de que tendré que ajustar por prueba y error, pero solo estoy buscando los valores de estadio para manejar correctamente los errores ortográficos y los errores ortográficos.

Respuesta

5

De acuerdo con el documento Fuzzy Query, valores por defecto son 0.5 para min_similarity (que se parece a su opción borrosidad), "sin límites" para max_expansions y 0 para longitud_prefijo.

This answer debería ayudarle a comprender la opción min_similarity. 0.5 parece ser un buen comienzo.

longitud_prefijo y max_expansions afectarán al rendimiento: se puede tratar de desarrollar con los valores por defecto, pero asegurarse de que no se escala (lucene developers were even considering setting a default value of 2 for prefix_length). Recomendaría ejecutar pruebas comparativas para encontrar los valores correctos para su caso específico.

12

Encontré útil cuando uso la consulta difusa para usar tanto una consulta de término como una consulta difusa (con el mismo término) para recuperar los resultados de los errores tipográficos, pero también para asegurar que las instancias de la palabra de búsqueda ingresada aparecían más alto en los resultados.

I.E.

{ 
    "query": { 
     "bool": { 
      "should": [ 
       { 
        "match": { 
         "_all": search_term 
        } 
       }, 
       { 
        "match": { 
         "_all": { 
          "query": search_term, 
          "fuzziness": "1", 
          "prefix_length": 2 
         } 
        } 
       } 
      ] 
     } 
    } 
} 

algunos detalles más enumeran aquí: https://medium.com/@wampum/fuzzy-queries-ae47b66b325c

+0

Esta consulta es muy útil! – cwhsu

Cuestiones relacionadas