2012-05-09 12 views
6

Tengo una tabla places(name vachar(50), address text, description text) engine = MYISAM y pocos registros.MySQL: Algo no está bien con la búsqueda de texto completo - Devolviendo NO results

He estado tratando de poner un ejemplo en here! Y buscando el 'problema de texto completo', pero no tengo claro sobre la búsqueda de texto completo.

En primer lugar, añadir un índice de texto completo por:

ALTER TABLE places ADD FULLTEXT(name, address, description); 

y tratar de MySQL:

SELECT * FROM places WHERE MATCH(name,address,description) AGAINST('my search key'); 

tengo probar algunos 'mi clave de búsqueda' que el contenido es en muchos campos, pero hay algunos casos que obtuve:

  • ahora fila seleccionada.

  • si intento add option "IN BOOLEAN MODE" in AGAINST(), resultado obtenido con la puntuación = 1, no tiene sentido cuando lo ordeno.

  • simplemente muestra el resultado cuando la "clave de búsqueda" tiene contenido en el campo (nombre).

Traté de una manera mucho, pero no me acuerdo todos los casos,

Cualquier respuesta podría ayudar!

¡Gracias de antemano!

+0

¿Cuál es tu palabra clave? http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html –

+0

gracias a Marcus, mi problema en la clave de búsqueda con stop_word y por defecto ft_min_word_len. – dorign

+0

Cool.Actualicé el título de su pregunta para aclararla y agregué una respuesta. –

Respuesta

5

Asegúrese de que su palabra clave no sea stop word. Para disable or modify the stop word list, necesitará acceso para establecer las variables del sistema y reiniciar el servidor.

Además, asegúrese de que su palabra clave coincida con minimum full text word length. La longitud mínima predeterminada es 4.

Finalmente, asegúrese de que la palabra aparezca en menos del 50% de los registros. MySQL no devolverá resultados donde la palabra aparezca en 50% o más de los registros.

+0

O.M.G. !!! He estado probando durante una hora en una mesa de 2 registros. @ * Y $ #%^$%! +9001 - y no, no veo la palabra 'percent''% 'en la documentación: https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html – ebyrob

1

Además de Marcus respuesta:

cuando empecé con índices FULLTEXT en MySQL, he tenido problemas con los resultados vacíos - que estaba evitando palabras vacías y también estaba usando los tiempo suficiente, así que estaba cabeza- rascarse un poco hasta que encontré esta enterrado en el MySQL documentation:

el umbral del 50% tiene una implicación significativa la primera vez que intenta búsqueda de texto completo para ver cómo funciona: Si crea una tabla e insertar sólo una o dos filas de texto en él, cada palabra en el texto aparece en al menos el 50% de las filas. Como resultado, ninguna búsqueda arroja ningún resultado. Asegúrese de insertar al menos tres filas, y preferiblemente muchas más. Los usuarios que necesitan para eludir la limitación del 50% pueden utilizar el modo de búsqueda booleana

Esto también explica por qué has obtenido resultados (pero con una puntuación de "sin sentido") cuando se establece la consulta a operar en BOOLEANA MODO

+0

+1 por ser el que encontró esto. Y felicitaciones por señalar la ubicación de la documentación muy oscura. Aunque le juro a todo lo que todavía es Oracle que el modo booleano no funcionaba hasta ** después de **, leí esta página. Pero tal vez esa era solo mi propensión a buscar cosas como 'foo' al principio ... Quiero decir, vamos, mi ÚLTIMO NOMBRE es de 3 letras. – ebyrob

Cuestiones relacionadas