2012-04-26 18 views
13

मैं विशिष्ट साइटों को क्रॉल करने के लिए नच का उपयोग करके एक बहुत ही छोटा, विशिष्ट खोज इंजन बनाने की कोशिश कर रहा हूं। कुछ साइटें समाचार/ब्लॉग साइटें हैं। अगर मैं क्रॉल करता हूं, कहता हूं, techcrunch.com, और उनके फ्रंट पेज या उनके किसी भी मुख्य पृष्ठ को स्टोर और इंडेक्स करता हूं, तो घंटों के भीतर उस पृष्ठ के लिए मेरी अनुक्रमणिका पुरानी हो जाएगी।अक्सर अद्यतन वेबपृष्ठों को क्रॉल/इंडेक्स करने के लिए रणनीति?

क्या Google जैसे बड़े खोज इंजन में अक्सर अपडेट किए गए पृष्ठों को बार-बार क्रॉल करने के लिए एल्गोरिदम होता है, घंटे भी? या क्या यह अक्सर अद्यतन पृष्ठों को बहुत कम स्कोर करता है ताकि वे वापस नहीं आ सकें?

मैं इसे अपने आवेदन में कैसे संभाल सकता हूं?

उत्तर

2

कुछ आवृत्ति आंकड़े अद्यतन आवृत्ति पर रखने की कोशिश करें। अद्यतन का पता लगाना आसान है ETag/Last-Modified स्टोर करें और अपने अगले अनुरोध के साथ If-None-Match/If-Updated-Since शीर्षलेख भेजें। running average अद्यतन आवृत्ति (अंतिम 24 क्रॉल के लिए कहें) को रखने से आप फ्रंटपेज की अद्यतन आवृत्ति को सटीक रूप से सटीक रूप से निर्धारित कर सकते हैं।

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

+0

धन्यवाद। मुझे कुछ और विशिष्ट के बारे में पूछने की अनुमति दें - विभिन्न निर्देशिकाओं को क्रॉल करने के मामले में क्या? उदाहरण के लिए, एक पृष्ठ जिसमें खोज करने योग्य लोगों की निर्देशिका है, लेकिन फिल्टर के बिना वर्णानुक्रम में ब्राउज़ किया जा सकता है? या एक पृष्ठ जो लेख एकत्र करता है और उन्हें अपनी ऑनलाइन प्रकाशन तिथि के क्रम में पोस्ट करता है? एक कैसे पता लगाएगा कि पेज 34 पर एक नई प्रविष्टि इंजेक्शन दी गई थी। मुझे सभी उपलब्ध पृष्ठों को फिर से क्रॉल करना होगा? – Swader

+0

लिस्टिंग पृष्ठों में स्पष्ट रूप से नए ईटाग हेडर होंगे (लेकिन आवश्यक रूप से नए लास-संशोधित शीर्षलेख नहीं)। ज्यादातर मामलों में आपको लिस्टिंग पृष्ठों को दोबारा जोड़ना होगा। लेकिन, जब आप व्यक्तिगत लेख पृष्ठों के लिंक का भी पालन कर रहे हैं, तो आपको केवल नई पोस्टों को क्रॉल करने की आवश्यकता होगी। – simonmenke

+0

Etag/Last-Modified विशेष रूप से गतिशील रूप से जेनरेट की गई सामग्री के लिए पृष्ठ संशोधन के लिए भरोसेमंद स्रोत नहीं हैं। कई मामलों में यह चर भाषा भाषा दुभाषिया द्वारा गलत तरीके से उत्पन्न होते हैं। – AMIB

21

अच्छा सवाल। यह वास्तव में WWW अनुसंधान समुदाय में एक सक्रिय विषय है। शामिल तकनीक को पुन: क्रॉल रणनीति या पृष्ठ ताज़ा करें नीति कहा जाता है।

मैं जानता हूँ कि वहाँ के रूप में तीन विभिन्न कारकों है कि साहित्य में विचार किया गया हैं:

  • आवृत्ति बदलें (कैसे ofter एक वेब पृष्ठ की सामग्री अद्यतन किया जाता है)
    • [1]: डेटा की "ताजगी" की धारणा को औपचारिक रूप से बनाया गया और वेब पृष्ठों के परिवर्तन के मॉडल के लिए poisson process का उपयोग करें।
    • [2]: आवृत्ति आकलनकर्ता
    • [3]: समय-निर्धारण नीति
  • प्रासंगिकता (कितना प्रभाव अद्यतन पेज की सामग्री खोज परिणामों पर है) की अधिक
    • [4] : उन लोगों के लिए उपयोगकर्ता अनुभव की गुणवत्ता को अधिकतम करें जो खोज इंजन
    • [5] निर्धारित करते हैं: (लगभग) इष्टतम क्रॉलिंग आवृत्तियों का निर्धारण करें
  • सूचना दीर्घायु (सामग्री टुकड़े की जीवन काल कि दिखाई देते हैं और समय के साथ वेब पृष्ठों, जो दृढ़ता से परिवर्तन आवृत्ति के साथ सहसंबद्ध नहीं दिखाया गया है से गायब हो)
    • [6]: अल्पकालिक और लगातार सामग्री
    • के बीच अंतर

आप यह तय करना चाहेंगे कि आपके एप्लिकेशन और उपयोगकर्ताओं के लिए कौन सा कारक अधिक महत्वपूर्ण है। फिर आप अधिक जानकारी के लिए नीचे संदर्भ देख सकते हैं।


संपादित: मैं संक्षेप में आवृत्ति आकलनकर्ता में [2] पाने के लिए उल्लेख किया है कि आप आरंभ चर्चा की। इस पर आधारित, आपको यह पता लगाने में सक्षम होना चाहिए कि अन्य कागजात में आपके लिए क्या उपयोगी हो सकता है। :)

कृपया इस पेपर को पढ़ने के लिए नीचे दिए गए आदेश का पालन करें। जब तक आप कुछ संभाव्यता और आंकड़े 101 (शायद अनुमानित फॉर्मूला लेते हैं तो शायद बहुत कम होना चाहिए):

चरण 1. कृपया पर जाएं अनुभाग 6.4 - एक के लिए आवेदन वेब क्रॉलर यहां वेब पेज परिवर्तन आवृत्ति का अनुमान लगाने के लिए चो 3 दृष्टिकोण सूचीबद्ध हैं।

  • समान नीति: एक क्रॉलर हर सप्ताह एक बार आवृत्ति पर सभी पृष्ठों की समीक्षा करता है।
  • बेकार नीति: पहली 5 विज़िट में, क्रॉलर प्रति सप्ताह एक बार आवृत्ति पर प्रत्येक पृष्ठ पर जाता है। 5 विज़िट के बाद, क्रॉलर ने निष्क्रिय आवृत्ति (धारा 4.1)
  • का उपयोग कर पृष्ठों की परिवर्तन आवृत्तियों का अनुमान लगाया है हमारी नीति: क्रॉलर परिवर्तन आवृत्ति का अनुमान लगाने के लिए प्रस्तावित अनुमानक (धारा 4.2) का उपयोग करता है।

चरण 2. मूर्ख नीति। कृपया अनुभाग 4. करने के लिए जाना आप पढ़ा जाएगा: परिवर्तन के अनुमानित आवृत्ति के रूप में

Intuitively, हम X/T (निगरानी अवधि: पहचाने गए परिवर्तनों की संख्या, TX) का उपयोग कर सकते हैं।

अनुवर्ती खंड 4।1 इस आकलन सिर्फ साबित कर दिया पक्षपाती 7, में लगातार 8 और में कुशल 9 है।

चरण 3. बेहतर अनुमानक। कृपया धारा 4.2 पर जाएं। नई आकलनकर्ता लग रहा है नीचे की तरह: enter image description here

जहां \bar Xn - X है (की संख्या तक पहुँचता है उस तत्व परिवर्तन नहीं किया) और n पहुंच की संख्या है। तो बस इस सूत्र को लें और परिवर्तन आवृत्ति का अनुमान लगाएं। आपको शेष उपधारा में सबूत को समझने की आवश्यकता नहीं है।

चरण 4. धारा 4.3 और धारा 5 में चर्चा की गई कुछ युक्तियां और उपयोगी तकनीकें हैं जो आपके लिए उपयोगी हो सकती हैं। धारा 4.3 ने अनियमित अंतराल से निपटने के तरीके पर चर्चा की। धारा 5 ने प्रश्न हल किया: जब तत्व की आखिरी-संशोधन तिथि उपलब्ध है, तो हम परिवर्तन आवृत्ति का अनुमान लगाने के लिए इसका उपयोग कैसे कर सकते हैं? अंतिम संशोधन दिनांक उपयोग का प्रस्ताव रखा आकलनकर्ता नीचे दिखाया गया है:

enter image description here

पत्र में Fig.10 के बाद उपरोक्त एल्गोरिथ्म के विवरण बहुत स्पष्ट है।

चरण 5. अब अगर आप रुचि है, तो आप अनुभाग में प्रयोग सेटअप और परिणाम पर एक नज़र 6.

तो हो गया ले सकते हैं। यदि अब आप अधिक आत्मविश्वास महसूस करते हैं, तो आगे बढ़ें और [1] में ताजगी कागज आज़माएं।


संदर्भ

[1] http://oak.cs.ucla.edu/~cho/papers/cho-tods03.pdf

[2] http://oak.cs.ucla.edu/~cho/papers/cho-freq.pdf

[3] http://hal.inria.fr/docs/00/07/33/72/PDF/RR-3317.pdf

[4] http://wwwconference.org/proceedings/www2005/docs/p401.pdf

[5] http://www.columbia.edu/~js1353/pubs/wolf-www02.pdf

[6] http://infolab.stanford.edu/~olston/publications/www08.pdf

+2

काफी उन्नत चीजें, मेरे सिर को पढ़ने के दौरान थोड़ा दर्द होता है। धन्यवाद। – Swader

+0

@Swader: अंतिम उपयोगकर्ताओं के लिए "ताजा जानकारी" का मूल्य क्या है? क्या यह समय पर सख्ती से नकारात्मक घातीय है? क्या सभी उपयोगकर्ता इस फ़ंक्शन के रूप और पैमाने पर समान हैं; क्या सभी साइटें सभी उपयोगकर्ताओं के लिए समान हैं? इसके लिए कुछ अनुकूलन संख्या-क्रंचिंग की आवश्यकता होती है। –

+0

सभी उपयोगकर्ता और साइटें फॉर्म और स्केल में समान हैं। दूसरे शब्दों में, अंतिम लक्ष्य केवल कहीं और क्रॉल किए गए डेटा की खोज योग्य निर्देशिका है। – Swader

2

मैं कल्पना के किसी भी खिंचाव से इस विषय में एक विशेषज्ञ नहीं हूँ लेकिन साइटमैप एक तरीका इस समस्या को कम करने के लिए कर रहे हैं।

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

Google इसे विशेष रूप से समाचार साइटों को क्रॉल करने में सहायता के लिए उपयोग करता है।साइटमैप पर आप अधिक जानकारी here और Google समाचार और साइटमैप here पर जानकारी प्राप्त कर सकते हैं।

आमतौर पर, आप साइटमैप.एक्सएमएल को वेबसाइट के robots.txt में पा सकते हैं। उदाहरण के लिए, टेकक्रंच के साइटमैप

http://techcrunch.com/sitemap.xml

जो एक नियमित आधार पर XML पार्स में इस समस्या को बदल जाता है है। यदि आप इसे robots.txt में नहीं ढूंढ पा रहे हैं, तो आप हमेशा वेब मास्टर से संपर्क कर सकते हैं और देख सकते हैं कि वे आपको यह प्रदान करेंगे या नहीं।

UPDATE 1 अक्टू 24 2012 10:45 बजे,

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

एक और चीज जो हम करते हैं वह किसी दिए गए डोमेन पर परिवर्तन के लिए कई "इंडेक्स पेज" की निगरानी करता है। उदाहरण के लिए न्यूयॉर्क टाइम्स लें।

http://www.nytimes.com/

आप पेज पर एक नज़र डालें, तो आप दुनिया, अमेरिका, राजनीति, व्यवसाय, आदि हम बनाने की तरह अतिरिक्त उप क्षेत्रों नोटिस कर सकते हैं: हम पर एक शीर्ष स्तर डोमेन के लिए एक सूचकांक पृष्ठ बनाने उन सभी के लिए अतिरिक्त सूचकांक पेज। व्यापार में ग्लोबल, डीलबुक, मार्केट्स, इकोनॉमी इत्यादि जैसे अतिरिक्त नेस्टेड इंडेक्स पेज हैं। यूआरएल के लिए 20 प्लस इंडेक्स पेजों के लिए यह असामान्य नहीं है। अगर हम इंडेक्स पर जोड़े गए अतिरिक्त यूआरएल देखते हैं, तो हम उन्हें कतार में जोड़ने के लिए कतार में जोड़ते हैं।

जाहिर है यह बहुत निराशाजनक है क्योंकि आपको इसे हर वेबसाइट के लिए हाथ से करना पड़ सकता है। आप समाधान के लिए भुगतान करने पर विचार करना चाह सकते हैं। हम SuprFeedr का उपयोग करते हैं और इसके साथ काफी खुश हैं।

इसके अलावा, कई वेबसाइटें अभी भी आरएसएस की पेशकश करती हैं जो पृष्ठों को क्रॉल करने का एक प्रभावी तरीका है। मैं अभी भी यह देखने के लिए किसी वेबमास्टर से संपर्क करने की अनुशंसा करता हूं कि क्या आपकी मदद करने के लिए उनके पास कोई आसान समाधान है या नहीं।

+0

साइटमैप की पेशकश करने वाली वेबसाइटों के लिए अच्छी सलाह। दुर्भाग्यवश, मैं उन लोगों से निपट रहा हूं जो अपने साइटमैप को अद्यतित नहीं रखते हैं, या उन्हें बिल्कुल नहीं मिला है। – Swader

+0

मैंने एक अद्यतन जोड़ा। उम्मीद है कि यह आपके लिए कुछ मदद है। – sunnyrjuneja

6

Google के एल्गोरिदम अधिकतर बंद होते हैं, वे नहीं बताएंगे कि वे इसे कैसे करते हैं।

मैंने directed graph की अवधारणा का उपयोग करके क्रॉलर बनाया और पृष्ठों के degree centrality पर पुन: क्रॉल दर आधारित किया। आप एक वेबसाइट को निर्देशित ग्राफ के रूप में पृष्ठों के साथ नोड्स और हाइपरलिंक के रूप में किनारों के रूप में मान सकते हैं। उच्च केंद्रीयता वाला एक नोड शायद एक ऐसा पृष्ठ होगा जो अधिक बार अपडेट किया जाता है। कम से कम, यह धारणा है।

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

+0

एक ठोस सिद्धांत है, लेकिन यह 2300 पृष्ठों में फैले लोगों की निर्देशिका रखने की मेरी मूल समस्या पर कैसे लागू होगा, इनमें से किसी भी किसी भी क्षण में अपडेट किया जा सकता है (इस प्रकार सभी को बदलते हुए बदलते हैं बाद के सभी पेज)? – Swader

+0

यदि किसी भी पृष्ठ को किसी भी समय एक ही संभावना के साथ अपडेट किया जा सकता है और यह सब कुछ हम जानते हैं, तो यह कहने का कोई तरीका नहीं है कि कौन सा पृष्ठ अगला अपडेट होगा। उस मामले में, यह अवधारणा कम से कम काम नहीं करेगी। मैंने जो विचार दिया है वह साइट के अन्य पृष्ठों के संबंध में प्रत्येक पृष्ठ को मानता है। फिर आप उस विधि की तलाश कर रहे हैं जो पृष्ठ पर आधारित केवल * क्रॉल * केवल * के उपयोग की भविष्यवाणी करता है। – TTT

+0

उस मामले में, हरे रंग का जवाब बेहतर हो सकता है, खासकर ** प्रासंगिकता ** और ** आवृत्ति परिवर्तन **। – TTT

संबंधित मुद्दे