es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ElasticSearch: simbiosis de búsqueda difusa con búsqueda de prefijo.

Quiero crear una búsqueda de texto completo simple con imprecisión y con búsqueda por prefijo. Lo que quiero decir es que tengo una entidad “Tags”, tiene una columna “name”, nada especial. Por ejemplo, tengo los nombres “Animal” y “Animal Portrait”.
Cuando intento esto:

{
“query”: {
“match”: {
“name”: {
“query”: “animal”,
“fuzziness”: “AUTO”
}
}
}
}

todo funciona muy bien. La imprecisión también funciona bien. Pero esta consulta no funciona con los prefijos. Cuando intento buscar “anim” – no obtengo nada. ¿Elastic tiene alguna capacidad para crear una búsqueda de imprecisión con búsqueda por prefijo en una sola consulta? ¿O tal vez hay otras variantes para realizar una búsqueda de texto completo de forma imprecisa y con búsqueda por prefijo? ¿O al menos otra forma (no imprecisa) + prefijos?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, Elasticsearch tiene la capacidad de crear una búsqueda difusa con búsqueda de prefijos en una consulta. Puede utilizar la consulta match_phrase_prefix en lugar de la consulta match para lograr esto. Aquí hay un ejemplo de consulta:

    {
      "query": {
        "match_phrase_prefix": {
          "name": {
            "query": "anim",
            "max_expansions": 10,
            "fuzziness": "AUTO"
          }
        }
      }
    }
    

    En esta consulta, el parámetro max_expansions especifica el número máximo de términos que la consulta de prefijo coincidirá. Este valor puede aumentarse o disminuirse según su caso de uso específico.

    Alternativamente, si desea hacer una búsqueda difusa sin un prefijo, puede usar la consulta fuzzy en lugar de la consulta match. Aquí hay un ejemplo de consulta:

    {
      "query": {
        "fuzzy": {
          "name": {
            "value": "anim",
            "fuzziness": "AUTO"
          }
        }
      }
    }
    

    En esta consulta, el parámetro value especifica el término a buscar y el parámetro fuzziness permite la coincidencia difusa. Esta consulta coincidirá con todos los documentos que contengan términos similares a “anim”, con una distancia de edición máxima determinada por el parámetro de difuminado.

    ¡Espero que esto te ayude! Déjame saber si tienes alguna otra pregunta.

Comments are closed.