Det var ett tag sedan jag lekte med detta, men du måste skapa ts_vector på rätt språk, inte ts_query.
Så när du uppdaterar din tabell, använd:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
Du kan också utöka funktionaliteten och använda en ispell-ordbok för att göra stemming bättre för textsökmotorn (även om den fortfarande inte kommer att vara lika sofistikerad som t.ex. Solr)
För att göra det, ladda ner ISPELL-lexikonet som är t.ex. finns i OpenOffice tyska ordboken
.oxt-filen är faktiskt en .zip-fil, så du kan helt enkelt extrahera dess innehåll.
Kopiera sedan filen de_DE_frami.dic
till PostgreSQL "share/tsearch_data"-katalogen medan du ändrar tillägget till .dict
(vilket är vad PostgreSQL förväntar sig.
Kopiera sedan filen de_DE_frami.aff
till samma katalog, ändra tillägget till .affix
.
Du måste konvertera båda (text)filerna till UTF-8 för att de ska fungera med PostgreSQL
Registrera sedan den ordboken med:
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 är gjort kan du skapa din ts_vector med:
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);
Detta beskrivs också i manualen:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY