Ok, finalmente l'ho capito. Sembra che io abbia già cancellato le stopword di myisam ma non quelle di innodb. È un po' più difficile da fare rispetto a myisam, ma ecco i passaggi per chiunque ne abbia bisogno:
Nel tuo /etc/my.cnf (o my.ini su Windows) aggiungi queste righe:
Crea una tabella di stopword. Ho fatto il mio in un db chiamato settings
e una tabella chiamata innodb-stopwords
. Non puoi semplicemente impostare innodb_ft_enable_stopword = 0
, devi creare e collegarti a una tabella.
Assicurati che la tua tabella sia innodb e aggiungi una colonna chiamata value
, varchar(?), utf8_general_ci. Puoi lasciarlo vuoto o aggiungere valori alla tabella.
innodb_ft_enable_stopword = 1
innodb_ft_server_stopword_table = settings/innodb-stopwords
Riavvia il tuo server MySQL.
Elimina e ricrea i tuoi indici fulltext.
Se non vuoi riavviare il server, puoi impostare dinamicamente le variabili con (aggiorna anche il file cnf/ini per il prossimo riavvio del server)
--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name
Non vedo alcuna soluzione alternativa per ricreare l'indice... puoi farlo con un solo comando, quindi la tabella è bloccata per tutto il tempo e i tuoi utenti non ricevono errori:
ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);