mysql-full-text-search

Es habitual que queremos realizar búsquedas en nuestra base de datos de una cadena en concreto. Por ejemplo, si tenemos una web sobre coches, es posible que queramos utilizar el buscador de la página para saber qué contenido es de la marca Seat. Para ello, podemos usar tres técnicas en MySQL.

1.- Coincidencia exacta

En el caso de querer todas las coincidencias exactas de cadenas, tan sencillo como usar el operando =

2.- Like

Usaremos LIKE (ver referencia en MySQL Dev) cuando queramos que la búsqueda sea similar a un patrón que nosotros indiquemos.

Nos devolvera todas las cadenas que comiencen por SEAT como SEAT PANDA o SEAT IBIZA. Cuidado ya que si hay algo delante, aunque sea un carácter en blanco, no coincidirá con el patrón que hemos indicado (la cadena “SEAT” seguido de lo que sea). Para solucionarlo, podemos usar

Que nos devolverá cualquier cadena que contenga la palabra SEAT, ya sea SEAT PANDA o MARCA SEAT.

Si quisiéramos que nos devolviera las marcas cuyas 3 y 4 letras sean AT (como SEAT y FIAT) podemos usar

El principal problema que tiene usar LIKE con patrones es la gran cantidad de recursos que consume ya que al no haber un índice que nos ayude con la búsqueda , hace que sea bastante lenta. Es por eso que para grandes cantidades de datos se recomienda usar la tercera opción que aquí describimos.

3.- Full Text Search

Las búsquedas Full Text se crearon para solucionar el anterior problema con los LIKE. Dentro de la búsqueda Full Text Search tenemos la posibilidad de usar la de Lenguaje Natural o la Booleana. Las búsquedas de Lenguaje Natural se realizan sobre una Colección de Texto que estará formada por una o más columnas de texto que especificaremos cuando creemos el índice FullText.

 

Las búsquedas, las realizaremos usando la función MATCH(columnas) AGAINST (cadena).

Las búsquedas booleanas nos permiten que indiquemos patrones que queremos que aparezcan y patrones que queremos que NO aparezcan.