2011-05-29 8 views
12

मैंने PostgreSQL में एक नई टेक्स्ट खोज कॉन्फ़िगरेशन स्थापित की है। यह कॉन्फ़िगरेशन एक खाली स्टॉप शब्द फ़ाइल, डिक्टफाइल और एफ़फ़ाइल का उपयोग करता है।PostgreSQL tsvector कॉन्फ़िगरेशन: विशेष वर्णों को कैसे अनुमति दें?

एक साधारण परीक्षण ...

SELECT * 
    FROM ts_debug('public.myconfig', 'C++ and C# and PHP'); 

... काम करता है (लगभग) तथ्य यह है कि 'सी ++' और 'सी #' के लिए शब्दिम दोनों 'सी' को छोड़कर ठीक। असल में, मैं यह सुनिश्चित करना चाहता हूं कि 'सी ++' के लिए लेक्सम 'सी ++' है और 'सी #' के लिए लेक्सम 'सी #' है, इसलिए उपयोगकर्ता को 'सी ++' के लिए पूछताछ करने में सक्षम बनाता है।

उत्तर

4

समस्या दो गुना है।

  1. पहला मुद्दा अनुक्रमण के साथ है। डिफ़ॉल्ट कॉन्फ़िगरेशन डेटा को अनुक्रमणित करने के लिए उपयोग करने का उपयोग करता है और इसलिए आपको 'सी ++' और 'सी #' के लिए लेक्सम 'सी' मिलता है। आप डेटा को इंडेक्स करने के लिए 'सरल' कॉन्फ़िगरेशन का उपयोग कर सकते हैं लेकिन फिर आप इंडेक्स में अवांछित शब्दों के साथ समाप्त हो जाएंगे। मैंने जो किया वह 'सी ++' से 'क्लप्लप्लस' और इंडेक्स को परिवर्तित कर दिया गया था। चूंकि 'क्लप्लसप्लस' में कोई लेक्सम नहीं है, इसलिए यह असंगत होगा। आप इंडेक्स डेटा में 'सीएसएचआरपी' बनाकर 'सी #' के लिए भी ऐसा ही कर सकते हैं।

  2. दूसरा मुद्दा खोज के साथ है। अब जब अनुक्रमित डेटा ठीक है, तो हमें यह सुनिश्चित करना होगा कि हम विशेष शब्दों के लिए खोज शब्द परिवर्तित करें। मैं डीबी कि एक स्ट्रिंग में ले लिया पर एक समारोह बनाया है और विशेष शर्तों के सभी आवृत्तियां परिवर्तित में उपयोगकर्ता प्रकार cplusplus 'खोज प्रदर्शन से पहले' सी ++ ", आप के लिए यह बदलने की आवश्यकता 'है।

मैंने थोड़ी देर में टीएसर्च का उपयोग नहीं किया है, इसलिए मुझे यकीन नहीं है कि टीएसर्च आपको सेटअप और अपवाद सूची को उसी तरह से सेट करने की अनुमति देता है जैसे यह रोकने के लिए अनुमति देता है।

संबंधित मुद्दे