Bei einem Volltextindex wird aus allen Wörtern des Textes eine Wort-Liste erstellt. Zu jedem Wort in der Liste wird die Datensatz-Id vermerkt in dem das Wort vorkommt. Kurze Wörter (Länge < 4) werden in der Regel ignoriert; die Länge kann in den Datenbankeinstellungen oft geändert werden.

Beispiel


Datensätze

idmemo
1Algorithmen, Datenbanken
2Algorithmen und Design Patterns
3Datenbanken-Entwurf, Stored Procedures

Volltextindex

Wortid
Algorithmen1,2
Datenbanken1, 3
Design2
Procedures3
3

Einrichten


Neue Tabelle

CREATE TABLE table( 
	id INT AUTO_INCREMENT PRIMARY KEY, 
	... 
	memo TEXT, 
	FULLTEXT INDEX idx_full_memo(memo) 
) ENGINE=InnoDB;

Existierende Tabelle

ALTER TABLE table ADD FULLTEXT INDEX idx_full_memo(memo);

In Abfragen verwenden


Die Suchbegriffe werden mit Leerzeichen getrennt als Parameter an AGAINST übergeben. MATCH liefert für jeden Datensatz eine Fließkommazahl. Sie ist umso höher, je relevanter der Datensatz ist und je häufiger der Suchbegriff gefunden wurde.

SELECT id, MATCH(memo) AGAINST ('Design') AS treffer 
FROM table 
HAVING treffer > 0.5 
ORDER BY treffer DESC

NOTE

Die Filterung wird mittels HAVING durchgeführt; wie bei Gruppierungs-Funktionen ist keine Filterung mit den Schlüsselwort WHERE möglich.

Boolean Mode


SELECT 
	id, 
	MATCH(memo) AGAINST('+Design Datenbank* -Procedures' IN BOOLEAN MODE) AS treffer FROM mitglied 
HAVING treffer > 0.5 
ORDER BY treffer DESC

Ausdrücke

AusdruckErklärung
WortDas Wort sollte enthalten sein.
+WortDas Wort muss enthalten sein.
-WortDas Wort darf nicht enthalten sein.
<WortDas Wort hat ein geringeres Gewicht als die anderen Wörter
>WortDas Wort hat ein höheres Gewicht als die anderen Wörter.
Wort*Das Wort beginnt mit den angegebenen Buchstaben.
"Wort1 Wort2"Die Wortfolge muss exakt so sein: Wort1 Wort2
"Wort1 Wort2" @5Der Abstand zwischen Wort1 und Wort2 darf maximal 5 Wörter betragen.