Como hacer una pagina web y ganar dinero
Creada para aprender lo que mas nesesitas porque la calidad es mejor que la cantidad.
Blog

Buscar Registros en Mysql con Full Text

Tags: manual, match, against, mysql, fulltext, like, busqueda, buscar, php, truco
publicado el 2010-08-24   leido 3792 leídas

Busquedas con LIKE


Es muy común, sobre todo en aplicaciones web que funcionen contra una base de datos, realizar una función de búsqueda de texto. Lo primero que se nos puede pasar por la cabeza para implementarlo es utilizar el operador LIKE de SQL. Por ejemplo si tenemos una tabla articulos con una columna titulo y otra columna contenido podríamos hacer lo siguiente:
SELECT * FROM articulos WHERE titulo LIKE '%palabra%' OR contenido LIKE '%palabra%'
Pero esta aproximación tiene inconvenientes además de un rendimiento pésimo. El principal inconveniente es que el motor de bases de datos tiene que hacer un escaneo completo de la base de datos, fila por fila, buscando las subcadenas. La búsqueda de subcadenas ya es de por sí un proceso pobre en rendimiento y el escaneo completo de la tabla hace absolutamente inviable utilizar esta técnica con un conjunto de datos no trivial.

Por otro lado construir la consulta puede resultar bastante tedioso si queremos buscar diferentes términos en diferentes columnas. Y por último otro inconveniente muy importante es que no es sencillo ordenar los resultados por relevancia; esto es, obtener las filas ordenadas según el número de ocurrencias de los términos. Es más relevante un resultado que contenga cinco veces un término que estamos buscando, que un resultado que sólo contenga el término dos veces.

Búsquedas con FULL TEXT


Para realizar búsquedas de texto eficientes MySQL cuenta con un tipo de índice especial: el índice FULLTEXT. La sintaxis para crear un índice FULLTEXT en una tabla existente es la siguiente:
ALTER TABLE articulos ADD FULLTEXT(titulo, contenido); 
Una vez que creamos el índice, MySQL llevará cuenta de los términos incluidos en las columnas indicadas y podremos hacer búsquedas de forma rápida y con los resultados ordenados por relevancia.

Hay que tener en cuenta que las columnas deben ser de tipo CHAR, VARCHAR o TEXT.

Operadores MATCH AGAINST


Para utilizar un índice FULLTEXT usaremos los operadores MATCH ... AGAINST. Por ejemplo:
SELECT * FROM articulos
WHERE MATCH(titulo, contenido) AGAINST ('terminos de busqueda') LIMIT 0,10
Los resultados de la busqueda se ordenaran por relevancia automáticamente

Te gust?

Actualizar y Borrar datos en MySQL

No repetir registros duplicados en Mysql

 
Información
Christian Valencia publicado porPor: Ero-Fierce

Suscribete
Recibe los ultimos articulos en tu email:


Ultimos Artculos
Hacer SEO en el 2016 - 2017
Habilitar sonido al pulsar las teclas Bloq Mayús, Bloq Num y Bloq Des
10 trucos viejos, seo que nunca te dijeron
15 Efectos carrusel como pagina de libro animado con ejemplos
No se pudo generar una instancia de usuario de SQL Server debido a un error (.mdf
Solucion Error 26. No se encontró el servidor o éste no estaba accesible. Sql

Todos los tutoriales

Hacer una web paso a paso Php y MySQL Javascript
Posicionamiento Web SEO Cómo ganar dinero con tu web Herramientas y Programas Web
Maquetación con CSS Hosting y Dominios MySQL y Phpmyadmin
Ajax UML: Analisis y Diseño Programacion Orientada a Objetos
Java
 
Copyright © 2009 - pagina Web 2 - Todos los derechos Reservados