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

Problema con buscador

Estas en el tema de Problema con buscador en el foro de Mysql en Foros del Web. Hola compañeros tengo un problema con un buscador que estoy implementando. Tengo un input donde el usuario introduce lo que va a buscar ( $busqueda). ...
  #1 (permalink)  
Antiguo 02/05/2012, 10:37
Avatar de Heent  
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 6
Pregunta Problema con buscador

Hola compañeros tengo un problema con un buscador que estoy implementando. Tengo un input donde el usuario introduce lo que va a buscar ( $busqueda).

Si hay solo una palabra a buscar utilizo la búsqueda con LIKE pero me queda muy largo (tengo muchos campos de texto):

Código MySQL:
Ver original
  1. nombre LIKE '%$busqueda%'
  2. OR apellido1 LIKE '%$busqueda%'
  3. OR apellido2 LIKE '%$busqueda%'  
  4. OR descripcion LIKE '%$busqueda%'  
  5. OR tag LIKE '%$busqueda%'  
  6. OR pais LIKE '%$busqueda%'  
  7. OR pueblo LIKE '%$busqueda%'  
  8. OR intereses LIKE '%$busqueda%'  
  9. OR dni LIKE '%$busqueda%'
  10. OR texto10 LIKE '%$busqueda%'  
  11. OR texto11 LIKE '%$busqueda%' ;

Si hay más de una palabra uso MATCH AGAINST pero no funciona muy bien que digamos. Lo tengo implementado así:

Código MySQL:
Ver original
  1. SELECT *, MATCH (nombre, apellido1, apellido2,
  2. descripcion, tag, pais, pueblo, intereses, dni, texto10, texto11)
  3. AGAINST ('$busqueda') AS puntuacion FROM user WHERE MATCH (nombre, apellido1,
  4. apellido2, descripcion, tag, pais, pueblo, intereses, dni, texto10, texto11)
  5.  AGAINST ('$busqueda') ORDER BY puntuacio DESC;


Bueno los problemas en el caso uno viene cuando tengo alguna búsqueda con comita simple por ejemplo: "l'ou". Lo que hago es escapar con \' pero no me lo encuentra.

En el segundo método tengo problemas cuando dentro de las palabras a buscar hay algún número por ejemplo: "user 2" que no encuentra nada ni si hay algún user por allí.
Aquí también tengo el problema que solo me detecta algunas palabras y dependiendo de la colocación. Por ejemplo dentro de texto10 si pongo "txt es" y lo busco no lo encontrará pero si pongo "no encuentras" si -.-


No se es un gran problema en general porqué no encuentro ningún error en el código :S


¡Un saludo y muchas gracias!

Última edición por Heent; 02/05/2012 a las 10:39 Razón: estetica
  #2 (permalink)  
Antiguo 02/05/2012, 11:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con buscador

A mi entender, el problema que tienes es que las palabras que pretendes buscar son demasiado cortas para usar búsquedas con FULLEXT.
Ese tipo de búsquedas requieren una longitud mínima de 5 caracteres, habitualmente, porque cuando reduces esa longitud, la cantidad de coincidencias se dispara.
Imagínate nomás, que trataras de encontrar "del". ¿Cuántas coincidencias habría? Por eso es que el sistema requiere buscar un texto mínimo.

Por otro lado, es posible que por allí se te escape un detalle del MATCH(...) AGAINST(...).
Cuando haces una búsqueda por relevancia, mientras menos veces aparezca un término en los campos leídos, mayor es su relevancia.

Es decir, que si una palabra aparece muchas veces, en realidad es posible que la consulta no devuelva datos, porque se vuelve irrelevante en la búsqueda. No puede discriminar mucho.
¿Eso lo tienes claro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/05/2012, 11:22
Avatar de Heent  
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: Problema con buscador

Mmm esto de los 5 caracteres no lo sabía, entonces si quiero buscar cosas con menos de 5 caracteres uso el primer método con LIKE, no?
  #4 (permalink)  
Antiguo 02/05/2012, 11:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con buscador

Eso, o expresiones regulares, con REGEXP(), usando patrones.
Te recomiendo que leas esos temas en el manual de referencia, porque son bastante largos y y tienen buenos ejemplos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/05/2012, 11:32
Avatar de Heent  
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: Problema con buscador

Vale, muchas gracias!!! :)

Etiquetas: match, buscadores
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 22:21.