Tôi đã chơi với cái này một thời gian rồi, nhưng bạn cần tạo ts_vector bằng ngôn ngữ chính xác, không phải ts_query.
Vì vậy, khi bạn cập nhật bảng của mình, hãy sử dụng:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
Bạn cũng có thể mở rộng chức năng và sử dụng từ điển ispell để tạo nguồn gốc tốt hơn cho công cụ tìm kiếm văn bản (mặc dù nó vẫn sẽ không phức tạp như Solr)
Để làm điều đó, hãy tải xuống từ điển ISPELL, ví dụ:có trong từ điển tiếng Đức OpenOffice
Tệp .oxt thực sự là một tệp .zip, vì vậy bạn có thể chỉ cần trích xuất nội dung của nó.
Sau đó, sao chép tệp de_DE_frami.dic
vào thư mục PostgreSQL "share / tsearch_data" trong khi thay đổi phần mở rộng thành .dict
(đó là những gì PostgreSQL mong đợi.
Sau đó, sao chép tệp de_DE_frami.aff
vào cùng một thư mục, thay đổi phần mở rộng thành .affix
.
Bạn cần chuyển đổi cả hai tệp (văn bản) sang UTF-8 để chúng hoạt động với PostgreSQL
Sau đó đăng ký từ điển đó bằng:
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;
Sau khi hoàn tất, bạn có thể tạo ts_vector của mình bằng cách sử dụng:
UPDATE blog_entry SET body_tsv=to_tsvector('de_config', body);
Điều này cũng được mô tả trong sách hướng dẫn: http ://www.postgresql.org/docs/current/static/textsearch-dictionaries.html#TEXTSEARCH-ISPELL-DICTIONARY