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 búsqueda de texto completo de MySQL con MATCH devuelve un orden de resultados extraño.

Necesito hacer una consulta a una tabla utilizando la siguiente consulta:

SELECT cards.name, MATCH(`cards.name`) AGAINST("Swiftfoot Boot") AS relevance
FROM cards
WHERE MATCH(`cards.name`) AGAINST("Swiftfoot Boot")
ORDER BY relevance DESC;

Aquí está mi enlace de db-fiddle con el esquema y los registros.

Si ejecutas la consulta, verás que el primer resultado con la relevancia más alta es “Boot Nipper”, pero espero tener “Swiftfoot Boots” (nota la ‘s’ al final). ¿Alguna idea de por qué se produce este resultado extraño y cómo solucionarlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón del orden extraño de los resultados se debe a la configuración predeterminada de longitud mínima y máxima de palabras en la búsqueda de texto completo de MySQL. Por defecto, la búsqueda de texto completo de MySQL ignora las palabras que tienen tres caracteres o menos de longitud, y también ignora las palabras que aparecen en más del 50% de las filas. Debido a que “Boot Nipper” contiene la palabra “boot” y es el único resultado que coincide con los criterios de búsqueda de texto completo, se clasifica por encima del resultado de coincidencia exacta “Swiftfoot Boots”.

    Para solucionar este problema, puedes ajustar la configuración de longitud mínima y máxima de palabras modificando las variables ft_min_word_len y ft_max_word_len en el archivo de configuración de MySQL o utilizando los siguientes comandos:

    SET @@ft_min_word_len = 1;
    SET @@ft_max_word_len = 15;
    

    Esto reducirá la longitud mínima de las palabras a 1 y aumentará la longitud máxima de las palabras a 15, lo que permitirá que la búsqueda de texto completo incluya palabras más cortas como “boot” y resultados de coincidencia exacta como “Swiftfoot Boots”. Sin embargo, es importante tener en cuenta que cambiar estas configuraciones puede tener un impacto en el rendimiento de las búsquedas de texto completo, por lo que se recomienda probar y evaluar tus consultas antes de realizar cambios en entornos de producción.

Comments are closed.