Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL 5.6 Volltextsuche Problem bei der Suche nach dem Wort the in PHP

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