यह एक बहुत ही सरल सवाल हो सकता है, इसलिए अग्रिम माफ़ी, लेकिन मैं डेटाबेस उपयोग के लिए बहुत नया हूं।पोस्टग्रेस एकाधिक संबंधित तालिकाओं में पूर्ण पाठ खोज
मैं पोस्टग्रेज़ को एकाधिक जुड़ाव तालिकाओं में अपनी पूर्ण पाठ खोज चलाने की इच्छा रखता हूं। मॉडल मॉडल की तरह कुछ कल्पना करें, संबंधित मॉडल UserProfile और UserInfo के साथ। खोज केवल उपयोगकर्ताओं के लिए होगी, लेकिन इसमें UserProfile और UserInfo से जानकारी शामिल होगी।
मैं खोज के लिए एक जीन इंडेक्स का उपयोग करने की योजना बना रहा हूं। हालांकि, मैं स्पष्ट नहीं हूं कि क्या मुझे तालिका तालिका में समेकित tsvectors को पकड़ने के लिए उपयोगकर्ता तालिका में एक अलग tsvector कॉलम की आवश्यकता होगी, और इसे अद्यतित रखने के लिए ट्रिगर सेट अप करने के लिए। या यदि एक tsvector कॉलम के बिना एक इंडेक्स बनाना संभव है जो किसी भी प्रासंगिक तालिका में किसी भी प्रासंगिक फ़ील्ड में बदलते समय भी खुद को अद्यतित रखेगा। इसके अलावा, यह सब कुछ बनाने के लिए कमांड के सिंटैक्स पर कोई सुझाव भी बहुत सराहना की जाएगी।
क्या आप पढ़ सकते हैं कि कैसे पढ़ा गया प्रश्न काम करेगा? मैं कई तालिकाओं में postgresql पूर्ण-पाठ खोज करने के सर्वोत्तम तरीके पर दस्तावेज़ ढूंढने का प्रयास कर रहा हूं और मुझे बहुत कुछ नहीं मिल रहा है। एक समस्या में मैंने भाग लिया कि अगर मैं उन सभी तालिकाओं पर एक इंडेक्स सेट करता हूं जो मैं पूछताछ कर रहा था, तो पोस्टग्रेस्क्ल एक क्वेरी करते समय सभी इंडेक्स का उपयोग करने में सक्षम नहीं था। पसंद करें: उपयोगकर्ताओं पर शामिल बाएं आदेशों से * चुनें * ... line_items पर शामिल हों ... जहां ts_vector ('english', order.id) @@ ... या ts_vector ('english', users.name) @@। .. –
मैं यह भी देखता हूं कि दो तालिकाओं में खोजी जाने वाली क्वेरी अनुक्रमिक स्कैन करती है ('SELECT COUNT (*) उत्पादों से जहां Itsvector (' simple ', products.name::text) @@ to_tsquery (' simple ',' foo ':: टेक्स्ट);'), जबकि एक टेबल खोजने वाली क्वेरी केवल इंडेक्स का उपयोग करके बिटमैप इंडेक्स स्कैन करती है (उत्पादों से 'चुनें COUNT (*) उत्पादों पर ब्रांडों में शामिल हों .brand_id = brand.id जहां to_tsvector (' simple ' , products.name::text) @@ to_tsquery ('simple', 'foo' :: text) या to_tsvector ('simple', brand.name::text) @@ to_tsquery ('simple', 'foo' :: पाठ); ')। – wvengen