Database Reference
In-Depth Information
Das ist nützlich, wenn die Suche kleine Schreibfehler oder fehlende Wörter
tolerieren soll. Je länger der String, desto mehr Trigramme und desto eher
findet sich ein Treffer - sie eignen sich gut für Filmtitel, da diese immer ähn-
lich lang sind.
Wir erzeugen einen Trigramm-Index über die Filmnamen (wozu wir Genera-
lized Index Search Tree [GIST] nutzen, eine generische Index-API, die für die
PostgreSQL-Engine zur Verfügung steht).
CREATE INDEX movies _ title _ trigram ON movies
USING gist (title gist _ trgm _ ops);
Nun können unsere Anfragen auch kleinere Schreibfehler enthalten und wir
erhalten trotzdem vernünftige Ergebnisse.
SELECT *
FROM movies
WHERE title % 'Avatre' ;
title
---------
Avatar
Trigramme sind eine gute Wahl, wenn man Benutzereingaben ohne Wild-
cards verarbeiten möchte.
Volltextsuche
Nun wollen wir den Benutzern Volltextsuchen basierend auf passenden Wör-
tern (auch im Plural) erlauben. Postgres unterstützt eine einfache maschinel-
le Sprachverarbeitung, d. h., ein Benutzer kann nach bestimmten Wörtern in
einem Filmtitel suchen, auch wenn er sich nicht an alle Wörter erinnert.
TSVector und TSQuery
Sehen wir uns einen Film an, der die Wörter night und day enthält. Das ist
genau die richtige Aufgabe für den Volltext-Queryoperator @@.
SELECT title
FROM movies
WHERE title @@ 'night & day' ;
title
-------------------------------
A Hard Day's Night
Six Days Seven Nights
Long Day's Journey Into Night
Search WWH ::




Custom Search