



(16 opiniones)
Hace tiempo estaba trabajando en una web con una base de datos y me propuse hacer un buscador muy potente, y buscando por la red encontré un sistema de búsqueda muy bueno: el "MATCH AGAINST"
A continuación os explico para quien no lo conozca cómo funciona. Consigue resultados similares a los buscadores profesionales, como Google. Eso sí, requiere una experiencia mínima con php y MySql.
------------------------------------------------------
Partimos suponiendo que tenemos una tabla llamada noticias con los campos titulo (Varchar) y cuerpo (text).
Pues bien, lo primero que hacemos es crear un índice de tipo
Fulltext.
Par hacerlo basta con introducir la sentencia
ALTER TABLE noticias ADD FULLTEXT(titulo, cuerpo);
Si tenemos PhpMyAdmin basta con ir a la tabla deseada y abajo a la izquierda de la pantalla estan definidos los índices. Pulsa en Crear un índice en 2 columnas Continúe
Después ponéis nombre al índice (buscar, por ejmplo), seleccionais tipo de indice:FULLTEXT y seleccionáis los campos titulo y cuerpo, pulsa a grabar y ya está.
A continuación introducimos en nuestro documento php el código necesario para realizar la búsqueda:
|
Código: |
|
SELECT * , MATCH (`titulo`,`cuerpo`) AGAINST ('$busqueda') AS puntuacion |
Traduciendo: Selecciona todos los campos cuya fila coincida en título o cuerpo con la variable $busqueda, y ordena por puntuación en orden descendiente. Muestra solo los 50 resultados.
Puntuacion es un valor que asigna interiormente la base de datos a cada resultado, cuanta más similitud con $busqueda tenga el resultado más puntuación tiene (valor decimal de 0 a 1). Aquí reside lo especial de este sistema: muestra las coincidencias literales y las similares en orden de similitud.
Así si has escrito por ejemplo "Reproductor Sony" en el buscador, aparecería primero uno que podría llamarse "El nuevo reproductor sony" y a continuación uno llamado "Cómo usar un reproductor de Mp3", etc
Pero hay que tene en cuenta que para búsquedas de una sola palabra es más eficaz el trdicional LIKE.
Así podríamos sugerir el siguiente archivo de búsqueda:
|
Código: |
|
<?php |
Ojalá os sirva de mucho!
Espero comentarios!!
__________________________________ Referencias:
>> http://www.programacion.com/php/articulo/adr_buscador/
>> http://www.fabio.com.ar/verpost.php?id_noticia=959
|