मुख्य सामग्री पर जाएं

RDocumentation: स्कोरिंग और रैंकिंग

जानें कि RDocumentation पर खोज परिणाम कैसे तैयार किए जाते हैं!
अपडेट किया गया 25 सित॰ 2026  · 7 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

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

आज की टेक्निकल ब्लॉग पोस्ट में, हम उन तकनीकों और तरीकों पर प्रकाश डालेंगे जिनका उपयोग हम अपने उपयोगकर्ताओं को प्रासंगिक और अर्थपूर्ण परिणाम देने के लिए करते हैं।

Elasticsearch

RDocumentation.org, सभी R पैकेजों और टॉपिक्स को इंडेक्स करने और उनमें खोज करने के लिए Elasticsearch का उपयोग करता है।

Elasticsearch एक ओपन-सोर्स, स्केलेबल, वितरित, एंटरप्राइज़-ग्रेड सर्च इंजन है।

Elasticsearch दस्तावेज़ों पर क्वेरी करने के लिए उपयुक्त है क्योंकि यह पारंपरिक SQL डेटा का उपयोग नहीं करता, बल्कि दस्तावेज़ों को JSON-जैसी डेटा संरचना में संग्रहीत करता है। प्रत्येक दस्तावेज़ बस कुंजी-मूल्य जोड़ियों का एक सेट होता है, जिनमें सरल डेटा प्रकार होते हैं (स्ट्रिंग्स, नंबर, सूचियाँ, दिनांक, …)। इसकी वितरित प्रकृति Elasticsearch को अत्यंत तेज़ बनाती है।

एक Elasticsearch क्लस्टर में कई इंडेक्स हो सकते हैं और प्रत्येक इंडेक्स में कई दस्तावेज़ प्रकार हो सकते हैं। एक दस्तावेज़ प्रकार बस यह बताता है कि दस्तावेज़ की संरचना कैसी दिखनी चाहिए। Elasticsearch प्रकारों के बारे में अधिक जानने के लिए, आप elastic.co की गाइड देख सकते हैं।

RDocumentation.org तीन अलग-अलग प्रकारों का उपयोग करता है: package_version, topic, और package। पहले 2 मुख्य हैं; package पर हम बाद में चर्चा करेंगे।

क्योंकि RDocumentation.org ओपन-सोर्स है, आप हमारे github रिपो में Elasticsearch के मैपिंग्स देख सकते हैं। 

package_version प्रकार

package_version प्रकार किसी पैकेज की DESCRIPTION फ़ाइल का मानो अनुवाद है; इसमें वहाँ मिलने वाले मुख्य फ़ील्ड होते हैं: package_name, version, title, description, release_date, license, url, copyright, created_at, updated_at, latest_version, maintainer और collaborators। maintainer और collaborators को DESCRIPTION फ़ाइल के Authors फ़ील्ड से निकाला जाता है।

topic प्रकार

टॉपिक दस्तावेज़, R की मानक डाक्यूमेंटेशन फ़ॉर्मेट Rd फ़ाइलों से पार्स किए जाते हैं। topic प्रकार में निम्नलिखित कुंजियाँ होती हैं: name, title, description, usage, details, value, references, note, author, seealso, examples, created_at, updated_at, sections, aliases और keywords।

Elasticsearch में स्कोरिंग

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

हालाँकि, मिलान का अर्थ यह नहीं है कि दस्तावेज़ प्रासंगिक भी है; वही शब्द अलग संदर्भों में अलग अर्थ रख सकता है। क्वेरी सेटिंग्स के आधार पर, हम प्रकार और फ़ील्ड द्वारा फ़िल्टर कर सकते हैं और अधिक संदर्भात्मक जानकारी शामिल कर सकते हैं। यह संदर्भात्मक जानकारी प्रासंगिकता में सुधार करेगी और यहीं स्कोरिंग काम आती है।

Elasticsearch भीतर-ही-भीतर Lucene का उपयोग करता है, इसलिए स्कोरिंग Lucene के Practical Scoring Function पर आधारित है, जो TF-IDF, Vector Space Model और Boolean Model जैसे कुछ मॉडलों को साथ लाकर दस्तावेज़ का स्कोर निर्धारित करता है।

यदि आप सीखना चाहते हैं कि यह फ़ंक्शन Elasticsearch में कैसे उपयोग होता है, तो आप elastic.co गाइड का यह सेक्शन देख सकते हैं।

प्रासंगिकता बढ़ाने का एक तरीका है कुछ फ़ील्ड्स को बूस्ट करना। उदाहरण के लिए, RDocumentation.org की फुल सर्च में, हम स्वाभाविक रूप से पैकेजों के लिए package_name और title जैसे फ़ील्ड्स को, और टॉपिक्स के लिए aliases और name को बूस्ट करते हैं।

लोकप्रिय दस्तावेज़ों को बूस्ट करना

प्रासंगिकता सुधारने का एक और प्रभावी तरीका है लोकप्रियता के आधार पर दस्तावेज़ों को बूस्ट करना। इसके पीछे विचार यह है कि यदि कोई पैकेज अधिक लोकप्रिय है, तो उपयोगकर्ता संभवतः उसी पैकेज को खोज रहा होगा। पहले अधिक लोकप्रिय पैकेज दिखाने से यह संभावना बढ़ती है कि हम वही दिखाएँ जो उपयोगकर्ता वास्तव में ढूंढ रहा है।

लोकप्रियता मापने के लिए डाउनलोड्स का उपयोग

लोकप्रियता मापने के कई तरीके हैं। हम प्रत्यक्ष उपायों का उपयोग कर सकते हैं जैसे उपयोगकर्ताओं द्वारा दिए गए वोट या रैंकिंग (जैसे Amazon उत्पादों पर रेटिंग), या अप्रत्यक्ष उपाय जैसे बिके हुए आइटमों की संख्या या व्यूज़ की संख्या (YouTube वीडियो के लिए)।

RDocumentation.org पर, हमने दूसरा तरीका चुना। विशेष रूप से, हम लोकप्रियता के माप के रूप में डाउनलोड्स की संख्या का उपयोग करते हैं। अप्रत्यक्ष उपाय सामान्यतः एकत्र करना आसान होता है क्योंकि इनमें सक्रिय उपयोगकर्ता इनपुट की आवश्यकता नहीं पड़ती।

समय-सीमा निर्धारण

डाउनलोड्स की संख्या का उपयोग करते समय एक समस्या यह आती है कि पुराने पैकेज स्वाभाविक रूप से नए पैकेजों की तुलना में कुल मिलाकर अधिक डाउनलोड्स पाएँगे। इसका मतलब यह नहीं है कि वे अधिक लोकप्रिय हैं; वे बस अधिक समय से मौजूद हैं। क्या हो यदि कोई पैकेज सालों पहले बहुत लोकप्रिय था, लेकिन अब अप्रचलित हो चुका है और समुदाय द्वारा सक्रिय रूप से उपयोग नहीं किया जाता?

इस समस्या के समाधान के लिए, हम केवल पिछले महीने के डाउनलोड्स की संख्या को ही ध्यान में रखते हैं। इस तरह, पुराने पैकेजों का लोकप्रियता स्कोर कृत्रिम रूप से नहीं बढ़ता, और अप्रचलित पैकेज जल्दी ही पीछे छूट जाते हैं।

प्रत्यक्ष बनाम अप्रत्यक्ष डाउनलोड्स

रिवर्स डिपेंडेंसीज़ से जुड़ी एक और समस्या सामने आती है। R पैकेज सामान्यतः कई अन्य पैकेजों पर निर्भर होते हैं। जिन पैकेजों पर बहुत सी रिवर्स डिपेंडेंसीज़ होती हैं, वे अन्य की तुलना में कहीं अधिक बार डाउनलोड किए जाएँगे। हालाँकि, ये पैकेज आम तौर पर अधिक लो-लेवल होते हैं और अंततः उपयोगकर्ता द्वारा सीधे उपयोग नहीं किए जाते। हमें यह ध्यान रखना होगा कि उनके डाउनलोड्स की संख्या को बहुत अधिक वज़न न दिया जाए।

उदाहरण के लिए, Rcpp को लें। CRAN, यानी comprehensive R archive network, पर 70 प्रतिशत से अधिक पैकेज इस पैकेज पर निर्भर हैं, जो इसे स्पष्ट रूप से सबसे अधिक डाउनलोड किया जाने वाला R पैकेज बनाता है। हालाँकि, अपेक्षाकृत कम R उपयोगकर्ता सीधे इस पैकेज का उपयोग करेंगे और इसकी डाक्यूमेंटेशन खोजेंगे।

इस समस्या को सुलझाने के लिए, हमें प्रत्यक्ष डाउनलोड्स (डाउनलोड्स जो उपयोगकर्ता द्वारा अनुरोधित होने पर होते हैं) और अप्रत्यक्ष डाउनलोड्स (डाउनलोड्स जो किसी आश्रित पैकेज के डाउनलोड होने के कारण होते हैं) को अलग करना पड़ा। CRAN लॉग्स से प्रत्यक्ष और अप्रत्यक्ष डाउनलोड्स में अंतर करने के लिए, हम Arun Srinivasan के cran.stats पैकेज में वर्णित वही हीयूरिस्टिक का उपयोग करते हैं।

अब हमारे पास एक सार्थक लोकप्रियता मीट्रिक है: पिछले महीने में हुए प्रत्यक्ष डाउनलोड्स की संख्या। Elasticsearch इस अतिरिक्त जानकारी को सम्मिलित करने का सरल तरीका प्रदान करता है; अधिक विवरण के लिए, elastic.co पर यह लेख देखें।

स्कोर को निम्न प्रकार संशोधित किया जाता है:

new_score = old_score * log(1 + number of direct downloads in the last month)

हम log() फ़ंक्शन का उपयोग number of downloads मान को स्मूद करने के लिए करते हैं, क्योंकि प्रत्येक अगला डाउनलोड कम वज़न रखता है; 0 और 1000 डाउनलोड्स के बीच का अंतर लोकप्रियता स्कोर पर 100,000 और 101,000 डाउनलोड्स के अंतर से अधिक प्रभाव डालना चाहिए।

यह पुन:स्कोरिंग RDocumentation.org द्वारा प्रस्तुत खोज परिणामों की समग्र प्रासंगिकता में सुधार करती है और परिणामस्वरूप, उपयोगकर्ता खोजने के बजाय डाक्यूमेंटेशन पढ़ने पर ध्यान केंद्रित कर सकते हैं।

यदि आप जानना चाहते हैं कि Elasticsearch क्वेरी को ठीक-ठीक कैसे लागू किया गया है, तो आप GitHub पर RDocumentation प्रोजेक्ट देख सकते हैं। स्वयं क्वेरी SearchController में स्थित है।

यदि आप यह जानना चाहते हैं कि RDocumentation.org कैसे लागू किया गया है, तो हमारे रिपोज़ देखें:

  • RDocumentation-app: rdocumentation.org को चलाने वाला वेब एप्लीकेशन।
  • RDocumentation-elasticsearch: rdocumentation.org को सर्व करने वाले Elasticsearch सर्वर की कॉन्फ़िगरेशन और फ़ीडर्स।
  • RDocumentation: rdocumentation.org को आपके R वर्कफ़्लो में इंटीग्रेट करने के लिए R पैकेज
  • RDocumentation-lambda-worker: rdocumentation.org के लिए पैकेज डाक्यूमेंटेशन पार्स करने हेतु AWS Lambda पाइपलाइन



RDocumentation के बारे में  

RDocumentation CRAN, BioConductor और GitHub—जो वर्तमान R डाक्यूमेंटेशन के तीन सबसे आम स्रोत हैं—से R पैकेजों की सहायता डाक्यूमेंटेशन को एकत्रित करता है। हालाँकि, RDocumentation.org केवल इस जानकारी को समेकित करने तक सीमित नहीं है; यह RDocumentation पैकेज के माध्यम से यह पूरी डाक्यूमेंटेशन सीधे आपके हाथों तक लाता है। RDocumentation पैकेज, utils पैकेज के बेसिक help फ़ंक्शंस को ओवरराइट करता है और आपको आपके RStudio IDE की सुविधा से RDocumentation.org तक पहुँच देता है। नवीनतम और सबसे लोकप्रिय R पैकेज देखें, डाक्यूमेंटेशन में खोजें और सामुदायिक उदाहरण पोस्ट करें। 

विषय
R