यहां एक प्रश्न के बाद पोस्ट किया गया है कि मैं अपने SQL खोज विधियों में से एक पर गति कैसे बढ़ा सकता हूं, मुझे सलाह दी गई थी कि पूर्ण टेक्स्ट खोज का उपयोग करने के लिए मेरी तालिका अपडेट करें। तेजी से खोज करने के लिए जिस्ट इंडेक्स का उपयोग करके मैंने यह किया है। कुछ "सादा" प्रश्नों पर मैंने एक उल्लेखनीय वृद्धि देखी है जिसे मैं बहुत खुश हूं।PostgreSQL: पूर्ण पाठ खोज - आंशिक शब्दों को कैसे खोजें?
हालांकि, मुझे आंशिक शब्दों की खोज में कठिनाई हो रही है। उदाहरण के लिए मेरे पास कई रिकॉर्ड हैं जिनमें स्क्वायर शब्द (454) है और मेरे पास कई रिकॉर्ड हैं जिनमें गिलहरी (173) शामिल हैं। अब अगर मैं स्क्वायर की खोज करता हूं तो यह केवल 454 रिकॉर्ड लौटाता है लेकिन मैं यह भी चाहता हूं कि यह गिलहरी रिकॉर्ड भी वापस कर दे।
मेरे क्वेरी इस
SELECT title
FROM movies
WHERE vectors @@ to_tsoquery('squire');
मैंने सोचा कि मैं to_tsquery('squire%')
कर सकता है की तरह लग रहा है, लेकिन वह काम नहीं करता।
आंशिक मिलान खोजने के लिए मैं इसे कैसे प्राप्त करूं?
इसके अलावा, मेरे डेटाबेस में मेरे पास रिकॉर्ड हैं जो फिल्में और अन्य टीवी शो हैं। इन्हें नाम से अलग किया जाता है, इसलिए "मुनस्टर" एक टीवी शो है, जबकि मुन्स्टर शो की फिल्म है। मैं जो करने में सक्षम होना चाहता हूं वह सिर्फ टीवी शो और सिर्फ फिल्मों की तलाश है। इस पर कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं?
सादर Anthoni
यदि आपके पास सर्चकी 'स्क्वायर' है लेकिन परिणाम' गिलहरी 'प्राप्त करना चाहते हैं, तो आपको अतिरिक्त बाधाएं निर्दिष्ट करनी पड़ सकती हैं। क्योंकि अन्यथा कोई तर्क दे सकता है कि उनके पास खोज कुंजी 'माँ' थी लेकिन परिणाम 'खरगोश' चाहता था। तो शायद आप अपनी खोज कुंजी को टुकड़ा करना चाहें और 'squire' को 's' में बदलना चाहें वर्ग | एसएल | स्की | स्क्वायर | squire' ... यह या fancier एल्गोरिदम आपको 'गिलहरी' मिल जाएगा।मुझे लगता है कि @ जोशुआ बर्न्स के जवाब में मेरे मुकाबले एक सामान्य जेनेरिक समाधान है, यदि आप सामान्य होना चाहते हैं। –