Es ist schon eine Weile her, seit ich damit gespielt habe, aber Sie müssen den ts_vector in der richtigen Sprache erstellen, nicht die ts_query.
Wenn Sie also Ihre Tabelle aktualisieren, verwenden Sie:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
Sie können auch die Funktionalität erweitern und ein ispell-Wörterbuch verwenden, um die Wortstammerkennung für die Textsuchmaschine zu verbessern (obwohl es immer noch nicht so ausgefeilt sein wird wie z. B. Solr)
Laden Sie dazu das ISPELL-Wörterbuch herunter, das z. enthalten im OpenOffice Deutsch-Wörterbuch
Die .oxt-Datei ist eigentlich eine .zip-Datei, sodass Sie ihren Inhalt einfach extrahieren können.
Kopieren Sie dann die Datei de_DE_frami.dic
in das PostgreSQL-Verzeichnis „share/tsearch_data“, während Sie die Erweiterung in .dict
ändern (was PostgreSQL erwartet.
Kopieren Sie dann die Datei de_DE_frami.aff
in dasselbe Verzeichnis und ändern Sie die Erweiterung in .affix
.
Sie müssen beide (Text-)Dateien in UTF-8 konvertieren, damit sie mit PostgreSQL funktionieren
Dann registrieren Sie dieses Wörterbuch mit:
CREATE TEXT SEARCH CONFIGURATION de_config (copy=german);
CREATE TEXT SEARCH DICTIONARY german_stem (
TEMPLATE = snowball,
Language = german
);
CREATE TEXT SEARCH DICTIONARY german_ispell (
TEMPLATE = ispell,
dictfile = de_DE_frami,
afffile = de_de_frami
);
alter text search configuration de_config
alter mapping for asciiword WITH german_ispell, german_stem;
Sobald dies erledigt ist, können Sie Ihren ts_vector erstellen mit:
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);
Dies ist auch im Handbuch beschrieben:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY