Det er et stykke tid siden, jeg har leget med dette, men du skal oprette ts_vector på det korrekte sprog, ikke ts_query.
Så når du opdaterer din tabel, skal du bruge:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
Du kan også udvide funktionaliteten og bruge en ispell-ordbog til at gøre stemming bedre til tekstsøgemaskinen (selvom den stadig ikke vil være så sofistikeret som f.eks. Solr)
For at gøre det skal du downloade ISPELL-ordbogen, der er f.eks. indeholdt i OpenOffice tysk ordbog
.oxt-filen er faktisk en .zip-fil, så du kan blot udpakke dens indhold.
Kopier derefter filen de_DE_frami.dic
til PostgreSQL "share/tsearch_data"-biblioteket, mens du ændrer udvidelsen til .dict
(hvilket er, hvad PostgreSQL forventer.
Kopier derefter filen de_DE_frami.aff
til den samme mappe, ændre udvidelsen til .affix
.
Du skal konvertere begge (tekst)filer til UTF-8, for at de kan fungere med PostgreSQL
Registrer derefter den ordbog ved hjælp af:
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;
Når det er gjort, kan du oprette din ts_vector ved hjælp af:
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);
Dette er også beskrevet i manualen:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY