sql - रचन - व्हाट इस फ्लोचार्ट




कैसे एक Digg- तरह एल्गोरिथ्म को लागू करने के लिए? (4)

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

Stackoverflow / digg / reddit के समान एक सिफारिश प्रणाली के साथ एक वेबसाइट कैसे कार्यान्वित करें? यानी, उपयोगकर्ता सामग्री सबमिट करते हैं और वेबसाइट को कुछ प्रकार की "हॉटनेस" की गणना करने की आवश्यकता है कि आइटम कितना लोकप्रिय है प्रवाह निम्नानुसार है:

  • उपयोगकर्ता सामग्री सबमिट करते हैं
  • अन्य उपयोगकर्ता सामग्री को देखते और वोट देते हैं (मान लें कि उपयोगकर्ताओं के 90% केवल सामग्री को देखते हैं और 10% सक्रिय रूप से सामग्री पर ऊपर या नीचे वोट देते हैं)
  • नई सामग्री को लगातार सबमिट किया जाता है

मैं एक एल्गोरिथ्म कैसे लागू कर सकता हूं जो प्रस्तुत किए गए आइटम की "हॉटनेस" की गणना करता है, प्राथमिक रूप से वास्तविक समय में? क्या कोई सर्वोत्तम अभ्यास या डिजाइन पैटर्न हैं?

मुझे लगता है कि एल्गोरिथ्म निम्न विचारों को लेता है:

  • जब एक आइटम सबमिट किया गया था
  • जब प्रत्येक वोट डाली गया था
  • जब आइटम देखा गया था

उदाहरण के लिए, एक ऐसा आइटम जो वोटों की निरंतर गति को प्राप्त करता है, वह कुछ हद तक "गर्म" रहता है, जबकि एक ऐसा आइटम जो पहले वोटों के फट को प्राप्त करता है, वह "हॉटनेस" सूची के शीर्ष पर पहुंच जाएगा, लेकिन फिर वोटों के नीचे गिर जाएगा अंदर आना बंद करो

(मैं एक MySQL + PHP का उपयोग कर रहा हूं, लेकिन मुझे सामान्य डिज़ाइन पैटर्न में दिलचस्पी है)।


मेरी अपनी साइट पर, मैं प्रत्येक एंट्री एक मोनोटोनिक रूप से बढ़ती श्रृंखला (नए पदों को अधिक संख्याएं प्राप्त करता है) से एक अद्वितीय पूर्णांक प्रदान करता हूं। प्रत्येक वोट एक की संख्या बढ़ता है, और प्रत्येक नीचे वोट एक करके घटता है (आप इन मूल्यों को ज़ाहिर कर सकते हैं)। फिर, बस 'हॉट' प्रविष्टियों को प्रदर्शित करने के लिए नंबर के अनुसार सॉर्ट करें


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

वह यह बोली प्रदान करता है:

प्रदर्शन की चाबी सुंदरता है, विशेष मामलों की बटालियन नहीं।

जो एचएन फ्रंट पेज बनाने के लिए कथित एल्गोरिदम के प्रकाश में है:

(पी -1) / (टी + 2) ^ 1.5

कहा पे

पी = एक लेख के अंक और

लेख प्रस्तुत करने से टी = समय

एक अच्छा प्रारंभिक बिंदु हो सकता है


मैंने एक वीडियो एग्रीगेटर के लिए Reddit के रैंकिंग एल्गोरिदम का एक एसक्यूएल संस्करण लागू किया है:

SELECT id, title
FROM videos
ORDER BY 
    LOG10(ABS(cached_votes_total) + 1) * SIGN(cached_votes_total)   
    + (UNIX_TIMESTAMP(created_at) / 300000) DESC
LIMIT 50

* cached_votes_total * एक ट्रिगर द्वारा अपडेट किया जाता है जब भी कोई नया वोट डाला जाता है। यह हमारी वर्तमान साइट पर तेजी से चलाता है, लेकिन मैं एक रैंकिंग मान कॉलम जोड़ने और इसे * cached_votes_total * column के समान ट्रिगर के साथ अपडेट करने की योजना बना रहा हूं। उस ऑप्टिमाइज़ेशन के बाद, यह किसी भी आकार साइट के लिए तेजी से पर्याप्त होना चाहिए।







digg