sql >> Base de Datos >  >> RDS >> Mysql

Problema de búsqueda de texto completo de MySQL 5.6 al buscar la palabra en PHP

Ok, finalmente me di cuenta de esto. Parece que ya había borrado las palabras vacías de myisam, pero no las de innodb. Es un poco más difícil de hacer que para myisam, pero estos son los pasos para cualquier otra persona que pueda necesitarlo:

En su /etc/my.cnf (o my.ini en Windows) agregue estas líneas:

Crea una tabla de palabras vacías. Hice el mío en una base de datos llamada settings y una tabla llamada innodb-stopwords . No puede simplemente configurar innodb_ft_enable_stopword = 0 , tienes que crear y vincular a una tabla.

Asegúrese de que su tabla sea innodb y agregue una columna llamada value , varchar(?), utf8_general_ci. Puede dejarlo vacío o agregar valores a la tabla.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Reinicie su servidor mysql.

Suelte y vuelva a crear sus índices de texto completo.

Si no desea reiniciar el servidor, puede configurar dinámicamente las variables con (también actualice el archivo cnf/ini para el próximo reinicio del servidor)

--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name

No veo ninguna solución para recrear el índice... aunque puede hacerlo con un solo comando para que la tabla esté bloqueada todo el tiempo y sus usuarios no reciban errores:

ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);