BUSCAR UN TEXTO COMPLETO DENTRO DE VARIAS COLUMNAS DE NUESTRA DB EN MYSQL

A menudo queremos buscar un determinado texto en varias columnas dentro de nuestra base de datos, un sistema sería ir añadiendo condiciones where para cada columna, pero esto puede resultarnos complicado luego valorar que coincidencia de resultados tenemos y que resultado tiene mayor o menor relevancia.

En fin, en MYSQL existe una función que nos facilitará la vida para construir este tipo de casos, muy útil para nuestros filtros de búsqueda.

Una forma de utilizar la función es MATCH, es la siguiente:

SELECT [columna1],[columna2], .. from [tabla]
WHERE MATCH ([columna_a_buscar1],[columna_a_buscar2],[columna_a_buscar3]) AGAINST (‘*texto_a_buscar*’ IN BOOLEAN MODE)

El modificador IN BOOLEAN MODE lo que nos realiza es una coincidencia de texto completa, por lo que si no queremos que sea así no deberíamos introducirla en nuestro filtro.

Si a demás, lo que buscamos es ordenar nuestros resultados, podemos añadir el mismo filtro de nuestra condición (WHERE) dentro de la sentencia ORDER BY, de forma que nos ordene los resultados de mayor a menor coincidencia.

SELECT [columna1],[columna2], .. from [tabla]
WHERE MATCH ([columna_a_buscar1],[columna_a_buscar2],[columna_a_buscar3]) AGAINST (‘*texto_a_buscar*’)
ORDER BY MATCH ([columna_a_buscar1],[columna_a_buscar2],[columna_a_buscar3]) AGAINST (‘*texto_a_buscar*’ IN BOOLEAN MODE) DESC