paint-brush
Algolia और NodeJS के साथ एक खोज योग्य इंडेक्स बनाने की हमारी यात्राद्वारा@algolia
356 रीडिंग
356 रीडिंग

Algolia और NodeJS के साथ एक खोज योग्य इंडेक्स बनाने की हमारी यात्रा

द्वारा Algolia4m2023/04/11
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

मैंने Starschema Full Stack Engineer Soma Osvay के साथ मिलकर एक परियोजना के बारे में लिखा है जो मेरे दिल के करीब है: डेवलपर प्रलेखन। कार्यान्वयन विशिष्टताओं की जांच करने, कोड से विचार प्राप्त करने, और बहुत कुछ करने के लिए हमें विशिष्ट विषयों से संबंधित परियोजनाओं की खोज करने में सक्षम होना चाहिए। सोमा और मैं दोनों आशा करते हैं कि आप इस लेख का आनंद लेंगे जहां हम उपयोग-मामले और चुनौतियों को कवर करते हैं और कार्यान्वयन सोमा के साथ आया।
featured image - Algolia और NodeJS के साथ एक खोज योग्य इंडेक्स बनाने की हमारी यात्रा
Algolia HackerNoon profile picture

मैंने Starschema Full Stack Engineer Soma Osvay के साथ मिलकर एक परियोजना के बारे में लिखा है जो मेरे दिल के करीब है: डेवलपर प्रलेखन। सोमा और मैं दोनों आशा करते हैं कि आप इस लेख का आनंद लेंगे जहां हम उपयोग-मामले और चुनौतियों को कवर करते हैं और कार्यान्वयन सोमा के साथ आया।


यहां Starschema में, हमारे पास बहुत सारे प्रोजेक्ट हैं जिन्हें हमने मार्कडाउन डॉक्यूमेंटेशन के साथ परामर्श के हिस्से के रूप में किया है। जब हम इन मौजूदा समाधानों का समर्थन कर रहे हैं या एक नई परियोजना विकसित करना चाहते हैं, तो हम अक्सर सभी दस्तावेज़ों को खोजना चाहते हैं। वर्तमान में हमारे पास कोई समाधान नहीं है, हमें मानव-घंटे खर्च करने पड़ते हैं क्योंकि हमें यह काम मैन्युअल रूप से करना पड़ता है।

उदाहरण

कार्यान्वयन विशिष्टताओं की जांच करने, कोड से विचार प्राप्त करने, और बहुत कुछ करने के लिए हमें विशिष्ट विषयों से संबंधित परियोजनाओं की खोज करने में सक्षम होना चाहिए। सेल्स टीम को यह निर्धारित करने के लिए भी एक समाधान की आवश्यकता है कि हमारी टीम ने कुछ विषयों के लिए किस प्रकार की परियोजनाओं को पूरा किया है और संभावित ग्राहकों को जल्दी से वापस संवाद करने में सक्षम हो।


हमारे डेवलपर्स के लिए एक आंतरिक स्टैक ओवरफ्लो जैसा कुछ होना भी बहुत अच्छा होगा क्योंकि हम झांकी में बहुत से गहरे तकनीकी काम कर रहे हैं। परियोजना प्रबंधकों को यह निर्धारित करने में भी सक्षम होना चाहिए कि किन कर्मचारियों ने कुछ तकनीकों के साथ काम किया है ताकि वे सवालों के जवाब जल्दी और आसानी से प्राप्त कर सकें।


संक्षेप में, हमें निम्नलिखित विशेषताओं के आधार पर अपनी परियोजनाओं की खोज करने में सक्षम होना चाहिए:


  1. उपयोग की जाने वाली तकनीकें (कोडिंग भाषाएं, डेटाबेस, आदि)
  2. प्रोजेक्ट कीवर्ड (टैग)
  3. प्रोजेक्ट प्रलेखन स्वयं जैसे इंस्टॉल निर्देश, तकनीकी दस्तावेज इत्यादि।
  4. परियोजना कब हुई, इसकी समय सीमा


ये सभी विशेषताएँ आंतरिक प्रलेखन मार्कडाउन फ़ाइलों के भीतर मौजूद हैं - हमें उन्हें खोजने का एक तरीका चाहिए।

कार्यान्वयन योजना

अवधारणा के प्रमाण के रूप में NodeJS CLI का उपयोग करने की योजना है जो:


  1. शीर्ष GitHub सार्वजनिक रिपॉजिटरी को परिमार्जन करें और README मार्कडाउन फ़ाइल को पकड़ें (जो अंततः हमारी आंतरिक परियोजनाओं का प्रतिनिधित्व करेगी)
  2. परियोजना की बुनियादी जानकारी (शीर्षक, प्रोग्रामिंग भाषा (ओं), टैग, आदि) के साथ प्रलेखन फ़ाइलों को अल्गोलिया में संग्रहीत करता है।


सीएलआई में उपयोग में आसानी के लिए उन्नत लॉगिंग और कमांड लाइन तर्क होंगे। हम इसे वेब पर भी होस्ट करना चाहते हैं ताकि लोग इसे आजमा सकें।

चुनौती

हाथ में सबसे बड़ी चुनौती रिकॉर्ड आकार है - अल्गोलिया केवल हमारे रिकॉर्ड को अधिकतम 100KB होने की अनुमति देता है। हालाँकि, अधिकांश मार्कडाउन डॉक्यूमेंटेशन फाइलें बहुत बड़ी होती हैं। समाधान यह है कि हमें इंडेक्स के भीतर मार्कडाउन फ़ाइलों को कई टुकड़ों में विभाजित करने की आवश्यकता है। हमें यह भी सुनिश्चित करने की आवश्यकता है कि जब हम कुछ खोजते हैं, तो एक परियोजना केवल एक बार दिखाई देती है - भले ही वह कई रिकॉर्ड में विभाजित हो।


सौभाग्य से, अल्गोलिया की एक अलग विशेषता है इसलिए हम इन परिणामों को बहुत आसानी से डी-डुप्लिकेट कर सकते हैं।

इंडेक्सर कार्यान्वयन

इंडेक्सर का उपयोग जितना संभव हो उतना आसान बनाने के लिए, मैंने इसके लिए एक सीएलआई बनाने का विकल्प चुना जैसा कि ऊपर बताया गया है। आवश्यक तर्कों की आपूर्ति के बाद, उपकरण स्वचालित रूप से रिपॉजिटरी को इनिशियलाइज़ करेगा, किसी भी मौजूदा रिकॉर्ड को हटाएगा, और प्रासंगिकता सेटिंग्स को कॉन्फ़िगर करेगा।


टूल को पॉवर देना एक सीधा GitHub API है जो शीर्ष रिपॉजिटरी की अनुरोधित संख्या को पकड़ लेता है और उनके सभी मेटाडेटा को निकालता है और README फ़ाइल को डाउनलोड करता है। यह उन रिपॉजिटरी को भी फ़िल्टर करेगा जिनमें कोई स्वामी नहीं है या एक README फ़ाइल नहीं है, जिससे हमें सर्वोत्तम परिणाम मिलते हैं। अंत में, यह फ्रंटएंड में आसान रेंडरिंग के लिए मार्कडाउन कंटेंट को HTML में भी बदल देगा।


रिकॉर्ड आकार को नियंत्रण में रखने के लिए, टूल स्वचालित रूप से 50k वर्णों से अधिक रीडमे को अतिरिक्त रिकॉर्ड में विभाजित कर देगा। इस तरह रिकॉर्ड बहुत बड़े नहीं होंगे लेकिन एक रिकॉर्ड अभी भी लगभग सभी रिपॉजिटरी में काम करेगा। इसके बाद यह इस जानकारी को एक बार में अल्गोलिया 100 रिकॉर्ड में सिंक कर देगा ताकि हम उनकी बैचिंग सिफारिशों को पूरा कर सकें जैसा कि यहां प्रलेखन में वर्णित है।

दृश्यपटल कार्यान्वयन

अपने शुरुआती बिंदु के रूप में काम करने के लिए, मैंने अल्गोलिया द्वारा जारी create-instantsearch-app लाइब्रेरी का लाभ उठाया और एक InstantSearch.js बॉयलरप्लेट लॉन्च किया। यहां से, मैं पेजिनेशन और पृष्ठ आकार चयनकर्ता जैसे इंस्टेंटसर्च.जेएस द्वारा प्रदान किए गए अतिरिक्त विजेट जोड़ने में सक्षम था, जिसने बहुत अच्छा काम किया।


जैसा कि हमने मार्कडाउन के साथ रिपॉजिटरी मेटाडेटा भी एकत्र किया है, हमें इस अतिरिक्त जानकारी को शामिल करने के लिए हिट घटक को अनुकूलित करने की भी आवश्यकता है। अक्सर मेटाडेटा लाइब्रेरी विवरण जितना ही महत्वपूर्ण होता है, इसलिए डेवलपर्स एक नज़र में देख सकते हैं कि क्या यह एक लोकप्रिय लाइब्रेरी है, जिसने इसे जारी किया, टैग और बहुत कुछ। मैंने पहलुओं को भी जोड़ा ताकि उपयोगकर्ता प्रोग्रामिंग भाषा, टैग, या कितनी बार इसे फोर्क किया गया हो, फ़िल्टर कर सकें।


पहेली का अंतिम टुकड़ा 'ओपन डॉक्यूमेंटेशन' बटन जोड़ रहा था जिससे आप एप्लिकेशन को छोड़े बिना पॉप-अप में रिपॉजिटरी के लिए मार्कडाउन सामग्री को जल्दी और आसानी से पढ़ सकते हैं। यदि हम जिस रिकॉर्ड पर क्लिक कर रहे हैं, उसमें कई पंक्तियाँ हैं, तो यह स्वतः ही अतिरिक्त रिकॉर्ड लोड कर देगा और उन्हें डिस्प्ले में जोड़ देगा—भयानक!

निष्कर्ष

यह प्रोजेक्ट एक मजेदार परीक्षण था और वास्तव में मुझे दिखाया कि हमारे जैसे विभिन्न उपयोग के मामलों के लिए अल्गोलिया कितना लचीला है। रेडी-टू-गो विजेट्स ने प्रोटोटाइपिंग के दौरान मेरा बहुत समय बचाया और पहले कुछ कीस्ट्रोक्स से प्रासंगिक परिणाम प्राप्त करना सुपर प्रभावशाली है। मुझे यह भी लगता है कि यह बहुत दिलचस्प होगा अगर हम अल्गोलिया की सिफारिश की शक्ति का उपयोग करने में सक्षम थे यदि हम आंतरिक रूप से परियोजनाओं पर क्लिक करने वाले उपयोगकर्ताओं से पर्याप्त घटनाएँ उत्पन्न करने में सक्षम थे।


आप यहाँ GitHub टेस्ट प्रोजेक्ट का लाइव डेमो देख सकते हैं, एक बटन के साथ जो आपको हमारे इंडेक्स को देखने के लिए डिफ़ॉल्ट डेमो क्रेडेंशियल्स के साथ सेट करेगा। बैकएंड इंडेक्सिंग कोड में रुचि रखते हैं? आप इसे यहाँ GitHub पर पा सकते हैं!



यहाँ भी प्रकाशित हुआ।