24 Stimmen

MySQL: Minimale Wortlänge bei der Volltextsuche ändern

Tipp von Stefan Trost | 13.06.2012 um 21:17

Standardmäßig ist die Volltextsuche von MySQL so eingestellt, das Worte unter 4 Buchstaben von der Suche ausgeschlossen werden. Benutzt man also eine MySQL Abfrage wie

SELECT * FROM tabelle WHERE MATCH (spalte1, spalte2) AGAINST
('+Suchwort +ABC' IN BOOLEAN MODE);

wird zwar nach "Suchwort" korrekt gesucht, das Wort "ABC" wird aber aussortiert und hat keinen Einfluss auf das Suchergebnis.

Problematisch wird dies zum Beispiel in Produktverzeichnissen, wo es viele Worte aus 3 Buchstaben gibt oder auch bei Abkürzungen, wie zum Beispiel der Suche nach "ARD", "ZDF" oder "RTL". Hier würde man sich wünschen, dass man auch nach diesen Worten suchen kann.

Woran liegt es?

Den Ausschluss aller Worte mit 3 Buchstaben verursacht folgende Einstellung in der MySQL Konfiguration:

ft_min_word_len = 4

Dies ist die Abkürzung für "Full Text Minimum Word Length" und legt fest, dass ein Wort mindestens eine Länge von 4 Buchstaben haben muss, um in den Fulltext Index aufgenommen zu werden.

Wie ändere ich die Einstellung?

Wenn Sie die minimale Wortlänge für die Volltextsuche ändern, klappt es auch mit dem Suchen nach kürzeren Worten.

Dazu suchen wir als erstes die MySQL Konfigurationsdatei, die man im Verzeichnis "etc/mysql" findet. Die Datei heißt "my.cnf" und wir ändern darin die entsprechende Zeile zu:

ft_min_word_len = 3

Als nächstes müssen wir unseren MySQL Server neu starten. In XAMPP können wir das einfach über das Control-Panel und notfalls auch über einen Neustart des Computers. Oder wir verwenden einfach den Befehl:

/etc/init.d/mysql restart

Zuletzt muss unser Fulltext-Index neu angelegt werden, da er ja noch keine Worte mit 3 Buchstaben enthält. Das machen wir über phpMyAdmin oder mit dem MySQL Befehl:

REPAIR TABLE tabelle;

Nach dem "REPAIR TABLE" wird unser Index aufgrund der geänderten Einstellungen neu angelegt und wir können die Volltextsuche auch mit Worten aus 3 Buchstaben benutzen.

Hinweis

Der hier beschriebene Vorgang setzt voraus, dass wir die Rechte haben, die entsprechenden Dateien zu ändern und den Server neu zu starten. Leider gibt es die Möglichkeit bei vielen Hosting-Anbietern, gerade in Billigverträgen nicht. Hier wird es meist nicht möglich sein, die minimale Wortlänge zu ändern - es sei denn man hat einen guten Draht zu den dortigen Technikern.

Allerdings kann man sich in diesem Fall einem anderen Trick bedienen, trotzdem Worte mit nur 3 Buchstaben zu finden. Den habe ich in diesem Tipp beschrieben.

AntwortenPositivNegativ
22 Stimmen

Schön beschrieben. Von mir noch einmal einen kleinen Tipp, wie man es auch machen kann:

SET GLOBAL ft_min_word_len=3;
REPAIR TABLE tabelle QUICK;

Das setzt auch die minimale Wortlänge auf 3 und erneuert anschließend den Index. Um den kompletten MySQL Server umzustellen, ist natürlich die oben beschriebene Methode besser.
14.06.2012 um 16:39

AntwortenPositiv Negativ
Antworten

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.