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

Uso de MATCH AGAINST, pero con "un trozo de palabra"

Estas en el tema de Uso de MATCH AGAINST, pero con "un trozo de palabra" en el foro de Mysql en Foros del Web. Hola! Llevo un tiempo intentado a ver si consigo hacer funcionar el MATCH AGAINST como yo quiero. Mi problema viene cuando intento aplicarlo para buscar ...
  #1 (permalink)  
Antiguo 08/12/2009, 07:27
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Uso de MATCH AGAINST, pero con "un trozo de palabra"

Hola!

Llevo un tiempo intentado a ver si consigo hacer funcionar el MATCH AGAINST como yo quiero. Mi problema viene cuando intento aplicarlo para buscar en varios campos (3, ver sql) y, claro, para esto hay que usar el MATCH AGAINST.

Un ejemplo:
Cita:
nombre | apellido
jose | cabo
Código mysql:
Ver original
  1. SELECT  id , MATCH(`nombre`,`apellidouno`, `apellidodos`) AGAINST ('%".$str."%') AS puntuacion
  2. FROM usuario_search
  3. WHERE MATCH(`nombre`,`apellidouno`, `apellidodos`) AGAINST ('%".$str."%' IN BOOLEAN MODE)
  4. ORDER  BY puntuacion;

Si $str == "cabo" me devolvería esa tupla/registro. En cambio, si pongo $str == "cab" no me devolvería nada (al menos esa tupla, no). Como veis he usado incluso % para ver si con eso se solucionaba, y ni por esas.

Que puede faltar?

Un saludo y gracias!

Última edición por Bloodsucker; 08/12/2009 a las 07:44
  #2 (permalink)  
Antiguo 08/12/2009, 07:43
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Uso de MATCH AGAINST, pero con "un trozo de palabra"

Mierda... me he pasado toda la puta mañana buscando información y justo después de publicar esto, desesperado... va y me encuentro en la documentación de MYSQL que AGAISNT tiene operadores....

Dios mio!! Es lo que necesitaba: un asterisco *

Quedando así:

Código mysql:
Ver original
  1. SELECT  id , MATCH(`nombre`,`apellidouno`, `apellidodos`) AGAINST ('*".$str."*') AS puntuacion
  2. FROM usuario_search
  3. WHERE MATCH(`nombre`,`apellidouno`, `apellidodos`) AGAINST ('*".$str."*' IN BOOLEAN MODE)
  4. ORDER  BY puntuacion;
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 11:37.