हमारे पास एक होस्ट किया गया एप्लिकेशन है जो सामग्री के पृष्ठों का प्रबंधन करता है। प्रत्येक पृष्ठ में कई अनुकूलित फ़ील्ड हो सकते हैं, और कुछ मानक फ़ील्ड (टाइमस्टैम्प, उपयोगकर्ता नाम, उपयोगकर्ता ईमेल इत्यादि) हो सकते हैं।कुशल फ़िल्टरिंग/खोज
सिस्टम का उपयोग कर संभावित रूप से सैकड़ों विभिन्न साइटों के साथ - फ़िल्टरिंग/खोज को संभालने का एक प्रभावी तरीका क्या है? एक ग्रिड व्यू को चित्रित करें जिसे आप संकुचित करना चाहते हैं। आप विशिष्ट फ़ील्ड (उपयोगकर्ता आईडी, दिनांक) पर फ़िल्टर कर सकते हैं या आप एक पूर्ण-पाठ खोज दर्ज कर सकते हैं।
उदाहरण के लिए, "उपयोगकर्ता आईडी 10 द्वारा शुरू किए गए सभी पृष्ठ" एक MySQL डेटाबेस के खिलाफ एक बहुत तेज़ क्वेरी होगी। लेकिन चीजें जैसे "सभी उपयोगकर्ता द्वारा शुरू किए गए सभी पृष्ठ जिनके उपयोगकर्ता आईडी 10 हैं और [कुछ खोज क्वेरी] मेल खाते हैं" डेटाबेस के खिलाफ चूसेंगे, इसलिए यह ल्यूसीन जैसे खोज इंजन के लिए उपयुक्त है।
असल में मैं सोच रहा हूं कि अन्य बड़ी साइटें इस तरह की चीज कैसे करती हैं। क्या वे सभी प्रकार के फ़िल्टरिंग के लिए 100% खोज इंजन का उपयोग करते हैं? क्या वे एक खोज इंजन के साथ डेटाबेस क्वेरीज मिश्रण करते हैं?
यदि हम केवल एक खोज इंजन का उपयोग करते हैं, तो खोज सूचकांक में एक नई/अद्यतन ऑब्जेक्ट में दिखाई देने में देरी के समय में कोई समस्या है। यही है, मैंने पढ़ा है कि सूचकांक तुरंत अद्यतन करने के लिए स्मार्ट नहीं है, और इसके बजाय बैचों में ऐसा करने के लिए। यहां तक कि यदि हर 5 मिनट का मतलब है, तो उपयोगकर्ता भ्रमित हो जाएंगे जब हाल ही में जोड़ा गया पृष्ठ तत्काल सूचीबद्ध नहीं होता है जब वे एक साधारण पृष्ठ सूची देखते हैं ("श्रेणी: 5" की खोज क्वेरी कहें)।
हम MySQL का उपयोग कर रहे हैं और खोज के लिए लुसेन में बारीकी से देख रहे हैं। क्या कोई और तकनीक है जिसके बारे में मुझे नहीं पता?
मेरा विचार एक साधारण फ़िल्टरिंग पृष्ठ प्रदान करना है जो मूल फ़ील्ड पर फ़िल्टर करने के लिए MySQL का उपयोग करता है। फिर एक अलग पूर्ण टेक्स्ट खोज पृष्ठ प्रदान करें जो Google के समान परिणाम प्रस्तुत करेगा। क्या यह एकमात्र तरीका है?