Database Reference
In-Depth Information
CREATE INDEX
movies
_
actors
_
actor
_
id
ON
movies
_
actors (actor
_
id);
CREATE INDEX
movies
_
genres
_
cube
ON
movies
USING
gist (genre);
Sie können die zum Buch passende Datei
movies
_
data.sql
herunterladen,
um die Tabellen mit Leben zu füllen. Alle Fragen zum
genre cube
behandeln
wir im Verlauf dieses Tages.
Unscharfe Suche
Ein System für die Textsuche zu öffnen, bedeutet, sich für ungenaue Einga-
ben zu öffnen. Sie müssen mit Tippfehlern wie „Franksteins Braut“ rechnen.
Manchmal können sich die Benutzer nicht an den vollständigen Namen von
„J. Roberts“ erinnern. In anderen Fällen können wir uns einfach nicht dar-
an erinnern, wie man „Benn Aflek“ richtig schreibt. Wir wollen uns einige
PostgreSQL-Pakete ansehen, die die Textsuche vereinfachen. Und je weiter
wir einsteigen, desto mehr verschwimmen bei diesem String-Matching die
Grenzen zwischen relationalen Queries und Such-Frameworks wie Lucene.
6
Auch wenn einige der Ansicht sind, dass Features wie die Volltextsuche in
den Anwendungscode gehören, kann es im Bezug auf Performance und Ad-
ministration vorteilhaft sein, diese Aufgaben der Datenbank zu überlassen,
wo die Daten liegen.
Standard-String-Matching bei SQL
PostgreSQL kann Texte auf vielerlei Weise durchsuchen, aber die beiden be-
kanntesten Standard-Methoden sind
LIKE
und Reguläre Ausdrücke.
LIKE und ILIKE
LIKE
und
ILIKE
(Casesensitives
LIKE
) sind die einfachsten Formen der Text-
suche und bei relationalen Datenbanken nahezu immer vorhanden.
LIKE
ver-
gleicht einen Spaltenwert mit einem gegebenen String-Muster, bei dem die
Zeichen % und _ Platzhalter (Wildcards) sind. % steht dabei für eine beliebi-
ge Zahl von Zeichen, während _ für genau ein Zeichen steht.
SELECT
title
FROM
movies
WHERE
title ILIKE
'stardust%'
;
title
-------------------
Stardust
Stardust Memories
Soll der Teilstring
stardust
nicht das Ende des Strings sein, können Sie den
Unterstrich (_) als kleinen Trick verwenden.