Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/12/2014, 10:31
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: MATCH y AGGAINST

Necesitas leer un poco más de índices FULLTEXT y el uso de MATCH()... AGAINST(), pero es tema off topic de PHP, es para tratar en el foro de MySQL, porque es de Bases de datos.
La respuesta básica es simple: Los índices FULLTEXT trabajan con una longitud de palabra mínima de cinco (5) caracteres, considerados estos independientemente de si está en una frase buscada o no, porque lo que lo que los índices ordenan son palabras y no textos completos.
Si te fijas con cuidado, ninguna de las palabras de la frase que buscas tiene como mínimo cinco letras, y por tanto la base no puede determinar la relevancia de ninguna. Ergo, no son significativas y las descarta. Por eso no devuelve lo que buscas.
En cambio, la segunda prueba contiene "Whatja", con seis (6) letras y esa si puede ser indexada.

¿Se va entendiendo?

Recuerda: No se categorizan frases, sino palabras. Lo que la query busca es la relevancia combinada entre todos los valores de la frase que se han indexado.

¿Por qué no se ponen menos letras como mínimo? Bueno, es muy simple: Con menos serían tantas las coincidencias que perdería sentido el calculo de relevancia, y sería preferible barrer toda la tabla.... Es un problema de optimización de consultas: Cuando las coincidencias superan cierto límite, MySQL (y cualquier DBMS) descartan el índice y leen las tablas completas, que en tu caso es una muy mala idea...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)