بقدر ما أستطيع استنتاجه، لا يقوم نظام Discourse بتتبع الإشارات بشكل صريح، لكنه يتتبع الروابط المضافة إلى المواضيع. سيتم تسجيل إشارة إلى مجموعة في منشور كقيمة للحقل url في جدول topic_links بالشكل التالي: "/groups/<group_name>". يجب أن يعطيك الاستعلام التالي نتائج قريبة مما تبحث عنه. ستحتاج إلى تزويد القيم لمعلمات start_date و end_date. يجب أن تكون هذه التواريخ بالصيغة yyyy-mm-dd. على سبيل المثال، للحصول على بيانات للسنة الماضية، أدخل 2020-01-01 كقيمة لـ start_date و 2020-12-31 كقيمة لـ end_date:
--[params]
-- date :start_date
-- date :end_date
WITH group_mentions AS (
SELECT
split_part(url, '/', 3) AS group_name
FROM topic_links tl
JOIN topics t ON t.id = tl.topic_id
WHERE internal = true
AND url LIKE '/groups/%'
AND t.deleted_at IS NULL
AND t.archetype = 'regular'
AND tl.created_at::date BETWEEN :start_date AND :end_date
)
SELECT
gm.group_name,
COUNT(gm.group_name) AS mention_count
FROM group_mentions gm
JOIN groups g ON g.name = gm.group_name
WHERE g.created_at::date <= :start_date
GROUP BY gm.group_name
ORDER BY mention_count DESC
الاستعلام يعيد فقط الإشارات المضافة إلى المنشورات العادية (مع أنه يشمل الإشارات المضافة إلى منشورات الهمس). إذا كنت ترغب في تضمين الإشارات المضافة إلى الرسائل الشخصية في النتائج، فاحذف السطر AND t.archetype = 'regular' من الاستعلام الأول.
أخبرني إذا لم يكن هذا يعيد نوع البيانات الذي تبحث عنه. سأحاول الإجابة على أسئلتك الأخرى غدًا إذا لم يجب عليها أحد قبل ذلك.