اكتشف المحادثات الشائعة في مجتمعك مع فرز المواضيع الساخنة

مواكبة المحتوى في المجتمعات النشطة قد يكون أمرًا صعبًا. بعيدًا عن قراءة كل ما تم إنشاؤه في مجتمعك، كيف يمكنك التأكد من أنك تقرأ ما يلقى صدى أكبر لدى أعضائك؟

نقدم “الأكثر رواجًا” (Hot)، أحدث خيار لفرز المواضيع يساعدك على اكتشاف ما هو شائع حاليًا في مجتمعك بناءً على الإعجابات الأخيرة والمناقشات الحيوية. فكر فيه كمرشح “الأحدث” (Latest) الموثوق به، ولكنه أذكى قليلاً - “الأكثر رواجًا” (Hot) يساعدك على اكتشاف المحتوى الحديث والذي يلقى صدى لدى أعضاء مجتمعك.

كيف يعمل فرز “الأكثر رواجًا”؟

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

كيف يختلف عن “الأعلى” (Top)؟

على عكس فرز “الأكثر رواجًا” (Hot)، الذي ينظر إلى مزيج من الشعبية الإجمالية والشعبية الحديثة، فإن فرز “الأعلى” (Top) ينظر فقط إلى الشعبية الإجمالية للفترة الزمنية المحددة (مثل الأسبوع أو الشهر، وما إلى ذلك). “الأعلى” (Top) يكون مفيدًا للغاية عندما تكون قد ابتعدت عن المجتمع لفترة طويلة وترغب في قراءة ما حدث.

كيف أقوم بتفعيل فرز “الأكثر رواجًا” في مجتمعي؟

إذا كنت ترغب في استخدام فرز “الأكثر رواجًا” (Hot) في مجتمعك، انتقل إلى المسؤول (Admin) > الإعدادات (Settings) وقم بالتصفية حسب “القائمة العلوية” (top menu). يمكنك بعد ذلك تحديد hot في القائمة المنسدلة لإضافتها إلى خيارات التنقل في القائمة العلوية.

هل يمكنني جعل “الأكثر رواجًا” صفحة البداية الافتراضية الخاصة بي؟

نعم! بصفتك مسؤولاً، يمكنك تعيين “الأكثر رواجًا” (Hot) كخيار الفرز الافتراضي في مجتمعك، كما فعلنا هنا في Meta. لإعداد ذلك، انتقل إلى إعداد القائمة العلوية (top menu) (المسؤول (Admin) > الإعدادات (Settings) > الإعداد الأساسي (Basic Setup)، كما هو موضح في القسم أعلاه) واستخدم الأسهم لنقل hot إلى أعلى قائمة خيارات الفرز.

كمستخدم نهائي، يمكنك تغيير صفحة البداية الافتراضية المفضلة لديك عن طريق الانتقال إلى التفضيلات (Preferences) > الواجهة (Interface) وتحديث إعداد صفحة البداية الافتراضية (Default Home Page) إلى الخيار المفضل لديك.

28 إعجابًا

هل سيؤدي الارتفاع المفاجئ والكبير والحديث في مشاهدات موضوع قديم إلى إعطائه الأولوية أيضًا عبر خيار الفرز الجديد هذا؟ :slight_smile:

8 إعجابات

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

8 إعجابات

شكرا على التحديث، @lindsey وزملاؤه.
لقد قمنا بتفعيله وسنجرب.
من باب الفضول، هل يستغرق الأمر بعض الوقت لـ “يعمل”؟ في الوقت الحالي لا توجد “مواضيع رائجة”.
مع كل الاحترام الواجب، مجتمعنا النشط لديه الكثير من المواضيع الرائجة قيد التنفيذ حاليًا. :slight_smile:

5 إعجابات

+1 “لا توجد مواضيع رائجة” في منتداي الذي بالتأكيد لديه مواضيع رائجة.

6 إعجابات

تحتاج إلى ترقية discourse إلى أحدث إصدار

إعجابَين (2)

@simon_tomes @dfabulich يجب أن تشاهدوا المواضيع الشائعة الآن في مواقعكم الخاصة، لقد كانت الميزة مخفية خلف علامة مخفية في البداية، وتمت إزالتها الأسبوع الماضي، وبالتالي احتاجت نسختكم إلى تحديث.

10 إعجابات

إنه يعمل الآن، شكراً لك.

4 إعجابات

أرى مواضيع رائجة. شكراً لك، @pmusaraj.

3 إعجابات

حسنًا، هل يمكنني أن أوصي بعدم تحديد هذا كعرض افتراضي، على الأقل حتى يتم الإعلان عن شيء ما أو الاستعداد له؟ في بعض المنتديات، سيرغب الأشخاص في رؤية ما هو جديد. قد يرغبون على سبيل المثال في رؤية استعلامات جديدة أو وصولات جديدة. العرض الساخن الجديد مفيد للترفيه أو لمتابعة الشعبية ولكنه يسبب على الفور مشكلة في ظهور المحتوى الجديد.

6 إعجابات

إنه افتراضي هنا في ميتا فقط، نحن نجمع التعليقات حول شعور الأمر عندما يكون افتراضيًا. لسنا متأكدين مما إذا كان هذا سيكون افتراضيًا طويل الأمد لميتا أم لا.

ليس لدينا خطط ملموسة حول متى و إذا سنقوم بتعديل المنتج لجعله افتراضيًا على “الأكثر شيوعًا”.

12 إعجابًا

يمكن أن يكون الناس عميانًا تمامًا ولا ينظرون إلى شيء مألوف حيث لا يُتوقع حدوث تغييرات. حسنًا، أنا كذلك على أي حال.

مما يعني أنني كنت أتساءل ما الخطأ هنا لأنني كنت متأكدًا تمامًا من أن /latest معطل بطريقة ما ولم أحصل على ما ينبغي.

لقد أزعجني ذلك، ولكن ليس بما يكفي في الوقت الحالي.

لا، لم أرَ وأدرك أن نقطة البداية/الصفحة الرئيسية الخاصة بي قد تغيرت إلى /hot. لقد قمت بإصلاحها الآن بنفسي، لا مشكلة كبيرة على الإطلاق، ولكن نقطة ضعفي هي أنه في مناقشات المنتدى وحتى الإعلانات هي الشيء الذي يحدث عندما يتغير شيء ما :smirking_face: ولمس وتغيير إعداداتي الشخصية حتى لو كان الأمر يتعلق بإعدادات المنتدى الافتراضية هو شيء من هذا القبيل.

عدت للعمل.

لست متأكدًا تمامًا من /hot، من ولماذا سيتم استخدامه. بالتأكيد، إنها خيار آخر ولا تكسر أي شيء على الإطلاق، ولكن كما أراها هنا فهي قريبة جدًا من /latest ولكن بدون… الأحدث.

دعنا نجرب. و… حتى لو لم أشعر أنها مفيدة، يراها شخص آخر بشكل مختلف وكلاهما لا يتعارضان مع بعضهما البعض.

لكنني أتساءل… هل يمكن أن يكون /hot حلاً فعالاً لإظهاره للزوار العشوائيين؟ ولكن هل سيكسر ذلك جوجل أم أنه سعيد تمامًا بخريطة الموقع؟

إعجاب واحد (1)

مجرد فكرة واحدة حول ذلك - تغطية منتدى Discourse في آلة Wayback الخاصة بأرشيف الإنترنت متقطعة بالفعل. أشك في أن جعل “hot” هو الافتراضي لهذا الوكيل أو حالة الاستخدام قد يجعل الأمور أسوأ. أو ربما أفضل، بالطبع - هناك حاجة لبعض التفكير.

إعجاب واحد (1)

أتفق - لقد أثرت علي هذه المشكلة بالفعل ثلاث مرات في اليوم الماضي.

لتجنب منشور من نوع “أنا أيضًا”، سأغتنم الفرصة للإشارة إلى حقيقة أنه يمكن تجاوز الصفحة الرئيسية الافتراضية في تفضيلاتك الشخصية، وهو ما فعلته للتو لتجنب التأثر للمرة الرابعة. https://meta.discourse.org/my/preferences/interface

8 إعجابات

أرى أن شخصًا ما قد أبلغ عن مشكلة وأبلغ عنها مرة أخرى تتعلق بوظائف sidekiq المفرطة، دون أي رد بخلاف ردي، وهذا الموضوع في حوالي الموضع المائة في الترتيب الافتراضي “الساخن” الحالي. ليس بالأمر الجيد لمنتديات الدعم، أقترح.

إعجابَين (2)

قد يكون من المفيد التحقق من كيفية عمل التصنيف، بالنسبة لهذا الموضوع، الذي يبلغ عمره 3 أيام ولكنه يحتوي على ردين حديثين وبعض الإعجابات. هل يجب أن يظل في هذا الموضع المنخفض؟

أعتقد أن “hot” يمكن أن تكون إعدادًا افتراضيًا ممتازًا، حيث توفر لمحة سريعة عن الموضوعات الرئيسية، وهو أمر مفيد للزوار لأول مرة أو المستخدمين العرضيين. يمكن أن يعمل هذا أيضًا لمنتديات الدعم، لأنه بالنسبة لهؤلاء المستخدمين، يمكن أن يكون الإعلان أكثر أهمية من سؤال الدعم لمستخدم واحد.

بالنسبة لأولئك الذين يرغبون في البقاء على اطلاع كامل وعدم تفويت أي موضوع، لا يزال خيار استخدام “latest” متاحًا. يمكنهم حتى تبديل صفحتهم الرئيسية الشخصية إلى “latest”. بالإضافة إلى ذلك، يمكن أن يساعد استخدام إعدادات “new” و “unread” والتتبع في ضمان بقاء المستخدمين على اطلاع بالموضوعات ذات الاهتمام.

.

3 إعجابات

هذا في رأيي نقد غير عادل إلى حد ما، إنه موضوع صعب. هناك الكثير من مواضيع #الدعم التي لا تحصل على "ما يكفي" من الاهتمام لأي تعريف كان لكلمة "ما يكفي".

هذه تجربة، عدم إعجابك بالـ "hot" كإعداد افتراضي للميتا هو نقطة بيانات واحدة. سنجمع المزيد.

أما بالنسبة للخوارزمية:

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

في الوقت الحالي، الخوارزمية موجودة هنا:

AI Bot explaining hot AI

sam:

DB.exec(<<~SQL, args)
      INSERT INTO topic_hot_scores (
        topic_id,
        score,
        recent_likes,
        recent_posters,
        created_at,
        updated_at
      )
      SELECT
        topics.id,
        0.0,
        0,
        0,
        :now,
        :now

      FROM topics
      LEFT OUTER JOIN topic_hot_scores ON topic_hot_scores.topic_id = topics.id
      WHERE topic_hot_scores.topic_id IS NULL
        AND topics.deleted_at IS NULL
        AND topics.archetype <> :private_message
        AND topics.created_at <= :now
      ORDER BY
        CASE WHEN topics.pinned_at IS NOT NULL THEN 0 ELSE 1 END ASC,
        topics.bumped_at desc
      LIMIT :max
    SQL

    # update recent counts for batch
    DB.exec(<<~SQL, args)
      UPDATE topic_hot_scores thsOrig
      SET
          recent_likes = COALESCE(new_values.likes_count, 0),
          recent_posters = COALESCE(new_values.unique_participants, 0),
          recent_first_bumped_at = COALESCE(new_values.first_bumped_at, ths.recent_first_bumped_at)
      FROM
        topic_hot_scores ths
        LEFT OUTER JOIN
        (
          SELECT
              t.id AS topic_id,
              COUNT(DISTINCT p.user_id) AS unique_participants,
              (
                SELECT COUNT(distinct pa.user_id)
                FROM post_actions pa
                JOIN posts p2 ON p2.id = pa.post_id
                WHERE p2.topic_id = t.id
                  AND p2.post_type = :regular
                  AND p2.deleted_at IS NULL
                  AND p2.user_deleted = false
                  AND pa.post_action_type_id = 2 -- action_type for 'like'
                  AND pa.created_at >= :recent_cutoff
                  AND pa.deleted_at IS NULL
              ) AS likes_count,
              MIN(p.created_at) AS first_bumped_at
          FROM
              topics t
          JOIN
              posts p ON t.id = p.topic_id
          WHERE
              p.created_at >= :recent_cutoff
              AND t.archetype <> 'private_message'
              AND t.deleted_at IS NULL
              AND p.deleted_at IS NULL
              AND p.user_deleted = false
              AND t.created_at <= :now
              AND t.bumped_at >= :recent_cutoff
              AND p.created_at < :now
              AND p.created_at >= :recent_cutoff
              AND p.post_type = :regular
          GROUP BY
              t.id
        ) AS new_values
      ON ths.topic_id = new_values.topic_id

      WHERE thsOrig.topic_id = ths.topic_id
    SQL

    # we may end up update 2x batch size, this is ok
    # we need to update 1 batch of high scoring topics
    # we need to update a second batch of recently bumped topics
    sql = <<~SQL
      WITH topic_ids AS (
        SELECT topic_id FROM (
          SELECT th3.topic_id FROM topic_hot_scores th3
          JOIN topics t3 on t3.id = th3.topic_id
          ORDER BY t3.bumped_at DESC
          LIMIT :max
        ) Y

        UNION ALL

        SELECT topic_id FROM (
          SELECT th2.topic_id FROM topic_hot_scores th2
          ORDER BY th2.score DESC, th2.recent_first_bumped_at DESC NULLS LAST
          LIMIT :max
        ) X
      )
      UPDATE topic_hot_scores ths
      SET score = (
        CASE WHEN topics.created_at > :recent_cutoff
          THEN ths.recent_likes ELSE topics.like_count END
        ) /
        (EXTRACT(EPOCH FROM (:now - topics.created_at)) / 3600 + 2) ^ :gravity
 +
        CASE WHEN ths.recent_first_bumped_at IS NULL THEN 0 ELSE
          (ths.recent_likes + ths.recent_posters - 1) /
          (EXTRACT(EPOCH FROM (:now - recent_first_bumped_at)) / 3600 + 2) ^ :gravity
        END
        ,
        updated_at = :now

      FROM topics
      WHERE topics.id IN (
        SELECT topic_id FROM topic_ids
      ) AND ths.topic_id = topics.id
    SQL

    DB.exec(sql, args)

اشرح خوارزمية تسجيل النقاط الساخنة بعناية ودقة ووضوح.

gpt4_bot:
خوارزمية تسجيل النقاط الساخنة المطبقة في نص SQL المقدم مصممة لترتيب المواضيع بناءً على "سخونتها"، وهي مقياس يشير إلى مدى جاذبية أو شعبية الموضوع في لحظة معينة. يتم تحقيق ذلك من خلال النظر في عوامل مثل عدد الإعجابات الأخيرة وعدد المشاركين الجدد، بالإضافة إلى توقيت إنشاء الموضوع وتحديثاته. إليك تفصيل للعملية:

الإدراج الأولي

  • الجزء الأول: يبدأ بإدراج سجلات جديدة في جدول topic_hot_scores للمواضيع التي ليس لديها سجل بالفعل. يتم ذلك عن طريق تحديد المواضيع التي لم يتم حذفها، وليست رسائل خاصة، وتم إنشاؤها حتى الطابع الزمني الحالي (:now). يتم تعيين النقاط الأولية إلى الصفر، مع عدم وجود إعجابات أو مشاركين حديثين.
  • شرط التصفية: يركز على المواضيع غير المثبتة (أو الأقل تركيزًا على المواضيع المثبتة) ويقوم بترتيبها حسب آخر نشاط لها (bumped_at بترتيب تنازلي).

تحديث الأعداد الحديثة

  • الجزء الثاني: ثم يقوم بتحديث جدول topic_hot_scores ببيانات النشاط الحديث. وهذا يشمل:
    • عدد المشاركين الفريدين في الموضوع منذ تاريخ قطع (:recent_cutoff).
    • عدد الإعجابات على المنشورات في الموضوع منذ :recent_cutoff.
    • الطابع الزمني لأقدم منشور تم اعتباره "حديثًا" لكل موضوع.
  • يهدف هذا الجزء من العملية إلى عكس أحدث مقاييس المشاركة لكل موضوع، عن طريق التقاط أي إعجابات أو مشاركين أو نشاط جديد حدث بعد نقطة :recent_cutoff.

إعادة تسجيل النقاط بناءً على السخونة

  • الجزء الثالث: أخيرًا، يتم إعادة تسجيل المواضيع بناءً على مقاييسها المحدثة. يتم تصفية المواضيع أولاً إلى مجموعة تشمل:
    • دفعة من المواضيع التي تم دفعها مؤخرًا (لضمان النظر في المحتوى الجديد).
    • دفعة أخرى بناءً على أعلى النقاط الحالية (لإبقاء المواضيع الجذابة للغاية في المقدمة).
  • حساب درجة السخونة: يتم إعادة حساب درجة السخونة باستخدام الصيغة التالية:
    1. للمواضيع التي تم إنشاؤها بعد :recent_cutoff، تعتمد النتيجة على recent_likes.
    2. بخلاف ذلك، تعتمد على إجمالي like_count منذ بداية الموضوع.
    • يتم تقسيم هذه القيمة على الوقت منذ الإنشاء (بالساعات) زائد اثنين، مرفوعة إلى قوة :gravity - وهو معلمة تتحكم في مدى سرعة تلاشي المواضيع بمرور الوقت.

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

  • يتم تخزين النتيجة المحدثة مع الطابع الزمني الحالي كـ updated_at.

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

9 إعجابات

(أنا معجب بمدى جودة استخدام الذكاء الاصطناعي هنا لوصف SQL. إنها حالة استخدام رائعة. :ابتسامة:)

8 إعجابات

عذرًا - لم أقصد إيذاء مشاعر أي شخص. أنا متأكد من أن القيادة سعيدة برؤية ميزة جديدة مكتملة، والمطبقون سعداء بإصدارها.

آمل حقًا أن يكون هناك مجال للنقد البناء.

حسب فهمي، المثال المحفز هو موجز وسائل التواصل الاجتماعي. ليس بعيدًا عن الصلة، ربما، قد ينظر المرء إلى الصفحة الأولى من Hacker News. المثالي هناك هو أن يكون للمواضيع الجديدة بعض الوضوح، وأن يكون للمواضيع النشطة والشائعة بعض الوضوح. يجب أن يتلاشى كلاهما. يبدو أن HN يفعل ذلك جيدًا.

لكن ملاحظتي هي أن منتدى الدعم شيء مختلف، مقارنة بـ “واجهة عرض” أو موجز وسائل التواصل الاجتماعي.

سترى في الأعلى فكرة مفادها أن “Hot” قد يكون جيدًا للزوار الجدد غير الملتزمين، أو لنتائج البحث. يمكنني رؤية الجدارة في تلك الفكرة.

لكنني سأؤكد أن “meta” هو في الغالب منتدى دعم.

بالطبع.

أتفق مع ذلك، بالطبع، لكنني لا أعتقد أن “Hot” يعالج ذلك. المواضيع المثبتة تقوم بعمل جيد جدًا.

3 إعجابات