पूर्ण पाठ खोज भाग 1: MongoDB पूर्ण और आंशिक पाठ खोज कैसे बनाएँ

प्रस्तावना:

मैं उस एप्लिकेशन पर काम कर रहा हूं जहां खोज की आवश्यकता है। यह खोज अटैचमेंट के लिए है। कई उपयोगकर्ता वेबसाइट पर जाते हैं उप फ़ोल्डर के साथ फ़ोल्डर संरचना बनाते हैं और दस्तावेज़ अपलोड करते हैं। ये दस्तावेज़ आम तौर पर Microsoft दस्तावेज़, डॉक्स, xlsx, xls, .csv और पीडीएफ। मैं नोड एप्लिकेशन का उपयोग करके AWS S3 बाल्टी पर सहेजने के लिए दस्तावेज़ को आर्किटेक्ट करता हूं। उसी समय जब पाठक S3 बाल्टी पर लिख रहे हैं हम सामग्री को पढ़ रहे हैं और इसे MongoDB में सहेज रहे हैं। लिफाफे एन्क्रिप्शन का उपयोग करके दस्तावेज S3 बाल्टी में सुरक्षित हैं। मैंने पहले ही इस लिंक में s3 बाल्टी में एन्क्रिप्टेड फ़ाइल अपलोड करने के लिए एक लेख लिखा है।

यह लेख अनुक्रमण पर आधारित MongoDB पूर्ण पाठ खोज के बारे में है। यह लोचदार खोज, रेडिस आधारित खोज या अमेज़ॅन क्लाउड खोज के बारे में नहीं है। यह खोज साधारण अनुप्रयोगों के लिए हल्के वजन की खोज है। यह खोज खोज जैसे अनुक्रमण और SQL पर बहुत अधिक निर्भर है। यह खोज खोज इंजन अनुकूलन या वेब क्रॉलिंग आदि सुविधाओं का उपयोग नहीं करती है। Redis खोज के लिए पूर्ण पाठ खोज भाग 2 देखें।

उपयोग की जाने वाली सुविधाएँ:

  1. MongoDB के रूप में नवीनतम संस्करण पाठ सामग्री पर खोजों द्वारा चित्रित पाठ खोज प्रदान करते हैं।
  2. टेक्स्ट सामग्री पर समर्थन केस असंवेदनशील खोज।
  3. स्टॉप-शब्द खोज प्रदान करें अर्थात और, या। साथ ही भाषा आधारित स्टेमिंग नियम प्रदान करते हैं। यानी तर्क, तर्क, तर्क, और तर्क से स्टेम तर्क।
  4. समान ध्वनि वाले शब्द खोजें अर्थात LEONARD, LEON आदि।
  5. स्कोर के आधार पर रैंक खोजें। स्कोर शब्द और कई अन्य कारकों की आवृत्ति के आधार पर कुछ एल्गोरिथ्म पर आधारित है।
  6. Mongoose में स्वत: पूर्ण स्मृति के लिए इस लिंक का उपयोग करें।

अनुक्रमण बनाएँ:

मूंगोज स्कीमा में इंडेक्सिंग बनाएं। यहाँ मैं एक सरल फ़ाइल बना रहा हूँकंट्सचेम, जो फ़ाइल सामग्री, फ़ाइल मेटाडेटा को संग्रहीत कर रहा है और फिर मेटाडाटा और सामग्री पर अनुक्रमण बना रहा है।

यदि आप खोजों में सभी स्ट्रिंग को शामिल करना चाहते हैं तो वाइल्डकार्ड खोज बनाएं जो '$ **' है

fileContentSchema.index ({'$ **': 'पाठ'});

API खोजें:

स्कीमा और इंडेक्सिंग तैयार होने के बाद, एपीआई में मॉडल और आयात मॉडल बनाएं। हमने फ़ाइलकंटेंट्स मॉडल बनाया और एपीआई को निर्यात किया। अब खोजने के साथ मॉडल खोजें। $ या खोज मापदंडों की सरणी ले जाएगा। अंत में टेक्स्टस्कोर के आधार पर क्वेरी को क्रमबद्ध करें।

वाइल्डकार्ड खोज एपीआई इस तरह किया जा सकता है:

fileContents.find ({$ text: {$ खोज: request.searchtext}}) .skip (20) .limit (10) .exec (फ़ंक्शन (इरेट, डेटा) {।
// यहां प्रतिक्रिया भेजें
});

एक महत्वपूर्ण विधि की व्याख्या की जाती है, यदि क्रमबद्ध () के साथ जंजीर होती है तो यह बताती है कि खोज कैसे की जाती है।

.explain (सही)

लागत, कमियां और प्रदर्शन:

  • पूर्ण पाठ खोजें MongoDB दुनिया में नई हैं और धीरे-धीरे बहुत बेहतर तरीके से विकसित हो रही हैं।
  • पूर्ण पाठ खोज अनुक्रमित पर आधारित होती हैं जो स्वयं लागत के साथ आती हैं। जब हम नया दस्तावेज़ जोड़ते हैं, तो अनुक्रमणिका पुनर्व्यवस्थित होती है।
  • पूर्ण पाठ खोजों में हाल की खोजों को कैश नहीं किया जाता है, अर्थात रेडिस में यह खोज को कैश करता है और डेटा का बेहतर प्रदर्शन और उपलब्धता प्रदान करता है।

समेट रहा हु:

इस लेख में हमने परिदृश्य और MongoDB खोज की आवश्यकता को देखा है। हमने देखा कि कैसे मैंगोज़ स्कीमा बनाया जाए और सामग्री को अनुक्रमित किया जाए। हमने $ टेक्स्ट का उपयोग करके खोज के साथ एपीआई भी बनाया है। हमने वाइल्डकार्ड खोजों और सूचकांक खोज की कमियों को भी देखा है। भाग में हम Redis के साथ पूर्ण पाठ खोज को कवर करेंगे। Redis पूर्ण पाठ खोज करने के लिए बहुत तेज़ मॉड्यूल प्रदान करता है।

मैंने संदर्भों को संलग्न किया है, मैंने उन बिंदुओं को कवर करने की कोशिश की है जो इन प्रलेखन में बहुत स्पष्ट नहीं हैं।

संदर्भ:

यह सभी देखें

मैं एक वेबसाइट कैसे बना सकता हूं जो बाजार के रूप में काम करती है? Html & CSS की तुलना में JavaScript इतनी कठिन क्यों है? जब मैं इसे समझने में असमर्थ हूं तो मैं इसे कैसे सीख सकता हूं?जब आपकी वेबसाइट पे पेनल्टी लग जाती है तो मैं SEO में कैसे प्रदर्शन कर सकता हूँ? rr में स्पेनिश का उच्चारण कैसे करेंमैं अपनी कंपनी के लिए एक वेबसाइट कैसे बनाऊं जिसमें एक ई-कॉमर्स साइट, उद्योग के विशिष्ट विचारों के लिए एक सामाजिक साइट और कंपनी की सामान्य जानकारी शामिल हो? हमारे पास वस्तुतः इसके लिए कोई बजट नहीं है, इसलिए इसे सस्ता होना चाहिए।वेब विकास (CSS, HTML, जावास्क्रिप्ट) सीखने के बारे में कैसे जाना चाहिए? ऑनलाइन पाठ्यक्रम क्या उपलब्ध हैं?.Com डोमेन नाम कितना है? यदि आप प्रोग्रामिंग (सी, सी ++, बेसिक जावा, सीएसएस) में मध्यम ज्ञान रखते हैं तो आप ऐप के विकास में कितनी तेजी से आगे बढ़ सकते हैं?