Andreas Korthaus: Volltextsuche unter MySql

Beitrag lesen

Hi!

Ich zitiere mal kurz aus der Doku (http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#Fulltext_Search):

Solch eine Technik funktioniert am besten bei großen Textsammlungen (in der Tat wurde sie sorgfältig darauf optimiert). Bei sehr kleinen Tabellen spiegelt die Wortverteilung nicht adäquat seinen semantischen Wert wider, so dass dieses Modell manchmal bizarre Ergebnisse ergeben kann:

mysql> SELECT * FROM artikel WHERE MATCH (titel,artikeltext) AGAINST ('MySQL');
Empty set (0.00 sec)

Die Suche nach dem Wort MySQL erzeugt im obigen Beispiel keine Ergebnisse. Das Wort MySQL ist in mehr als der Hälfte der Zeilen vorhanden und wird deshalb als Stopword betrachtet (eins mit dem semantischen Wert 0). Das ist in der Tat das gewünschte Verhalten - eine natürlichsprachige Anfrage sollte bei einer 1 GB großen Tabelle nicht jede zweite Zeile zurückgeben.

Bei einem Wort, dass in der Hälfte der Zeilen in einer Tabelle übereinstimmt, ist es nicht sehr wahrscheinlich, dass relevante Dokumente gefunden werden, sondern statt dessen viele irrelevante Dokumente. Das kennen wir alle aus Recherchen über Suchmaschinen auf dem Internet. Das ist die Überlegung, die dahinter steht, dass solchen Wörtern ein niedriger semantischer Wert in diesem bestimmten Satz von Daten gegeben wird.

Vielleicht hilft es Dir ja!

Grüße
Andreas