Database Reference
In-Depth Information
Nachdem wir den Index erzeugt haben, führen wir die Suche erneut aus.
EXPLAIN
SELECT *
FROM movies
WHERE title @@ 'night & day' ;
QUERY PLAN
---------------------------------------------------------------------------
Seq Scan on movies (cost=10000000000.00..10000000001.12 rows=1 width=68)
Filter: (title @@ 'night & day'::text)
Was ist passiert? Nichts. Der Index ist da, aber Postgres nutzt ihn nicht.
Das liegt daran, dass unser GIN-Index gezielt die english -Konfiguration zum
Aufbau der tsvector en nutzt, während wir diesen Vektor nicht angeben. Wir
müssen ihn in der WHERE -Klausel der Query explizit angeben.
EXPLAIN
SELECT *
FROM movies
WHERE to _ tsvector( 'english' ,title) @@ 'night & day' ;
QUERY PLAN
------------------------------------------------------------------------------------
Bitmap Heap Scan on movies (cost=4.26..8.28 rows=1 width=68)
Recheck Cond: (to _ tsvector( 'english' ::regconfig, title) @@ '''day''' ::tsquery)
-> Bitmap Index Scan on movies _ title _ searchable (cost=0.00..4.26 rows=1 width=0)
Index Cond: (to _ tsvector( 'english' ::regconfig, title) @@ '''day''' ::tsquery)
EXPLAIN ist wichtig, um sicherzustellen, dass Indizes so genutzt werden, wie
Sie es erwarten. Anderenfalls ist der Index nur unnötiger Overhead.
Metaphone
Wir haben uns in Richtung weniger spezifischer Eingaben bewegt. Bei LIKE
und regulären Ausdrücken müssen Sie Muster angeben, die die Strings ent-
sprechend ihrem Format genau beschreiben. Die Levenshtein-Distanz findet
Treffer mit kleineren Schreibfehlern, doch letztlich muss man recht nah am
gesuchten String sein. Trigramme sind eine gute Wahl für akzetabel falsch
geschriebene Wörter. Die Volltextsuche erlaubt schließlich eine natürliche
sprachliche Flexibilität, indem sie z. B. englische Wörter wie a und the igno-
riert und mit der Pluralisierung umgehen kann. Manchmal wissen wir nicht,
wie man ein Wort richtig schreibt, doch wir wissen, wie man es spricht.
Wir lieben Bruce Willis und wollen wissen, in welchen Filmen er mitgespielt
hat. Unglücklicherweise können wir uns nicht genau daran erinnert, wie man
seinen Namen schreibt, weshalb wir ihn so schreiben, wie es sich in etwa
anhört.
Search WWH ::




Custom Search