एक तथ्य यह है कि मैंने अजीब पाया है कि Google वास्तव में जैव सूचना विज्ञान द्वारा संचालित है ('का, मुझे लगता है कि क्योंकि मैं एक जीविका हूँ ... अजीब बात है)। मुझे समझाने दो।
जैव सूचना विज्ञान की शुरुआत में बहुत तेजी से छोटे ग्रंथों को खोजने की चुनौती थी। हमारे लिए, "विशाल स्ट्रिंग" निश्चित रूप से डीएनए है। अक्सर एक डीएनए नहीं बल्कि विभिन्न प्रजातियों / व्यक्तियों के कई डीएनए का एक डेटाबेस। छोटे ग्रंथ प्रोटीन या उनके आनुवंशिक समकक्ष, एक जीन हैं। जीन के बीच समरूपता खोजने के लिए कम्प्यूटेशनल जीवविज्ञानी के पहले काम का अधिकांश हिस्सा प्रतिबंधित था। यह पहले से ही ज्ञात जीनों की समानता को ध्यान में रखते हुए नए पाए गए जीनों के कार्य को स्थापित करने के लिए किया जाता है।
अब, ये डीएनए स्ट्रिंग्स वास्तव में बहुत बड़ी हो जाती हैं और (हानिपूर्ण!) खोज बेहद कुशलता से करनी पड़ती है। स्ट्रिंग लुकअप के अधिकांश आधुनिक सिद्धांत इस प्रकार कम्प्यूटेशनल जीव विज्ञान के संदर्भ में विकसित किए गए थे।
हालांकि, कुछ समय पहले, पारंपरिक पाठ खोज समाप्त हो गई थी। एक नए दृष्टिकोण की आवश्यकता थी, जो कि प्रत्येक एकल चरित्र को देखे बिना, उदासीन समय में बड़े तारों की खोज करने की अनुमति देता है। यह पता चला कि यह बड़े स्ट्रिंग को पूर्व-प्रसंस्करण करके और इसके ऊपर एक विशेष सूचकांक डेटा संरचना का निर्माण करके हल किया जा सकता है। ऐसे कई अलग-अलग डेटा संरचनाओं का प्रस्ताव किया गया है। प्रत्येक की अपनी ताकत और कमजोरियां हैं, लेकिन एक ऐसा है जो विशेष रूप से उल्लेखनीय है क्योंकि यह निरंतर समय में देखने की अनुमति देता है। अब, परिमाण के क्रम में, जिसमें Google इसे संचालित करता है, अब कड़ाई से सच नहीं है क्योंकि सर्वर, प्रीप्रोसेसिंग और कुछ अन्य परिष्कृत सामानों में लोड संतुलन को ध्यान में रखा जाना चाहिए।
लेकिन संक्षेप में, तथाकथित q-gram index निरंतर समय में देखने की अनुमति देता है। एकमात्र नुकसान: डेटा संरचना हास्यास्पद रूप से बड़ी हो जाती है। मूल रूप से, क्ष वर्णों (इसलिए नाम) के साथ तार की खोज के लिए अनुमति देने के लिए , इसमें एक तालिका की आवश्यकता होती है जिसमें q अक्षरों के प्रत्येक संभावित संयोजन के लिए एक क्षेत्र होता है (यानी, q S , जहां S वर्णमाला के आकार का होता है। , 36 (= 26 + 10) कहते हैं। इसके अतिरिक्त, स्ट्रिंग में प्रत्येक अक्षर की स्थिति के लिए एक फ़ील्ड होना चाहिए जो अनुक्रमित किया गया था (या प्रत्येक वेब साइट के लिए Google के मामले में)।
सरासर आकार को कम करने के लिए, Google संभवतः कई सूचकांकों का उपयोग करेगा (वास्तव में, वे करते हैं , वर्तनी सुधार जैसी सेवाओं की पेशकश करने के लिए)। सर्वोच्च व्यक्ति चरित्र स्तर पर नहीं बल्कि शब्द स्तर पर काम करेंगे। इससे q कम हो जाता है लेकिन यह S को असीम रूप से बड़ा बनाता है इसलिए उन्हें विभिन्न शब्दों की अनंत संख्या का सामना करने के लिए हैशिंग और टकराव तालिकाओं का उपयोग करना होगा।
अगले स्तर पर, ये हैशेड शब्द अन्य सूचकांक डेटा संरचनाओं की ओर इशारा करेंगे, जो बदले में, वेबसाइटों को इंगित करने वाले हैश वर्ण होंगे।
लंबी कहानी छोटी, ये q -ग्राम सूचकांक डेटा संरचनाएं यकीनन Google के खोज एल्गोरिदम का सबसे केंद्रीय हिस्सा हैं। दुर्भाग्य से, कोई अच्छा गैर-तकनीकी पेपर नहीं है जो यह बताता है कि q -gram indices कैसे काम करता है। एकमात्र प्रकाशन जो मुझे पता है कि इस तरह का एक सूचकांक कैसे काम करता है, इसका वर्णन है ... अफसोस, मेरे स्नातक थीसिस ।