अगर मैं एक खोज इंजन बनाना चाहता था, तो मैं कैसे शुरू करूंगा? [बन्द है]


9

क्या कोई मुझे सही दिशा में ले जा सकता है? मुझे वास्तव में कोड लिखने का अनुभव नहीं है, लेकिन मैं एक तेज शिक्षार्थी हूं। मैं यह कहने की कोशिश नहीं कर रहा हूं कि यह आसान होगा लेकिन मुझे उम्मीद है कि कोई मेरी मदद कर सकता है ...


6
यदि आपके पास लिखने का कोई अनुभव नहीं है, तो पहले कोड कैसे सीखें? प्रोग्रामिंग के लिए किसी नए व्यक्ति के लिए एक खोज इंजन का निर्माण एक ओवरकिल की तरह है।
टेरेंस पोंस

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

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

1
इस पुस्तक ने मुझे यह समझने में मदद की कि खोज इंजन क्या हैं और वे कैसे बनाए जाते हैं: nlp.stanford.edu/IR-book
devnull

जवाबों:


16

मैंने इसे एक ब्लॉग के लिए लिखा था जब मैं रास्ते में वापस आता था .... यह अब वेब पर नहीं है .. यहाँ यह है! :

सर्च इंजन कैसे लिखे

Darol Rowger over probolgger.net पर कुछ भी "कैसे" के लिए एक समूह लेखन परियोजना आयोजित की जा रही है। यह उन कुछ ब्लॉगों में से एक है जो मैं नियमित रूप से पढ़ता हूं इसलिए मुझे लगता है कि एक बदलाव के लिए कुछ पढ़ने लायक क्यों नहीं लिखा है, बल्कि मेरे मानक हिंसक शेख़ी जहां मैं गले में ह्यूगो चेव्स को छुरा मारने की धमकी देता हूं।

मैंने "कैसे एक खोज इंजन लिखने के लिए" लिखने का फैसला किया। मैंने दो कारणों से इस विषय को चुना:

  1. वेब पर इस पर बहुत अच्छी जानकारी नहीं है।
  2. मैं वर्तमान में अपने एक ग्राहक के लिए एक लिख रहा हूं।

मेरा ग्राहक महत्वपूर्ण आकार का एक ऑनलाइन रिटेलर है, इसलिए मैं संपूर्ण वेब को केवल अपनी साइट पर नहीं खोज रहा हूं, विशेष रूप से केवल अपनी साइट पर बिक्री के लिए उत्पादों को। इंटरनेट की खोज के लिए उपयोग किए जाने वाले अधिक जटिल लेखन के लिए किसी भी कम समान तकनीकों का उपयोग नहीं किया जा सकता है। मुझे पता है कि यह एक तकनीकी ब्लॉग नहीं है, इसलिए मैं तकनीकीताओं में बहुत गहराई तक नहीं जाऊंगा, न ही मैं हार्डवेयर \ प्रोसेसिंग पावर आवश्यकताओं, या वेब क्रॉलिंग पर चर्चा करूंगा।

मैं एक काफी सरल तकनीक का उपयोग कर रहा हूं, मेरे पास तीन क्षेत्रों के साथ तालिका (tblKeywords) है:

  1. Itemid (यदि आप एक वेब खोज कर रहे हैं तो यह URL होगा)
  2. कीवर्ड (अनुक्रमित कीवर्ड)
  3. वजन (यह 1-100 से संख्यात्मक मान है यह संख्या अधिक महत्वपूर्ण है (वजन) कीवर्ड वहन करती है) * पीके = आइटम / कुंजी कार्ड

पहली बात यह है कि मैं प्रासंगिक है कि कहीं से भी अलग-अलग शब्दों को इकट्ठा करता हूं। अपने ग्राहक के लिए मैं उत्पादों की तालिका शब्दों को खींचूंगा। विशेष रूप से क्षेत्रों से Itemid, ItemName, ItemShortDescription, ItemLongDescription, निर्माता, निर्माताSKU, श्रेणी 1, श्रेणी 2, श्रेणी 3 ect के। यदि आप वेबपृष्ठों को अनुक्रमित कर रहे हैं, तो आप पृष्ठ पाठ, पृष्ठ शीर्षक, URL या अन्य पृष्ठों पर लिंक से डेटा खींच सकते हैं जो पृष्ठ पर अनुक्रमित होने पर वापस लिंक करते हैं।

वजन मूल्य यह निर्धारित किया जाता है कि कीवर्ड कहाँ से आया है। उदाहरण के लिए मेरे मामले में आइटम के निर्माण के SKU को 100 का वजन मिलेगा, जबकि आइटम के नाम के एक शब्द को 25 का वजन मिल सकता है। आइटमलॉन्गस्क्रिप्ट के एक शब्द का वजन 5 हो सकता है। यदि आप वेब पेजों को अनुक्रमित कर रहे हैं पृष्ठ के शीर्षक से 75 का वजन मिल सकता है जबकि पृष्ठ के पाठ से बोल्ड शब्द में 10 का वजन हो सकता है। यदि किसी शब्द को एक या अधिक बार दोहराया जाता है और एक से अधिक स्थानों पर आप प्रत्येक बार के लिए वजन जोड़ सकते हैं ऐसा होता है। उदाहरण के लिए यदि शब्द "शर्ट" आइटमआईडीडी = 12345 के लिए दो स्थानों से आता है, तो आइटमनाम (25 का वजन) और आइटमलॉन्गसक्रिप्शन में दो बार दिखाई देता है (5 x2 = 10 का वजन) शब्द "शर्ट" में आइटमआईड के लिए कुल वजन 35 होगा। = 12345।

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

SQL:

Select Itemid, sum(weight) as totWeight from tblKeywords
group by itemId having keyword in ('pink','shirt')

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


अच्छा जवाब धन्यवाद। आप उत्पादों के समूहीकरण के लिए क्या सुझाव देंगे। मेरा मतलब है कि आपके पास विभिन्न वेबसाइटों से 1 मिलियन क्रॉल किए गए उत्पाद पृष्ठ हैं। आप विभिन्न वेबसाइटों पर समान उत्पादों को समूहीकृत करना चाहते हैं: programmers.stackexchange.com/questions/134292/…
MonsterMMORPG

@ मेनस्टर - आइटम के निर्माता \ SKU संयोजन के बारे में कैसे?
मोरों

आप इस डेटा को Etilize
Morons

क्या आप इसे थोड़ा और समझा सकते हैं क्योंकि मुझे यह नहीं मिला। धन्यवाद।
मॉन्स्टरमोरपीजी

3
एक "ओके" व्यावहारिक उत्तर। हालांकि यह अध्ययन उर्फ ​​"सूचना पुनर्प्राप्ति" के पूरे क्षेत्र की उपेक्षा करता है। "सही दिशा में इशारा करना" के संदर्भ में आईआर मेरे दिमाग में बेहतर होता।
अंधेरी

4

इंट्रोडक्शन टू इंफॉर्मेशन रिट्रीवल का स्वतंत्र रूप से वितरित मसौदा आपका मुख्य संदर्भ सामग्री होने जा रहा है। यह बुनियादी से उन्नत स्तर तक खोज (सूचना पुनर्प्राप्ति) को संभालता है।


3

वेब क्रॉलर पर खोज इंजन बनाए जाते हैं , आपको यह जानने के लिए कि इन परिणामों को प्रदर्शित करने के लिए वेबसाइट विकसित करने से पहले आपको इनमें से एक चूसने वाले का निर्माण कैसे करना होगा (इसके साथ जाने के लिए आपको तेज, कुशल डेटाबेस की आवश्यकता होगी)।


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

@ मार्सेलो कैंटोस: उल्टे फ़ाइल अनुक्रमण जटिल लगता है: -0 - मेरे उत्तर को स्पष्ट करने में मदद करने के लिए धन्यवाद!
पालबुलिच

2

एक खोज इंजन का निर्माण

यह सीएस के लिए एक परिचयात्मक पाठ्यक्रम है जो 20 तारीख से शुरू होने जा रहा है, मेरा सुझाव है कि आप इसे देखें, यह मुफ़्त है।


1
सेबस्टियन थ्रॉन Google के साथ भी निकटता से जुड़ा हुआ है।
जेम्स यंगमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.