2008-09-21 11 views
30

मुझे हमेशा एक वेब सर्च इंजन विकसित करने में दिलचस्पी है। शुरू करने के लिए एक अच्छी जगह क्या है? मैंने लुसीन के बारे में सुना है, लेकिन मैं एक बड़ा जावा लड़का नहीं हूं। कोई अन्य अच्छा संसाधन या ओपन सोर्स प्रोजेक्ट्स?एक वेब सर्च इंजन बनाना

मुझे समझ में आता है कि यह बहुत कम है, लेकिन यह अपील का हिस्सा है। मैं अगली Google बनाने की तलाश नहीं कर रहा हूं, बस कुछ ऐसी साइट्स का उप-सेट खोजने के लिए उपयोग कर सकता हूं, जिनमें मुझे दिलचस्पी हो सकती है।

+0

यह आपकी पसंदीदा प्रोग्रामिंग भाषाओं पर निर्भर करता है। जावा प्रश्न से परे है। क्या आप एएसपीनेट, पर्ल, पायथन, PHP, में कोड करते हैं ...किसी भी पर्याप्त उत्तर की पेशकश की जाने से पहले जानना महत्वपूर्ण होगा :) – Anheledir

+0

हे! [मेरा] (http://code.google.com/p/goomez/) देखें ... [lucene.net] पर आधारित बहुत सरल फ़ाइल खोजकर्ता (http://incubator.apache.org/lucene.net/) – sebagomez

+0

क्या आपने नच जावा से एक बंदरगाह nutch.net की कोशिश की है .... – chugh97

उत्तर

48

एक खोज इंजन के कई भागों रहे हैं। मोटे तौर पर एक बुरी सामान्य ढंग से (लोगों, संपादित करने के लिए अगर आप आप बेहतर वर्णन, लिंक, आदि जोड़ सकते हैं महसूस हो रहा है के लिए स्वतंत्र महसूस):

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

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

  3. सूचकांक। पार्सर को पार्स किए गए सामान को पढ़ता है, और वेबपृष्ठों पर पाए गए शब्दों में उलटा इंडेक्स बनाता है। यह रूप में स्मार्ट के रूप में आप इसे होना चाहते हो सकता है - अवधारणाओं के सूचक, पार से लिंक चीजें बनाने के लिए NLP तकनीकों को लागू, आदि समानार्थी शब्द में फेंक,

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

  5. फ्रंट एंड। कुछ उपयोगकर्ता क्वेरी प्राप्त करने की आवश्यकता है, केंद्रीय इंजन मारा, और जवाब; कैशिंग परिणामों के बारे में कुछ समझने की ज़रूरत है, संभवतः अन्य स्रोतों के परिणामों में मिश्रण करना आदि। इसमें इसकी समस्याओं का सेट है।

मेरी सलाह - चुनें इन हितों की जो आप सबसे अधिक, डाउनलोड Lucene या Xapian या किसी अन्य ओपन सोर्स प्रोजेक्ट वहाँ बाहर, बिट है कि ऊपर कार्यों में से एक करता है बाहर खींच, और यह बदलने का प्रयास । उम्मीद है कि कुछ बेहतर के साथ :-)।

कुछ लिंक है कि उपयोगी साबित हो सकता: "Agile web-crawler", (अंग्रेजी में) Sphinx Search engine एस्टोनिया के एक कागज, एक अनुक्रमण और खोज API। बड़े डीबी के लिए डिज़ाइन किया गया, लेकिन मॉड्यूलर और ओपन-एंडेड। "Information Retrieval, मैनिंग एट अल से आईआर के बारे में एक पाठ्यपुस्तक। इंडेक्स कैसे बनाए जाते हैं, विभिन्न मुद्दों के साथ-साथ क्रॉलिंग की कुछ चर्चा आदि का अच्छा अवलोकन, मुफ्त ऑनलाइन संस्करण (अभी के लिए)!

+1

बहुत बढ़िया जवाब। धन्यवाद! – Aseem

+0

यहां रैंकिंग इंजन (लोचदार खोज) और फ्रंट एंड (एंजुलरजेस) https://machinelearningblogs.com/2016/12/12/how-to-build-a-search-engine-part-1/ का मेरा कार्यान्वयन है –

0

लुसीन के बंदरगाह हैं। ज़ेंड एक स्वतंत्र रूप से उपलब्ध है। इस त्वरित ट्यूटोरियल पर एक नज़र डालें: http://devzone.zend.com/node/view/id/91

5

ऐसा लगता है कि सबसे बड़ा हिस्सा साइट्स का अनुक्रमण है। इंटरनेट को खराब करने और उनकी सामग्री को पार्स करने के लिए बॉट बनाना।

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

संपादित करें: This साइट बल्कि दिलचस्प दिखती है।

+0

वे करते हैं - वे नियमित आधार पर परिणामों को कैश करने के सर्वोत्तम तरीकों पर शैक्षिक पेपर डालते हैं। क्या आप अभी हालिया उत्तरों को कैश करते हैं? क्या आप क्वेरी लॉग देखते हैं और भविष्यवाणी करने का प्रयास करते हैं कि आपको कैश करने और इसे प्रीकंप्यूट करने के लिए क्या चाहिए? आकर्षक सामान – SquareCog

6

Xapian आपके लिए एक और विकल्प है। मैंने ल्यूसीन के कुछ कार्यान्वयन से बेहतर स्केल सुना है।

4

मैं एक मौजूदा प्रोजेक्ट से शुरू करूंगा, जैसे विकिया से ओपन सोर्स सर्च इंजन।

[मेरी समझ यह है कि विकिया सर्च प्रोजेक्ट समाप्त हो गया है। हालांकि मुझे लगता है कि एक मौजूदा ओपन-सोर्स प्रोजेक्ट के साथ शामिल हो रही है इस आकार के एक उपक्रम में कम करने के लिए एक अच्छा तरीका है।]

http://re.search.wikia.com/about/get_involved.html

0

यदि आप प्रोग्रामिंग में इतनी दिलचस्पी नहीं रखते हैं तो परिणाम थोड़ा अधिक है, लेकिन परिणामों में अधिक दिलचस्पी है: Google Custom Search Engine एपीआई का उपयोग करके इसे बनाने पर विचार करें।

लाभ:

  • Google क्या करता है आप
  • परिचित यूआई और अपने उपयोगकर्ताओं के लिए व्यवहार के लिए सभी बड़े कार्य करने
  • कुछ और मिनटों में चल रहा
  • अनुकूलन क्षमताओं के बहुत सारे मिल सकता है

नुकसान:

  • आप कोड लिखने नहीं कर रहे हैं, इसलिए कोई सीखने का अवसर वहाँ
  • सब कुछ आप खोज करना चाहते गूगल सूचकांक पहले से ही
  • आपका परिणाम गूगल
+0

बिल्कुल इसे एक एपीआई नहीं बुलाएगा ... – Sean

+0

क्यों नहीं? प्रत्येक एपीआई कॉल करने योग्य कार्यों का एक सेट नहीं है। आप अपनी खोज इंजन के एक्सएमएल विवरण को अपनी वेबसाइट पर होस्ट कर सकते हैं, और फिर आप इसके लिए Google के वेब इंटरफ़ेस का भी उपयोग नहीं कर रहे हैं। –

6

चेक बाहर से जुड़ा हुआ है में सार्वजनिक & होना चाहिए nutch, यह उसी व्यक्ति द्वारा लिखा गया है जिसने लुसेन (Doug Cutting) बनाया है।

1

यदि आप जानकारी पुनर्प्राप्ति के पीछे सिद्धांत और खोज इंजन को लागू करने के पीछे कुछ तकनीकी विवरणों के बारे में सीखने में रुचि रखते हैं, तो मैं इयान विटन, एलिस्टेयर मोफैट और टिम सी बेल द्वारा Managing Gigabytes पुस्तक की सिफारिश कर सकता हूं। (प्रकटीकरण: एलिस्टेयर मोफैट मेरा विश्वविद्यालय पर्यवेक्षक था।) हालांकि यह अब थोड़ा सा दिनांक है (पहला संस्करण 1 99 4 में आया था और 1 999 में दूसरा - अब गीगाबाइट्स के प्रबंधन के बारे में इतना कठिन क्या है?), अंतर्निहित सिद्धांत अभी भी ध्वनि है और यह है इंडेक्सिंग और अनुक्रमण और पुनर्प्राप्ति प्रणालियों में संपीड़न के उपयोग दोनों के लिए एक महान परिचय।

1

मुझे खोज इंजन में भी रूचि है। मैंने Apache Hadoop MapReduce और Apache Lucene दोनों की अनुशंसा की। हडोप क्लस्टर द्वारा तेजी से प्राप्त करना सबसे अच्छा तरीका है।