Мина известно време, откакто си играх с това, но трябва да създадете ts_vector на правилния език, а не ts_query.
Така че, когато актуализирате таблицата си, използвайте:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
Можете също така да разширите функционалността и да използвате речник на ispell, за да направите по-добро произтичане за текстовата търсачка (въпреки че все още няма да е толкова сложно, колкото напр. Solr)
За да направите това, изтеглете ISPELL речника, който е напр. съдържащ се в немски речник на OpenOffice
Файлът .oxt всъщност е .zip файл, така че можете просто да извлечете съдържанието му.
След това копирайте файла de_DE_frami.dic
към директорията "share/tsearch_data" на PostgreSQL, докато променяте разширението на .dict
(което очаква PostgreSQL.
След това копирайте файла de_DE_frami.aff
в същата директория, променяйки разширението на .affix
.
Трябва да конвертирате и двата (текстови) файла в UTF-8, за да могат да работят с PostgreSQL
След това регистрирайте този речник, като използвате:
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;
След като това стане, можете да създадете своя ts_vector с помощта на:
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);
Това също е описано в ръководството:http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY