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

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola luisdelbar:

A últimas fechas he venido observando que las preguntas con respecto a búsquedas de texto se han multiplicado
Bueno, estoy aquí de vuelta, parece ser que esto funciona como quería sobre todo con la sugerencia que me diste del ORDER BY que hace lo de dar preferencia primero a los resultados que contengan todas las palabras y ya después pone los que contengan cualquiera de los términos.

Ahora ya sólo un detalle, mi única duda ahora es: ¿como uno lo mismo para 3 tablas?, mi sentencia ya quedó así, y funciona:

501_FIRST_TABLE : es mi tabla
T1,T2 : campos a buscar, contienen casi la misma información, pero T2 tiene info adicional, aunque generalmente contiene lo mismo que T1 pero no siempre
$term : esto es lo que se escribe en la casilla de búsqueda, se trata de un buscador

SELECT * FROM 501_FIRST_TABLE WHERE MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE)
ORDER BY MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE) DESC

y así funciona muy bien, pero quiero unir las tablas:
502_FIRST_TABLE y 503_FIRST_TABLE

Las tablas son idénticas, podría incluso tener los mismos registros en una tabla, la razón por la cual están en 3 es por el peso, pero son iguales.

No puedo hacer lo siguiente, debido a que ya tengo bien adaptado el "paginator" para paginar, y al parecer si hago esto da problema con el paginator, y no quiero adaptar otro método de paginación, para hacerlo funcionar fue un vía crucis, me costó mucho trabajo.

SELECT * FROM 501_FIRST_TABLE,502_FIRST_TABLE,503_FIRST_TABLE WHERE MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE)
ORDER BY MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE) DESC

Aunque funcionara no puedo hacerlo, por el problema con paginator. Pero esta es la forma en que anteriormente estaba uniendo tablas sin que el paginator diera problema:

SELECT * FROM 449_FIRST_TABLE WHERE MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE) UNION
SELECT * FROM 501_FIRST_TABLE WHERE MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE) UNION
SELECT * FROM 502_FIRST_TABLE WHERE MATCH (T1,T2) AGAINST ('$term' IN BOOLEAN MODE)

Todo esto está bien ya con el BOOLEAN MODE como me dijiste, y funciona muy bien, pero para que sea perfecto necesito el ORDER BY ¿Cómo lo pongo?

Muchísimas Gracias!!!