मेरे पास एक रूसी शब्दकोष है जिसका नाम 8.4 है।
मैं पूर्ण खोज का उपयोग करने की कोशिश करता हूं, लेकिन कुछ परेशानियां हैं।
मुझे कोई परिणाम नहीं मिल रहा है क्योंकि पति 4-5symbols द्वारा शब्द खोजने की कोशिश कर रहा है। उदाहरण के लिए:
select * from parcels_temp where name_dispatcher @@ to_tsquery("Нику");
परिणाम प्राप्त करें: 0 पंक्तियाँ।
select * from parcels_temp where name_dispatcher @@ to_tsquery("Никуд");
परिणाम प्राप्त करें: 2 पंक्तियाँ। यह सही है।
मैं शब्दकोश में निहित शब्दों से खोज करने की कोशिश करता हूं। मैं इस मामले में क्या करने जा रहा हूं? मैं PostgreSQL में शब्दकोश कैसे अपडेट कर सकता हूं?
इसके लिए कॉलम बनाना होगा
tsvector
या मैं उपयोग कर सकते हैंto_tsvector
समारोह मैं प्रश्न? या इसके और धीरे?
उत्तर:
उत्तर № 1 के लिए 1Postgresql indexer 3 वर्णों से छोटे तार को संसाधित नहीं करता है। यह सूचकांक आकार और पीढ़ी के समय को कम करने के लिए किया जाता है।
जाहिर है, आपको कुछ नहीं मिलता। शब्दकोश को अपडेट करने, प्रलेखन का संदर्भ देने का तरीका है।
जवाब के लिए 0 № 2
1: डिफ़ॉल्ट रूप से, postgreSQL केवल पूरे शब्द से मेल खाता है। आप उपसर्ग मिलान करने का विकल्प चुन सकते हैं:
select * from parcels_temp where name_dispatcher @@ to_tsquery("Нику:*");
देख: https://www.postgresql.org/docs/9.5/static/textsearch-controls.html
3: आप उस पर एक कॉलम और GIN इंडेक्स बना सकते हैं, या आप बिना कॉलम बनाए इंडेक्स बना सकते हैं। मुझे लगता है कि प्रदर्शन के मामले में वे समान हैं। जानकारी के लिए, देखें: https://www.postgresql.org/docs/9.5/static/textsearch-tables.html