هل هناك طريقة للحصول على قائمة كاملة بعمليات البحث لنطاق تاريخ معين، بدلاً من أفضل 100 فقط؟
أعتقد أن هذا قد يكون مرشحًا للاستعلام في مستكشف البيانات. سأحتاج إلى البحث قليلاً لبناء الاستعلام الدقيق، لكنني أعتقد أن البيانات موجودة في جدول search_logs.
أخبرني إذا كنت بحاجة إلى أي مساعدة إضافية. ![]()
لا أعرف لغة SQL، ولكن إليك ما أخبرني به ChatGPT عندما سألته عن كيفية الاستعلام عن سجلات البحث للأشهر الثلاثة الماضية. هل سينجح هذا (ليس لدي حق الوصول الإداري لتجربته، ولكن أود الحصول على استعلام قوي لتمريره إلى المسؤول الخاص بي).
للحصول على جميع بيانات سجلات البحث للأشهر الثلاثة الماضية باستخدام Discourse Data Explorer، يمكنك إنشاء استعلام جديد بالكود التالي:
-- [params]
-- date :datetime
SELECT
action_logs.id AS action_log_id,
action_logs.created_at AS action_log_date,
action_logs.action AS action_type,
users.id AS user_id,
users.username AS user_username,
users.email AS user_email,
user_actions.details AS search_query
FROM
action_logs
JOIN
user_actions ON user_actions.id = action_logs.action_id
JOIN
users ON user_actions.user_id = users.id
WHERE
action_logs.action = 'searched'
AND action_logs.created_at >= :date - INTERVAL '3 months'
ORDER BY
action_logs.created_at DESC;
في هذا الاستعلام، نستخدم صيغة -- [params] لتعريف معلمة تسمى date من نوع datetime. تسمح لك هذه المعلمة بتحديد التاريخ الذي تريد استرداد بيانات سجلات البحث له. ثم يستخدم الاستعلام هذه المعلمة لتصفية سجلات البحث للأشهر الثلاثة الماضية من التاريخ المحدد.
لاستخدام هذا الاستعلام في Discourse Data Explorer، اتبع الخطوات التالية:
- انتقل إلى لوحة تحكم المسؤول في موقع Discourse الخاص بك.
- انقر فوق “Data Explorer” في القائمة اليسرى.
- انقر فوق “New Query” لإنشاء استعلام جديد.
- قم بتسمية استعلامك ووصفه إذا رغبت في ذلك.
- انسخ والصق كود SQL أعلاه في منطقة نص “Query”.
- انقر فوق الزر “Save” لحفظ الاستعلام.
بمجرد الحفظ، يمكنك بعد ذلك تنفيذ الاستعلام بالنقر فوق اسمه في Data Explorer. سيظهر مربع حوار يطلب منك إدخال قيمة المعلمة لـ date. قم بتوفير تاريخ بالتنسيق YYYY-MM-DD (على سبيل المثال، 2023-07-28) وانقر فوق “Run Query”.
سيقوم الاستعلام باسترداد جميع بيانات سجلات البحث للأشهر الثلاثة الماضية من التاريخ المحدد، وسيتم عرض النتائج في شكل جدول.
أعتقد أن هذا ليس صحيحًا. لا أعتقد أن لدينا جدول action_logs. ![]()
دعني ألقي نظرة وأرى ما يمكنني تجميعه.
![]()
أعتقد أن شيئًا كهذا سيكون أفضل:
-- [params]
-- date :start_date
-- date :end_date
WITH results AS (
SELECT LOWER(term) AS term,
COUNT(*) AS searches,
SUM(CASE WHEN search_result_id IS NOT NULL THEN 1 ELSE 0 END) AS click_through
FROM search_logs
WHERE created_at BETWEEN :start_date AND :end_date
GROUP BY term
)
SELECT term AS "مصطلح البحث",
searches AS "عمليات البحث",
click_through AS "النقرات",
CEIL ((click_through/searches::float) * 100) || '%' AS "نسبة النقر إلى الظهور"
FROM results
ORDER BY searches DESC
آمل أن يساعد هذا، ولكن أخبرني إذا كنت تريد أي تعديلات. ![]()
هذا رائع، شكراً لك! سأمرره إلى المسؤول الخاص بي ![]()
لقد قمنا بتشغيل هذا الاستعلام وعمل بشكل مثالي، شكرًا لك مرة أخرى!