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

Match... against

Estas en el tema de Match... against en el foro de Mysql en Foros del Web. 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ó ...
  #1 (permalink)  
Antiguo 19/01/2013, 17:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 66
Antigüedad: 16 años, 2 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

Etiquetas: join, match, resultados, select, sql, tabla
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:46.