2009-10-18 24 views
10

Estoy tratando de obtener mi búsqueda de texto completo (en modo booleano) para recuperar palabras con tres letras o menos.Búsqueda de texto completo de MySQL para palabras con tres letras o menos

Actualmente, si busco algo como "NBA", no obtengo ningún resultado.

Sin embargo, si añado el comodín "*" al término de búsqueda, obtengo resultados.

También leí que podía eliminar el límite de tres palabras en my.ini, pero me pregunto si habría una forma mejor de hacerlo sobre la marcha.

Respuesta

16

Esta sección del manual que puede interesar: 11.8.6. Fine-Tuning MySQL Full-Text Search(citando a una porción de ella):

El mínimo y longitudes máximas de palabras para ser indexados son definidos por el ft_min_word_len y ft_max_word_len variables del sistema El valor mínimo predeterminado de es cuatro caracteres ; el máximo predeterminado es dependiendo de la versión. Si cambia cualquiera de los valores, debe reconstruir sus índices FULLTEXT.
Por ejemplo, si desea que las palabras de tres caracteres para ser de búsqueda, se puede establecer la variable ft_min_word_len poniendo las siguientes líneas en un fichero de opciones:

[mysqld] 
ft_min_word_len=3 

A continuación, debe reiniciar el servidor y reconstruye tus índices FULLTEXT.

(usted debe leer esa página, para más informaciones No copiar y pegar ;-))

+0

Gracias Pascal, leí la misma ya, la idea que tengo es hacer con una función PHP que verifica la longitud de la frase de búsqueda y agrega el modificador comodín * si es menor que ft_min_word_len preguntándose si hay una manera mejor de hacerlo que eso ... –

+0

Oh, lo siento, no lo hice entiende eso ;; No tengo mucha idea sobre eso ... no estoy seguro de que sea bueno en cuanto a rendimiento; solo como una nota al margen: ¿qué hay de usar un motor de búsqueda/indexación externo, como solr o sphinx? –

+0

gracias, He oído hablar de esfinge pero aún no he tenido el tiempo de entenderlo, lo investigaré pronto –

Cuestiones relacionadas