Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/02/2012, 22:37
luisdelbar
 
Fecha de Ingreso: marzo-2009
Mensajes: 61
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Encontrar con "LIKE" sin importar orden de las palabras

Bueno, logré solucionar todo con este script que armé con un poco de aquí y un poco de allá, no es perfecto, tienes sus detalles, como que no da mucha importancia a palabras con 3 caracteres o menos y cosas así... Pero funciona bastante bien, encuentra sin importar el orden de las palabras y da preferencia primero a los resultados que contienen todas las palabras buscadas (en la mayoría de los casos)

SELECT * , MATCH(T1, T2) AGAINST ('$term') as Score

FROM 449
WHERE MATCH(T1, T2) AGAINST ('$term')



UNION



SELECT * , MATCH(T1, T2) AGAINST ('$term') as Score

FROM 501
WHERE MATCH(T1, T2) AGAINST ('$term')

UNION



SELECT * , MATCH(T1, T2) AGAINST ('$term') as Score

FROM 502
WHERE MATCH(T1, T2) AGAINST ('$term')



ORDER BY Score DESC



En mi caso uní 3 tablas que son idénticas pero que tuve que separar por cuestiones de peso, T1 y T2 son las columnas en las que se buscará, no olvidar que deben tener sus índices FULLTEXT, y bueno 501, 502, 449 las tablas a buscar...

Y bueno, como en mi caso se trata de un buscador, $term equivale a lo que se escribe en la casilla de búsqueda...

Espero que a alguien le sirva y construya cosas buenas... el karma es el karma

luisdelbar • • •