Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/01/2011, 07:25
Avatar de SUSMO
SUSMO
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 188
Antigüedad: 16 años
Puntos: 0
Problema con MATCH AGAINST

Hola!!

Estoy utilizando MATCH AGAINST en mi buscador y quiero que me busque tanto si es una palabra, los registros que contengan dicha palabra o una derivada o como si se busca más de una palabra que me encuentre los registros que contengan todas las palabras o derivadas pero no me lo hace.

Esta es la query que tengo:

Código MySQL:
Ver original
  1. SELECT T.*,TT.prtc__col_name AS '__colName__',
  2. TT.malg__code AS '__code__',TT.text AS '__text__'
  3. FROM prtx__articulos AS T
  4. LEFT JOIN prtx_prtc_malg AS TT ON T.ref=TT.prtx__ref
  5. WHERE T.ref LIKE "%simétrica%" OR MATCH(TT.text) AGAINST ('+*ilicona* +*simetrica*' IN BOOLEAN MODE)

Utilizo LIKE para un campo en concreto y para otro el match, mi problema viene con el match. Me he leído la documentación de mysql y por lo que pone, para que tenga en cuenta los registros donde salgan ambas palabras hay que ponerle el + delante.
Si pongo: MATCH(TT.text) AGAINST ('+silicona +simetrica' IN BOOLEAN MODE) me devuelve los registros correctos pero si lo combino con el operador * para que me retorne palabras derivadas sólo me lo hace bien si el * está al final de la palabra: MATCH(TT.text) AGAINST ('+silicona +simetrica*' IN BOOLEAN MODE), me devuelve los registros que tienen silicona y simetricas por ejemplo.
Ahora, si quiero que me retorne tb los registros que tengan "asimetricas" por ejemplo y hago el query que he mostrado al principio no me lo retorna bien.

El problema viene al poner el operador * delante pero no se el motivo. ¿Alguien puede decirme que estoy haciendo mal?

Gracias!!
__________________
Perdida en el mundo del conocimiento