搜索日志 - 如何获取指定日期范围的完整列表?

是否可以获取给定日期范围内的搜索记录完整列表,而不仅仅是前 100 条?

我认为这可能是数据探索查询的一个候选。我需要仔细查找一下来构建确切的查询,但我认为数据在 search_logs 表中。

如果您需要任何额外的帮助,请告诉我。 :slight_smile:

3 个赞

我不知道 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] 语法定义了一个名为 datedatetime 类型参数。此参数允许您指定要检索搜索日志数据的日期。然后,查询使用此参数从指定日期过滤过去三个月的搜索日志。

要在 Discourse Data Explorer 中使用此查询,请按照以下步骤操作:

  1. 转到您的 Discourse 站点的管理员仪表板。
  2. 在左侧菜单中点击“Data Explorer”。
  3. 点击“New Query”创建一个新查询。
  4. 如果需要,为您的查询命名并添加描述。
  5. 将上面的 SQL 代码复制并粘贴到“Query”文本区域中。
  6. 点击“Save”按钮保存查询。

保存后,您可以通过点击 Data Explorer 中的查询名称来执行它。将弹出一个窗口,要求您输入 date 参数的值。以 YYYY-MM-DD 格式(例如,2023-07-28)提供日期,然后点击“Run Query”。

该查询将从指定日期检索过去三个月的全部搜索日志数据,结果将以表格格式显示。

我不认为那是对的。我不认为我们有 action_logs 表。:thinking:

我来看看能弄出什么。:+1: :slight_smile:

1 个赞

我认为应该更像这样:

-- [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

希望这有帮助,但如果您想要任何调整,请告诉我。 :slight_smile:

5 个赞

太棒了,谢谢!我会转告我的管理员 :grinning:

1 个赞

我们运行了这个查询,它完美地运行了,再次感谢!

2 个赞