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

मकड़ी
कैसे समझें कि स्पाइडर कितनी अच्छी तरह काम करता है? पहली मीट्रिक, हमने देखी गई साइटों का कितना प्रतिशत है। दूसरा मीट्रिक है कि हम कितनी जल्दी बदलावों को नोटिस कर सकते हैं।
Runet:
- डाउनलोड करने वाले सर्वर: 300;
- लोड: प्रति सेकंड 20,000 दस्तावेज;
- ट्रैफ़िक: 400 एमबी / एस (3200 एमबी / एस)।
सभी एक साथ:
- डाउनलोड करने वाले सर्वर: 700;
- लोड: प्रति सेकंड 35,000 दस्तावेज;
- यातायात: 700 एमबी / एस (5600 एमबी / एस)।
यदि पूरा स्पाइडर अपने सभी सर्वरों के साथ एक साइट डाउनलोड करना शुरू कर देता है, तो यह काफी शक्तिशाली DDoS हमले का उत्पादन करेगा। ऐसी स्थितियों को रोकने के लिए, ज़ोरा घटक प्रदान किया जाता है। वह डाउनलोड का समन्वय करता है, जानता है कि हाल ही में किन साइटों को कैश किया गया है, और निकट भविष्य में किन लोगों को जाना चाहिए।

मकड़ी को विभिन्न बिंदुओं से पृष्ठ को देखने में सक्षम होना चाहिए ताकि यह सुनिश्चित हो सके कि उदाहरण के लिए, रूस से और संयुक्त राज्य अमेरिका से पृष्ठ समान दिखते हैं। यदि अलग-अलग क्षेत्रों के लिए अलग-अलग पृष्ठ जारी किए जाते हैं, तो उसे इस जानकारी को ध्यान में रखना चाहिए।
रोबोट
स्पाइडर द्वारा डाउनलोड किए गए पृष्ठ एक रोबोट पर जाते हैं जो उन्हें संसाधित करता है और उन्हें खोज योग्य बनाता है। सबसे पहले, सभी HTML मार्कअप को हटा दिया जाता है, महत्वपूर्ण क्षेत्रों का निर्धारण किया जाता है।
रोबोट में तीन घटक होते हैं। सबसे पहले, यह MapReduce वितरित कंप्यूटिंग प्रणाली है, जो आपको स्पाइडर द्वारा पंप किए गए प्रत्येक दस्तावेज़ के गुणों की गणना करने की अनुमति देता है। दूसरा घटक सर्वरों का एक समूह है जो खोज अनुक्रमित का निर्माण करता है। खैर, तीसरा घटक एक संग्रह है जिसमें खोज आधार के कई संस्करण हैं।

हमने दस्तावेज़ के गुणों का उल्लेख किया है। इस अवधारणा से हमारा क्या अभिप्राय है? मान लीजिए कि हमने एक html फ़ाइल डाउनलोड की है, और हमें इसकी सामग्री के बारे में अधिक से अधिक डेटा एकत्र करने की आवश्यकता है। MapReduce गणना करता है और दस्तावेज़ को लेबल करता है, जिसे बाद में रैंकिंग कारकों के रूप में उपयोग किया जाएगा: दस्तावेज़ भाषा, विषय, वाणिज्यिक अभिविन्यास, आदि।
दो प्रकार के कारक हैं: तेज और धीमा। धीमे कारकों को एक बार गिना जाता है और विशेष रूप से दस्तावेज़ को सौंपा जाता है। क्विक की गणना दस्तावेज़ के लिए खोज क्वेरी के साथ की जाती है।
यहां तक कि अगर आप MapReduce सर्वर को ध्यान में नहीं रखते हैं (उनका उपयोग अन्य कार्यों के लिए किया जा सकता है), रोबोट दो हजार से अधिक सर्वरों का प्रतिनिधित्व करता है।
रूसी आधार:
- क्लस्टर कंप्यूटिंग कारक: 650;
- कुकिंग सर्च बेस: 169;
- टेस्ट सर्वर: 878;
- संग्रह: १ 17२।
विश्व आधार:
- क्लस्टर कंप्यूटिंग कारक: 301;
- कुकिंग सर्च बेस: 120;
- टेस्ट सर्वर: ???;
- संग्रह: ६०।
डेटाबेस में लगभग 25 बिलियन डॉक्यूमेंट (214 टीबी) हैं, सप्ताह में दो बार इसे पूरी तरह से रिकॉल किया जाता है।
इंडेक्स डिवाइस खोजें
मान लें कि हमारे पास तीन बहुत ही सरल दस्तावेज़ हैं जिनमें ग्रंथ हैं:
- माँ ने फ्रेम धोया
- मास्को में फ्रेम खरीदने के लिए
- माताओं के लिए मॉस्को
किसी भी अनुरोध के आने पर, इन सभी दस्तावेजों को देखने के लिए अप्रभावी होना, इसमें निहित शब्दों की खोज में। इसलिए, एक उलटा सूचकांक बनाया जाता है: हम तीन दस्तावेजों (शब्द रूपों को छोड़कर) से सभी शब्दों को लिखते हैं और इंगित करते हैं कि वे कहां होते हैं।
माँ (1, 3)
धो (1)
फ़्रेम (1, 2)
मास्को (2, 3)
खरीदें (2)
में (2)
(3) के लिए
अब यदि हमें एक खोज क्वेरी [मॉम] मिलती है, तो हमारे पास पहले से ही तैयार उत्तर होगा। यह पता लगाने के लिए हमारे लिए पर्याप्त होगा कि यह शब्द किस दस्तावेज़ में पाया गया है। यदि क्वेरी में एक से अधिक शब्द हैं (उदाहरण के लिए, [मां मास्को]), तो उसी तालिका में रोबोट उन दस्तावेज़ों को खोजने में सक्षम होगा जिनमें ये दोनों शब्द पाए जाते हैं। हमारे मामले में, यह तीसरा दस्तावेज है।
जैसा कि हमने पहले ही कहा, हमारे वास्तविक खोज सूचकांक का आकार 214 टीबी है। खोज के लिए पर्याप्त गति और दक्षता के साथ काम करने के लिए, यह सारा डेटा रैम में संग्रहित होना चाहिए। अब हमारे पास 24 से 128 जीबी मेमोरी वाले सर्वर स्थापित हैं। अनुकूलन के लिए, हम खोज बेस को डैश (अंग्रेज़ी टीयर - स्तर से) में विभाजित करते हैं। उनकी मदद से, हम भाषा और अन्य विशेषताओं द्वारा दस्तावेजों को साझा करते हैं। इसलिए, जब हम रूसी में अनुरोध प्राप्त करते हैं, तो हमारे पास केवल प्रासंगिक दस्तावेजों पर खोज करने का अवसर होता है। ऐसी एक दर्जन से अधिक शूटिंग गैलरी हैं। डैश को 32 गीगाबाइट के हिस्से में बांटा गया है: एक भौतिक मशीन की मेमोरी में डेटा की मात्रा। अब हमारे पास लगभग 6,700 शार्क हैं।
अनुरोध के साथ काम करें
Yandex के लिए खोज क्वेरी का प्रवाह प्रति सेकंड 36,000 हिट तक पहुंच सकता है। बस ऐसे यातायात को प्राप्त करना एक गंभीर कार्य है। इसे हल करने के लिए, संतुलन के कई स्तर प्रदान किए जाते हैं। पहला स्तर डीएनएस है। L3 बैलेंसर पैकेट के वितरण के लिए जिम्मेदार है, और http बैलेंसर उनकी सामग्री को संसाधित करने के लिए जिम्मेदार है। सबसे पहले, रोबोट से अनुरोध काट दिया जाता है। फिर टाइपोस को ठीक किया जाता है और अनुरोध का विश्लेषण किया जाता है। परिणाम एक "क्वेरी ट्री" है जिसमें क्वेरी और संभावित अर्थों के संभावित वर्तनी शामिल हैं। इस सभी प्रसंस्करण के बाद, अनुरोध सामने के छोर पर भेजा जाता है, और खोज सीधे शुरू होती है। डेटाबेस में निहित सभी दस्तावेजों में मुख्य खोज के अलावा, कुछ निश्चित मापदंडों के साथ कई और छोटी खोजें हैं। उदाहरण के लिए, चित्र, वीडियो, पोस्टर आदि से। यदि इन खोजों से प्रासंगिक परिणाम मिलते हैं, तो उन्हें मुख्य खोज परिणामों में मिलाया जाएगा।
