Está usted en Indice > Construcción > Lenguajes > MySQL > Lecciones y Paso a Paso > Busquedas con Full-text y MySQL
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Busquedas con Full-text y MySQL

MySQL posee la funcionalidad Full-text, que permite búsquedas más racionales dentro de una base de datos. Este tutorial te enseñará qué necesitas, qué tienes que modificar en tu Base de Datos y cómo ejecutar la consulta para poder crear en tu web un sencillo motor de búsqueda (y mucho más eficaz que usando LIKE).

Una (casi) desconocida de las funcionalidades de MySQL, a partir de su versión 3.23.23 es "Full-text" , que permite realizar búsquedas dentro de un campo a partir de una cadena de caracteres.
Habitualmente, un método de búsqueda sencillo dentro de una tabla pasaba por utilizar LIKE:

SELECT texto FROM articulos WHERE texto LIKE '%$palabra%'

El problema aparecía cuando en vez de una sola palabra eran varias las que había que buscar: Si "$palabra" equivalía, por ejemplo, a "dreamweaver ultradev", una frase dentro de los textos almacenados que fuera "dreamweaver y ultradev" no devolvería resultados (por culpa de la "y").

Para esto sirve Full-text: MySQL se encargará de comparar la cadena que le pasemos con los contenidos de la BD y devolver resultados aproximados. Suena bonito, pero tiene algunas limitaciones (justificadas):

No devolverá resultados si la palabra aparece demasiadas veces en los registros: si todos nuestros registros (o más del 50%, para ser más exactos) tienen la palabra "dreamweaver", no devolverá resultados.¿Por qué?. esta función está pensada para tablas con muchos registros y no tendría sentido devolverlos todos: ¿es interesante devolver 5.000 resultados a una búsqueda?.
Por la razón anterior, la consulta omitirá palabras demasiado comunes, como preposiciones y artículos (de, con, a, el)...

¿Qué necesitamos para utilizar Full-text?


Lo primero, que MySQL sea de una versión superior a la 3.23.23.

Que el campo de la tabla en que vamos a buscar sea del tipo TEXT

Con estos 2 requisitos, lo primero que necesitaremos será indicarle a MySQL que queremos modificar el campo para que acepte esta función. En nuestro ejemplo vamos a utilizar una sencilla tabla, llamada "artículos", que tiene estos campos.


id_articulo

titulo

texto

Podemos utilizar cualquiera de los IDE's disponibles para MySQL (MySQLFront ó PHPMyAdmin son válidos), para pasarle a la BD esta sentencia SQL:
ALTER TABLE articulos ADD FULLTEXT(texto);

Si lo hemos realizado correctamente, MySQL nos devolverá el OK.

Con la tabla preparada, llega la hora de aprender cómo se pasan las consultas, ya que no basta con SELECT: deberemos utilizar además MATCH(campo) AGAINST(cadena). En nuestro ejemplo:

SELECT titulo,texto FROM articulos WHERE MATCH(texto) AGAINST ('$palabras')

Traducido: seleccionar los campos "titulo" y "texto" de "artículos", filtrando donde haya coincidencias en el campo "texto" para la variable "$palabras".

¿No parece difícil, no?, pues aún hay más: MySQL nos puede devolver un número que indica el valor de coincidencia en cada registro (llamado habitualmente "SCORE" en muchos sitios). No es un valor en porcentaje, y puede varíar desde casi 0 (cero) hasta más de 4 según los cálculos realizados por MySQL). Es útil para ordenar los resultados por orden de coincidencia. Utilizarlo es un poco más complicado, pero no mucho: sólo tendremos que utilizar 2 veces MATCH... AGAINST. La consulta sería:


SELECT titulo,texto, MATCH(texto) AGAINST('$palabras') AS coincidencia
FROM articulos
WHERE MATCH(texto) AGAINST ('$palabras')
ORDER BY coincidencia DESC


Autor: tutorialesdelweb.com
http://www.tutorialesdelweb.com/tutorial109-busquedas-con-full-text-y-mysql.html#

Usuarios que han visto este tema también han visto...

- ¿Que son los Triggers y como usarlos en MySQL 5.0?
- Recuperar el Servidor MySQL
- Múltiples instalaciones de MySQL en tu PC
- Compilardo MySQL para Linux
- Gestión de usuarios con MySQL


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 05-07-2008 a las 06:40:11