वे बहुत अलग उद्देश्यों की पूर्ति करते हैं।
- पूर्ण पाठ खोज का उपयोग उन दस्तावेज़ों को वापस करने के लिए किया जाता है जो तने हुए शब्दों की खोज क्वेरी से मेल खाते हैं।
- ट्रिग्राम आपको दो स्ट्रिंग्स की तुलना करने और यह निर्धारित करने के लिए कि वे कितने समान दिखते हैं, एक विधि प्रदान करते हैं।
निम्नलिखित उदाहरणों पर विचार करें:
SELECT 'cat' % 'cats'; --true
उपरोक्त सच है क्योंकि 'cat'
काफी हद तक 'cats'
. के समान है (जैसा कि pg_trgm सीमा द्वारा निर्धारित किया गया है)।
SELECT 'there is a cat with a dog' % 'cats'; --false
उपरोक्त रिटर्न false
क्योंकि %
cats
. शब्द की तलाश में नहीं, दो संपूर्ण स्ट्रिंग्स के बीच समान रूप से खोज रहा है भीतर स्ट्रिंग।
SELECT to_tsvector('there is a cat with a dog') @@ to_tsquery('cats'); --true
यह true
लौटाता है क्योंकि tsvector ने स्ट्रिंग को तने वाले शब्दों की सूची में बदल दिया और सामान्य शब्दों के एक समूह को अनदेखा कर दिया (शब्दों को रोकें - जैसे 'is' और 'a')... फिर cats
के तने वाले संस्करण की खोज की ।
ऐसा लगता है कि आप स्वतः-सुधार . के लिए ट्रिगर का उपयोग करना चाहते हैं आपका ts_query
लेकिन यह वास्तव में संभव नहीं है (वैसे भी किसी भी कुशल तरीके से नहीं)। वे वास्तव में जानते नहीं हैं एक शब्द गलत वर्तनी है, यह दूसरे शब्द के समान कैसे हो सकता है। वे कर सकते थे समान शब्दों को खोजने और खोजने के लिए शब्दों की एक तालिका खोजने के लिए इस्तेमाल किया जा सकता है, जिससे आप "क्या आपका मतलब ..." प्रकार की सुविधा को लागू कर सकते हैं, लेकिन इस शब्द के लिए एक अलग तालिका बनाए रखने की आवश्यकता है जिसमें आपके search
फ़ील्ड.
यदि आपके पास कुछ सामान्य रूप से गलत वर्तनी वाले शब्द/वाक्यांश हैं जो आप चाहते हैं कि टेक्स्ट-इंडेक्स का मिलान हो, तो आप पर्यायवाची शब्दकोश देखना चाहेंगे