/ / पोस्टग्रेस पूर्ण पाठ खोज: एकाधिक कॉलम, क्रॉस टेबल - पोस्टग्रेस्क्ल, पूर्ण-पाठ-खोज, tsvector

पोस्टग्रेस पूर्ण पाठ खोज: एकाधिक कॉलम, क्रॉस टेबल - पोस्टग्रेस्क्ल, पूर्ण-पाठ-खोज, tsvector

मैं पोस्टग्रेज़ में नया हूं और पूरी टेक्स्ट सर्च फीचर में आया हूं। मैं निम्नलिखित प्राप्त करना चाहता हूं:

  • खोजने के लिए कुछ टेबल और फ़ील्ड निर्दिष्ट करें।
  • जब उपयोगकर्ता कुछ पाठ की खोज करता है, तो इसे ऊपर निर्दिष्ट तालिका फ़ील्ड पर खोजा जाना चाहिए।

जैसे

CREATE TABLE customer (name text)
CREATE TABLE address (city text)

"राम" के लिए खोजें दोनों नाम "राम *" और शहर "राम *" ढूंढना चाहिए (अधिकतम 10 रिकॉर्ड हो सकते हैं)।

ओपन पॉइंट: रैंकिंग।

मैं समझता हूं कि यह स्ट्रैघफोर्ड नहीं हो सकता है, लेकिन यदि आप समान प्राप्त करने के लिए उदाहरण विवरण प्रदान कर सकते हैं?

उत्तर:

जवाब के लिए 3 № 1

यह काफी अच्छी तरह से कवर किया गया है पूर्ण-पाठ खोज पर PostgreSQL दस्तावेज़, जो कई स्तंभों को खोजने और उन्हें भारित करने के उदाहरण दिखाता है।

विशेष रूप से देखें पूर्ण-पाठ खोज को नियंत्रित करना तथा दस्तावेजों में हेरफेर करना। रैंकिंग भी ठीक है, में रैंकिंग खोज परिणाम.

आपने वास्तव में बहुत कुछ कहने के लिए पर्याप्त जानकारी प्रदान नहीं की है। कई टेबलों में खोज के लिए आप आमतौर पर चाहते हैं JOIN टेबल तब उन्हें पूछताछ करते हैं, या, सर्वोत्तम प्रदर्शन के लिए, एक ट्रिगर-बनाए रखा भौतिक दृश्य बनाएं जिसे आप अनुक्रमित कर सकते हैं और उसके बाद क्वेरी कर सकते हैं।

यदि टेबल स्वतंत्र और असंबंधित हैं, तो यह एक प्रश्न में उन्हें पूछने के लिए बहुत समझदारी नहीं करता है; आप आमतौर पर इसके लिए एकाधिक tsearch2 प्रश्नों का उपयोग करते हैं। मुझे लगता है कि यह संभव है कि आप कर सकते हैं UNION ALL क्वेरी परिणाम तब उन्हें रैंक करते हैं, लेकिन कोई गारंटी नहीं है कि रैंकिंग दो तालिकाओं के बीच सुसंगत रहेगी।