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.

Consulta de coincidencia de frase y prefijo de Elatisearch, con coincidencia exacta del prefijo.

Tengo una consulta de combinación de prefijo de frase que funciona como se espera. Pero cuando los usuarios agregan caracteres especiales al final de la palabra clave, ES ignora estos caracteres y sigue devolviendo el resultado.
consulta{
match_phrase_prefix:{
contenido: {
consulta: términoDeBúsqueda
}
}
}

Estoy utilizando esta consulta para buscar un prefijo. Si ingreso un término como overflow@#@#!!, ES me devuelve todos los resultados con la palabra overflow en él. Pero en su lugar, quiero hacer una coincidencia exacta de prefijo, donde los caracteres especiales no se ignoran. El término de búsqueda también podría ser de varias palabras como stack overflow search. ¿Cómo podría hacer que ES busque una coincidencia de prefijo sin ignorar los caracteres especiales?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede lograr una coincidencia exacta de prefijo sin ignorar caracteres especiales utilizando la siguiente consulta:

    {
        "query": {
            "regexp": {
                "contenido": {
                    "valor": "^terminoBuscado.*"
                }
            }
        }
    }
    

    Esta consulta utiliza una expresión regular para hacer coincidir el prefijo exacto del término de búsqueda. El carácter ^ al principio de la expresión regular asegura que el término de búsqueda comience al principio del campo. El .* al final de la expresión regular coincide con cualquier otro carácter que venga después del término de búsqueda.

    Tenga en cuenta que esta consulta puede ser más lenta que una consulta match_phrase_prefix, ya que necesita escanear todo el índice para encontrar coincidencias. Además, puede que no funcione bien con conjuntos de datos grandes, ya que puede ser intensivo en recursos.

    Alternativamente, puede intentar escapar los caracteres especiales en el término de búsqueda utilizando el carácter de barra invertida (\). Por ejemplo, puede buscar desbordamiento@\#\@\#!! en lugar de desbordamiento@#@#!!. Esto puede funcionar mejor con una consulta match_phrase_prefix, ya que no requiere escanear todo el índice.

Comments are closed.