Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta Adecuada Para Buscador

Estas en el tema de Consulta Adecuada Para Buscador en el foro de Mysql en Foros del Web. Actualmente tengo una consulta para un buscador interno de una web, el codigo en principio funciona para webs "no muy exigentes", pero cuando ya empiezas ...
  #1 (permalink)  
Antiguo 16/02/2013, 06:33
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Consulta Adecuada Para Buscador

Actualmente tengo una consulta para un buscador interno de una web, el codigo en principio funciona para webs "no muy exigentes", pero cuando ya empiezas a tener visitas considerables notas que los resultados lanzados con esta consulta no son tan exactas.

Consulta si la cadena de busqueda es mas de 1 palabra:
Código MySQL:
Ver original
  1. SELECT id, genero, artista, titulo,
  2.         MATCH (artista, titulo)
  3.         AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
  4.         FROM music_local
  5.         WHERE MATCH (artista, titulo)
  6.         AGAINST ('$frase' IN BOOLEAN MODE)
  7.         ORDER BY coincidencias DESC LIMIT $ini, $max;

Pero si la cadena a buscar es solo una palabra es una simple consulta:
Código MySQL:
Ver original
  1. SELECT id, genero, artista, titulo
  2.             FROM music_local
  3.             WHERE artista LIKE '%$frase%' OR titulo LIKE '%$frase%'
  4.             ORDER BY id DESC LIMIT $ini,$max");

Esta consulta ha veces da errores que no se las causas, son raras veces, ya que solo me entero por los logs, tambien hay veces que con algunas busquedas no devuelve resultados o bien no muestra los mas aproximados.

No se si podrian ayudarme con generar una consulta mas eficiente, ya que me gustaria que los resultados fuesen mas relevantes tomando estas consideraciones:
  • Lo mas solicitado por los usuarios
  • Mas coincidencias en los terminos de busqueda y los resultados.
  • Omitir letras o vocales parecidas.
  • Fechas.
  • Algunos otros puntos que pudieran sugerir.

Sobre el 3 punto (Omitir letras o vocales parecidas) me refiero a que por ejemplo hay usuarios que buscan "David Gueta" (con una sola t), y los real es David Guetta (con 2 Ts) que en los resultados salga lo que el usuario en realidad quiere aunque su busqueda este erronea, con este codigo sale lo que el usuario quiere pero no entre los primeros.

tambien esta el ejemplo de que si en un termino de busqueda esta una palabra con "I", cuando lo original es con "Y".

PLs, conocen algun metodo mas eficaz?

Saludos.

Última edición por gnzsoloyo; 16/02/2013 a las 16:45 Razón: Código de programación no permitido en foros de BBDD.

Etiquetas: buscador, resultados, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:14.