
Kapitel 7: MySQL-Sprachreferenz 475
Die Funktion MATCH pr¨uft eine nat¨urlichsprachige Anfrage gegen (AGAINST) eine Textsamm-
lung (einfach ein Satz von Spalten, der vom FULLTEXT-Index a/jointfilesconvert/293675/bgedeckt wird). F¨ur jede Zeile
in einer Tabelle gibt sie eine Relevanz zur¨uck - ein
¨
Ahnlichkeitsmaß zwischen dem Text in
dieser Zeile (in den Spalten, die Teil der Textsammlung sind) und der Anfrage. Wenn
sie in einer WHERE-Klausel benutzt wird (siehe Beispiel oben), werden die zur¨uckgegebenen
Zeilen automatisch nach absteigender Relevanz sortiert. Die Relevanz ist eine nicht nega-
tive Fließkommazahl. 0 Relevanz bedeutet keine
¨
Ahnlichkeit. Die Relevanz wird auf der
Grundlage der Anzahl von W¨ortern in der Zeile, der Anzahl eindeutiger W¨orter in dieser
Zeile, der Gesamtzahl von W¨ortern in der Textsammlung und der Anzahl von Dokumenten
(Zeilen) berechnet, die ein bestimmtes Wort enthalten.
Das obige Beispiel ist ein grundlegendes Beispiel der Benutzung der MATCH-Funktion. Die
Zeilen werden nach absteigender Relevanz zur¨uckgegeben.
mysql> SELECT id,MATCH (titel,artikeltext) AGAINST (’Tutorial’) FROM artikel;
+----+------------------------------------------------+
| id | MATCH (titel,artikeltext) AGAINST (’Tutorial’) |
+----+------------------------------------------------+
| 1 | 0.64840710366884 |
| 2 | 0 |
| 3 | 0.66266459031789 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
+----+------------------------------------------------+
5 rows in set (0.00 sec)
Dieses Beispiel zeigt, wie man Relevanzen abruft. Weil weder die WHERE- noch die ORDER
BY-Klausel vorhanden sind, werden die Zeilen unsortiert zur¨uckgegeben.
mysql> SELECT id, artikeltext, MATCH (titel,artikeltext) AGAINST (
-> ’Sicherheits-Implikationen, wenn Sie MySQL als root laufen lassen’) AS rang
-> FROM artikel WHERE MATCH (titel,artikeltext) AGAINST
-> (’Sicherheits-Implikationen, wenn Sie MySQL als root laufen lassen’);
+----+----------------------------------------------------------------+-----------------+
| id | artikeltext | rang |
+----+----------------------------------------------------------------+-----------------+
| 4 | 1. Lassen Sie mysqld nie als root laufen. 2. Normalisieren ... | 1.5055546709332 |
| 6 | Wenn er korrekt konfiguriert ist, ist MySQL ... | 1.31140957288 |
+----+----------------------------------------------------------------+-----------------+
2 rows in set (0.00 sec)
Das ist ein komplexeres Beispiel - die Anfrage gibt die Relevanz zur¨uck und sortiert die
Zeilen auch noch nach absteigender Relevanz. Um das zu erzielen, m¨ussen Sie MATCH zweimal
angeben. Beachten Sie, dass das keinen zus¨atzlichen Overhead verursacht, weil der MySQL-
Optimierer bemerkt, dass diese zwei MATCH-Aufrufe identisch sind und daher den Code f¨ur
die Volltextsuche nur einmal aufruft.
MySQL benutzt einen sehr einfachen Parser, um Text in W¨orter zu zerlegen. Ein “Wort”
ist jede Folge von Buchstaben, Zahlen, ‘’’ und ‘_’. Jedes “Wort”, das in der Liste der
Stopwords vorkommt oder einfach nur zu kurz ist (3 Zeichen o der weniger), wird ignoriert.
Comentarios a estos manuales