Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/01/2013, 17:53
rodrigow
 
Fecha de Ingreso: septiembre-2008
Mensajes: 66
Antigüedad: 15 años, 7 meses
Puntos: 0
Match... against

Que tal, tengo un problemilla con match against:

Estoy realizando una pagina web de letras de canciones, y quiero poner un buscador, y me gustó la idea de usar la sentencia MATCH AGAINST de mysql para las búsqueda. No me tira ningún error la sentencia, lo que no me tira son las canciones que me debería aparecer. Acá el código:

Sentencia:
Código MySQL:
Ver original
  1. SELECT `cancion`.`titulo`, `artista`.`nombre`, `cancion`.`urlAzLyrics`, `cancion`.`idCancion`,
  2. `artista`.`idArtista`, `artista`.`nombre_sin_espacios`, MATCH(`cancion`.`titulo`,
  3. `cancion`.`nombreArtista`) AGAINST (:nombreCancion) AS `puntuacion`
  4. FROM `cancion` INNER JOIN `artista` ON `cancion`.`idArtista` = `artista`.`idArtista`
  5. WHERE MATCH(`cancion`.`titulo`, `cancion`.`nombreArtista`) AGAINST (:nombreCancion WITH QUERY EXPANSION)
  6. ORDER BY `puntuacion` DESC

Mi tabla CANCIÓN tiene el fulltext, estos es lo que aparece en mysql en el índice fulltext:

Nombre de la clave Tipo Único Empaquetado Columna Cardinalidad
titulo_2 FULLTEXT No No titulo 26536
nombreArtista 159217

Si yo coloco el nombre exacto de la canción seguido del nombre exacto del artista, la búsqueda funciona bárbaro. Ahora si no coloco la búsqueda de esa manera (ya sea si falta una palabra de la cancion, o sacando una letra de alguna palabra, etc) los resultados no son ni cercanos a los que deberían dar.

Alguna idea? Tan errado estoy? Yo se que poniendo un LIKE y lo que se quiere buscar entre "%" funciona, pero no es lo que yo quiero, ya que quiero que el buscador funciones si no se ingresan bien las palabras. Desde ya muchas gracias

Última edición por gnzsoloyo; 19/01/2013 a las 18:04 Razón: SQL sin etiquetar