سؤال

كيفية تنفيذ موقع على شبكة الإنترنت مع نظام توصية مماثلة ستاكوفيرفلوو/digg/رديت ؟ I. e., يقدم المستخدمون محتوى الموقع يحتاج إلى حساب نوعا من "السخونة" وفقا مدى شعبية هذا البند.تدفق على النحو التالي:

  • للمستخدمين تقديم المحتوى
  • المستخدمين الآخرين الرأي والتصويت على المحتوى (نفترض 90% من المستخدمين فقط آراء المحتوى و 10% بنشاط الأصوات لأعلى أو لأسفل على المحتوى)
  • محتوى جديد بشكل مستمر المقدمة

كيف يمكنني تنفيذ خوارزمية تحسب "السبب" من تقديم البند ، ويفضل أن يكون ذلك في الوقت الحقيقي ؟ هل هناك أي أفضل الممارسات أو تصميم الأنماط ؟

أود أن نفترض أن الخوارزمية يأخذ بعين الإعتبار الأمور التالية:

  • عندما يكون عنصر قدم
  • عند كل تصويت كان يلقي
  • عندما كان ينظر إلى

E. g.العنصر الذي يحصل ثابت ضئيل من الأصوات سوف تبقى إلى حد ما "الساخنة" باستمرار في حين أن العنصر الذي يتلقى وابلا من الأصوات عندما قدم لأول مرة سيتم الانتقال إلى الجزء العلوي من "السخونة"-قائمة ولكن ثم تسقط كما صوتا التوقف القادمة.

(أنا باستخدام MySQL+PHP ولكن أنا مهتم في تصميم أنماط).

هل كانت مفيدة؟

المحلول

هل يمكن استخدام شيء مشابه رديت الخوارزمية - المبدأ الأساسي الذي قمت بحساب قيمة وظيفة على أساس الوقت كان نشر النتيجة.ما هو أنيق حول رديت الخوارزمية هو أن تحتاج فقط حساب قيمة عندما كانت النتيجة بعد التغييرات.عندما تريد عرض صفحة الاستقبال الخاصة بك ، يمكنك فقط الحصول على أعلى ن الوظائف من قاعدة البيانات الخاصة بك استنادا إلى تلك النتيجة.مع مرور الوقت على درجات تزيد بشكل طبيعي, لذلك لم يكن لديك إلى القيام بأي معالجة خاصة لإزالة العناصر من الصفحة الأولى.

نصائح أخرى

على موقع بلدي ، وأنا تعيين كل إدخال عدد صحيح فريدة من زيادة مفردة النغمة سلسلة (أحدث الوظائف الحصول على أعلى الأرقام).كل ما يصل التصويت يزيد عدد واحد ، وكل أسفل التصويت يقلل ذلك من جانب واحد (يمكنك تعديل تلك القيم ، بالطبع).ثم ببساطة نوع من قبل عدد لعرض أهم المشاركات.

أنا وضعت الاجتماعية ارتباطك الموقع ، مواقع Favoritos, و تستخدم مجمع algoritm:

  1. أول الأصوات المحدودة المستخدم سوى عدد محدود من الأصوات ، وعدد الأصوات يعتمد على المستخدم نقطة.لكسب النقاط يجب على كل مستخدم إضافة الروابط التي تحصل على أصوات إيجابية.
  2. ثم يمكن للمستخدمين التصويت -3,-2,-1,1,2 أو 3 أصوات لكل رابط.كما أصوات محدودة ، كل مستخدم سيتم التصويت فقط على تلك الروابط التي يحلو لهم.
  3. لمنع المستخدم من التصويت فقط على روابط لنفس المستخدم في إنشاء مجموعات دعم النقاط كل تصويت يضيف إلى الرابط يعتمد على racio بين مجموع الأصوات صوتا مقابل وصلات من صاحب صوت الرابط.إذا كنت دائما التصويت على نفس المستخدمين الروابط الأصوات الخاصة بك سوف تفقد قيمتها.
  4. الأصوات تفقد قيمتها مع الوقت.
  5. روابط جديدة من المستخدمين الذين ليس لديهم نقاط (مستخدم جديد) سوف يكون بدءا من 0 نقطة.روابط جديدة من المستخدمين السن سوف يكون نقطة اعتمادا على نقاط.تتراوح بين +3 إلى اللانهائي.وصلات من المستخدمين مع النقاط السلبية السلبية نقطة انطلاق, وصلات من المستخدمين مع نقاط إيجابية إيجابية نقطة انطلاق.

وسيكون للمستخدمين الحصول على نقاط عشوائية عندما الروابط صوت.أصوات إيجابية تعطي نقاط إيجابية ، سلبية الأصوات على النقاط السلبية.

غراهام بول كتب مقال عن ما تعلمه في النامية هاكر الأخبار.يتم التركيز أكثر على الناس/التفاعلات كان يحاول جذب/إنشاء أكثر من الخوارزمية في حد ذاته, ولكن لا تزال تستحق القراءة.على سبيل المثال يناقش نتائج مختلفة عندما قصص فقاعة من القاع (HN) مقابل تنفجر إلى الأعلى (Digg) من الصفحة الأولى.(على الرغم من ما رأيت من حماد ، يبدو أن قصص تنفجر إلى الأعلى هناك أيضا).

يقدم هذا الاقتباس:

مفتاح الأداء والأناقة ، وليس كتائب من الحالات الخاصة.

والتي في ضوء يزعم الخوارزمية لتوليد حماد الصفحة الأولى:

(p - 1) / (t + 2)^1.5

حيث

p = مقال نقاط ،

t = الزمن من تقديم المادة

قد تكون نقطة انطلاق جيدة.

لقد نفذت SQL النسخة رديت خوارزمية الترتيب للحصول على فيديو مجمع مثل ذلك:

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* عمود.بعد أن التحسين ، يجب أن تكون سريعة بما يكفي بالنسبة لمعظم أي حجم الموقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top