La capacidad de búsqueda full-text de MySQL tiene algunos parámetros ajustables por el usuario, aunque añadir más está en la lista de temas pendientes. Puede tener un mayor control en el comportamiento de las búsquedas full-text si tiene una distribución fuente de MySQL ya que algunos cambios requieren modificaciones del código. Consulte Sección 2.8, “Instalación de MySQL usando una distribución de código fuente”.
Tenga en cuenta que la búsqueda full-text está ajustada cuidadosamente para una mayor eficiencia. El modificar el comportamiento por defecto puede decrementarla en la mayoría de los casos. No cambie el código MySQL a no ser que sepa lo que hace.
La mayoría de variables full-text que se describen a continuación deben cambiarse en tiempo de arranque del servidor. Se necesita reiniciar el servidor para cambiarlas; no pueden modificarse mientras el servidor está en ejecución.
Algunos cambios de variables requieren que rehaga los índices
FULLTEXT
en sus tablas. Las instrucciones
para hacerlo se dan al final de esta sección.
La longitud mínima y máxima de las palabras a indexar se
definen con las variables de sistema
ft_min_word_len
y
ft_max_word_len
. (Consulte
Sección 5.3.3, “Variables de sistema del servidor”.) El valor por
defecto mínimo es de cuatro caracteres; el valor máximo
por defecto depende de la versión de MySQL que use. Si
cambia algún valor, debe rehacer los índices
FULLTEXT
. Por ejemplo, si quiere que se
puedan buscar palabras de tres caracteres, puede cambiar 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 reinicie el servidor y rehaga los índices
FULLTEXT
. Tenga en cuenta las
particularidades de myisamchk en las
instrucciones a continuación.
Para sobreescribir la lista de palabras de parada por
defecto, cambie la variable de sistema
ft_stopword_file
. (Consulte
Sección 5.3.3, “Variables de sistema del servidor”.) El valor de la
variable debe ser la ruta del fichero que contiene la lista
de palabras de parada, o la cadena vacía para desactivar el
filtro de palabras de parada. Tras cambiar el valor de esta
variable o los contenidos del fichero de palabras de parada,
rehaga los índices FULLTEXT
.
La lista de palabras de parada es libre, esto es, puede usar
cualquier carácter no alfanumérico como el de nueva
línea, espacio, o coma para separar las palabras de parada.
Las excepción son el subrayado (_
) y el
apóstrofe sencillo ('
) que se tratan
como parte de una palabra. El conjunto de caracteres de la
lista de palabras de parada es el conjunto de caracteres por
defecto del servidor; consulte
Sección 10.3.1, “Conjunto de caracteres y colación del servidor”.
El límite del 50% para búsquedas de lenguaje natural está
determinada por el esquema de pesos elegido. Para
desactivarlo, consulte la siguiente línea en
myisam/ftdefs.h
:
#define GWS_IN_USE GWS_PROB
Cambie esta línea a:
#define GWS_IN_USE GWS_FREQ
A continuación recompile MySQL. No hay necesidad de rehacer
los índices en este caso.
Nota: Al hacer esto se
decrementa severamente la habilidad de
MySQL para proporcionar valores apropiados de relevancia
para la función MATCH()
. Si realmente
necesita buscar para estas palabras comunes, es mejor buscar
usando IN BOOLEAN MODE
en su lugar, que
no observa el límite del 50%.
Para cambiar los operadores usados para búsquedas booleanas
full-text, cambie la variable de sistema
ft_boolean_syntax
. Esta variable también
puede cambiarse mientras el servidor está en ejecución,
pero debe tener el privilegio SUPER
para
ello. No es necesario rehacer los índices.
Variables de sistema
del servidor describe las reglas que gobiernan cómo
cambiar esta variable.
Si modifica variables full-text que afectan el indexado
(ft_min_word_len
,
ft_max_word_len
,
ft_stopword_file
), o si cambia el fichero de
palabras de parada mismo, debe reconstruir los índices
FULLTEXT
tras hacer los cambios y reiniciar
el servidor. Para rehacer los índices en este caso, es
suficiente hacer una operación de reparación
QUICK
:
mysql> REPAIR TABLE tbl_name
QUICK;
Tenga en cuenta que si usa myisamchk para
realizar una operación que modifica los índices de tablas
(tales como reparar o analizar), los índices
FULLTEXT
se reconstruyen usando los valores
por defecto full-text para longitud de palabras mínima y
máxima y el fichero de palabras de parada a no ser que
especifique otro. Esto puede hacer que las consultas fallen.
El problema ocurre porque estos parametros sólo son conocidos
por el servidor. No se almacenan en ficheros índices
MyISAM
. Para evitar este problema si ha
modificado la longitud mínima o máxima de palabra o el fichero
de palabras de parada en el servidor, especifique los mismos
valores de ft_min_word_len
,
ft_max_word_len
, y
ft_stopword_file
a
myisamchk que usa para
mysqld. Por ejemplo, si ha puesto que la
longitud de palabra mínima a 3, puede reparar una tabla con un
myisamchk como este:
shell> myisamchk --recover --ft_min_word_len=3 tbl_name
.MYI
Para asegurar que myisamchk y el servidor
usan los mismos valores para parámetros full-text, puede poner
cada uno en las secciones [mysqld]
y
[myisamchk]
de un fichero de opciones:
[mysqld] ft_min_word_len=3 [myisamchk] ft_min_word_len=3
Una alternativa a usar myisamchk es usar
REPAIR TABLE
, ANALYZE
TABLE
, OPTIMIZE TABLE
, o
ALTER TABLE
. Estos comandos los realiza el
servidor, que conoce los valores apropiados de los parámetros
full-text a usa.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.