是否可以获取给定日期范围内的搜索记录完整列表,而不仅仅是前 100 条?
我认为这可能是数据探索查询的一个候选。我需要仔细查找一下来构建确切的查询,但我认为数据在 search_logs 表中。
如果您需要任何额外的帮助,请告诉我。 ![]()
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] 语法定义了一个名为 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 表。![]()
我来看看能弄出什么。
![]()
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
希望这有帮助,但如果您想要任何调整,请告诉我。 ![]()
5 个赞
太棒了,谢谢!我会转告我的管理员 ![]()
1 个赞
我们运行了这个查询,它完美地运行了,再次感谢!
2 个赞