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`);