Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de pesquisa de texto completo do MySQL 5.6 ao pesquisar a palavra the em PHP


Ok, eu finalmente descobri isso. Parece que eu já tinha as stopwords do myisam limpas, mas não as do innodb. É um pouco mais difícil de fazer do que para myisam, mas aqui estão os passos para qualquer outra pessoa que possa precisar:

No seu /etc/my.cnf (ou my.ini no windows) adicione estas linhas:

Crie uma tabela de palavras irrelevantes. Eu fiz o meu em um db chamado settings e uma tabela chamada innodb-stopwords . Você não pode simplesmente definir innodb_ft_enable_stopword = 0 , você precisa criar e vincular a uma tabela.

Certifique-se de que sua tabela seja innodb e adicione uma coluna chamada value , varchar(?), utf8_general_ci. Você pode deixá-lo vazio ou adicionar valores à tabela.
innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Reinicie seu servidor mysql.

Solte e recrie seus índices de texto completo.

Se você não quiser reiniciar o servidor, você pode definir dinamicamente as variáveis ​​com (também atualize o arquivo cnf/ini para a próxima reinicialização do servidor)
--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name

Não vejo nenhuma solução alternativa para recriar o índice ... você pode fazer isso em um comando para que a tabela fique bloqueada o tempo todo e seus usuários não recebam erros:
ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);