Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2012, 10:37
Avatar de Heent
Heent
 
Fecha de Ingreso: diciembre-2008
Mensajes: 140
Antigüedad: 15 años, 4 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