Tag Archive for: buscador

14Jun 2012 4 Comments */?>

Como utilizar AJAX correctamente en WordPress

Categories: Recursos, Tips de wordpress, Wordpress - Tags: ,

Como utilizar AJAX correctamente en WordPress es un tema que no todo el mundo conoce o comprende. Hoy les voy a comentar como se debería hacer por ejemplo si quieren obtener posts mediante AJAX y les voy a crear un ejemplo para que lo entiendan.
Read more

06Mar 2010 2 Comments */?>

Buscador por Relevancia con mysql para tu web

Categories: MySQL, Recursos - Tags:

Ando perdido últimamente, y practicamente no actualizo el blog. Eso es debido a que estoy inmerso en un Proyecto grande, con lanzamiento en varios paises al mismo tiempo y ocupo TODO mi tiempo libre y el que no tengo también en el. Pronto (espero) le voy a decir de que se trata.

Volviendo al tema original del post, les voy a enseñar como hacer un buscador por relevancia con mysql.
La forma tradicional que usamos al buscar con mysql es con el comando LIKE

SELECT * FROM anuncios WHERE titulo LIKE '%perro%' OR descripcion LIKE '%perro%'

Esto nos devuelve todos los anuncios que en el titulo o en la descripcion aparezca la palabra ‘perro’ o ‘caraperro’ o cualquier otra que contenga ‘perro’.
Estos resultado podriamos ordenarlos por ejemplo por la fecha de publicación, por el titulo, etc.

Pero que pasa cuando queremos ordenarlo por RELEVANCIA, osea queremos que el anuncio que hable más de perros aparesca primero y asi consecutivamente. Aqui es donde entra en juego la funcion de mysql FULL-TEXT .

Lo primero que tenemos que hacer antes de hacer un query en convertir nuestros campos en full-text .Para ello simplemente hacemos:

ALTER TABLE anuncios ADD FULLTEXT(titulo, descripcion);

Una ves echo esto , a la hora de hacer la QUERY vamos a usar las funciona de fulltext search MATCH y AGAINST de la siguiente manera:

SELECT * FROM anuncios WHERE MATCH(titulo, descripcion) AGAINST ('perro')

Esta línea utiliza la función MATCH … AGAINST … que encuentra el texto buscado, usando consultas similares a como lo hacen los motores de búsqueda. Además, se calcula internamente una puntuación en función de como aparecen y la cantidad de términos buscados dentro de nuestro titulo y descripcion.

¿Como perfeccionar la busqueda?

SELECT * , MATCH (titulo,descripcion) AGAINST ('perro') AS puntuacion FROM anuncios WHERE MATCH (titulo, descripcion) AGAINST ('perro') ORDER BY puntuacion DESC LIMIT 50

Esta consulta devolverá las primeras 50 consultas ordenadas por la puntuación. Jugando un poco con CSS pueden lograr mostrar estrellitas o barras de progreso segun la puntuación, pero ese ya es otro tema aparte.

Como todo esto tiene alguna limitación que otra. Por ejemplo no toma en cuenta palabras con menos de 4 caracteres.

De todas formas es la forma mas eficiente y rapida de buscar , sobre todo con múltiples palabras.

Un saludo y espero que les haya servido