Ok, w końcu to rozgryzłem. Wygląda na to, że wyczyściłem już odrzucane słowa myisam, ale nie te innodb. Jest to trochę trudniejsze niż w przypadku myisam, ale oto kroki dla każdego, kto może tego potrzebować:
W swoim /etc/my.cnf (lub my.ini w systemie Windows) dodaj następujące wiersze:
Utwórz tabelę odrzucanych słów. Utworzyłem mój w bazie danych o nazwie settings
i tabelę o nazwie innodb-stopwords
. Nie możesz po prostu ustawić innodb_ft_enable_stopword = 0
, musisz utworzyć i połączyć z tabelą.
Upewnij się, że Twoja tabela jest innodb i dodaj kolumnę o nazwie value
, varchar(?), utf8_general_ci. Możesz pozostawić to puste lub dodać wartości do tabeli.
innodb_ft_enable_stopword = 1
innodb_ft_server_stopword_table = settings/innodb-stopwords
Uruchom ponownie serwer mysql.
Upuść i odtwórz swoje indeksy pełnotekstowe.
Jeśli nie chcesz restartować serwera, możesz dynamicznie ustawić zmienne za pomocą (również zaktualizować plik cnf/ini dla następnego restartu serwera)
--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name
Nie widzę żadnego obejścia dla odtworzenia indeksu... możesz to zrobić w jednym poleceniu, dzięki czemu tabela jest cały czas zablokowana, a Twoi użytkownicy nie otrzymują błędów:
ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);