Ok, das habe ich endlich herausgefunden. Es sieht so aus, als hätte ich die myisam-Stoppwörter bereits gelöscht, aber nicht die innodb-Stoppwörter. Es ist etwas schwieriger als bei myisam, aber hier sind die Schritte für alle anderen, die es brauchen könnten:
Fügen Sie in Ihrer /etc/my.cnf (oder my.ini unter Windows) diese Zeilen hinzu:
Erstellen Sie eine Stoppworttabelle. Ich habe meine in einer Datenbank namens settings
erstellt und eine Tabelle namens innodb-stopwords
. Sie können nicht einfach innodb_ft_enable_stopword = 0
setzen , müssen Sie eine Tabelle erstellen und verknüpfen.
Stellen Sie sicher, dass Ihre Tabelle innodb ist und fügen Sie eine Spalte namens value
hinzu , varchar(?), utf8_general_ci. Sie können es leer lassen oder der Tabelle Werte hinzufügen.
innodb_ft_enable_stopword = 1
innodb_ft_server_stopword_table = settings/innodb-stopwords
Starten Sie Ihren MySQL-Server neu.
Löschen Sie Ihre Volltextindizes und erstellen Sie sie neu.
Wenn Sie den Server nicht neu starten möchten, können Sie die Variablen mit dynamisch setzen (auch die cnf/ini-Datei für den nächsten Serverneustart aktualisieren)
--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name
Ich sehe keine Problemumgehung, um den Index neu zu erstellen ... Sie können dies jedoch in einem Befehl tun, damit die Tabelle die ganze Zeit gesperrt ist und Ihre Benutzer keine Fehler erhalten:
ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);