Ok, konečně jsem na to přišel. Vypadá to, že jsem již vymazal stopwordy myisam, ale ne ty innodb. Je to trochu, ale těžší než pro myisam, ale tady jsou kroky pro každého, kdo by to mohl potřebovat:
Do svého /etc/my.cnf (nebo my.ini v systému Windows) přidejte tyto řádky:
Vytvořte tabulku ignorovaných slov. Udělal jsem svůj v db s názvem settings
a tabulku nazvanou innodb-stopwords
. Nemůžete jednoduše nastavit innodb_ft_enable_stopword = 0
, musíte vytvořit a propojit tabulku.
Ujistěte se, že je vaše tabulka innodb a přidejte sloupec s názvem value
, varchar(?), utf8_general_ci. Můžete ji nechat prázdnou nebo do tabulky přidat hodnoty.
innodb_ft_enable_stopword = 1
innodb_ft_server_stopword_table = settings/innodb-stopwords
Restartujte svůj mysql server.
Přetáhněte a znovu vytvořte své fulltextové indexy.
Pokud nechcete restartovat server, můžete dynamicky nastavit proměnné pomocí (také aktualizujte soubor cnf/ini pro příští restart serveru)
--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name
Nevidím žádné řešení pro opětovné vytvoření indexu... můžete to však provést jedním příkazem, takže tabulka bude po celou dobu uzamčena a vaši uživatelé nebudou dostávat chyby:
ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);