मुझे इसके साथ खेले हुए कुछ समय हो गया है, लेकिन आपको ts_vector को सही भाषा में बनाने की आवश्यकता है, न कि ts_query में।
इसलिए जब आप अपनी तालिका अपडेट करते हैं, तो इसका उपयोग करें:
UPDATE blog_entry SET body_tsv=to_tsvector('german', body);
टेक्स्ट सर्च इंजन में स्टेमिंग को बेहतर बनाने के लिए आप कार्यक्षमता का विस्तार भी कर सकते हैं और एक ispell शब्दकोश का उपयोग कर सकते हैं (हालांकि यह अभी भी उतना परिष्कृत नहीं होगा जैसे सोलर)
ऐसा करने के लिए, ISPELL डिक्शनरी डाउनलोड करें जो कि उदा। OpenOffice जर्मन डिक्शनरी में निहित है
.oxt फ़ाइल वास्तव में एक .zip फ़ाइल है, जिससे आप आसानी से इसकी सामग्री निकाल सकते हैं।
फिर फ़ाइल को कॉपी करें de_DE_frami.dic
एक्सटेंशन को .dict
. में बदलते समय PostgreSQL "share/tsearch_data" निर्देशिका में (जो कि 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