Логи поиска — как получить полный список за заданный диапазон дат?

Есть ли способ получить полный список поисковых запросов за заданный диапазон дат, а не только топ-100?

Думаю, это может быть подходящим для запроса в Data Explorer. Мне нужно будет немного покопаться, чтобы составить точный запрос, но, по-моему, данные находятся в таблице search_logs.

Дайте знать, если понадобится дополнительная помощь. :slight_smile:

Я не знаю SQL, но вот что мне ответил ChatGPT, когда я спросил, как запросить логи поиска за последние 3 месяца. Сработает ли это (у меня нет прав администратора, чтобы проверить, но я хочу предоставить администратору готовый запрос).


Чтобы получить все данные логов поиска за последние 3 месяца с помощью 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. Этот параметр позволяет указать дату, за которую нужно получить данные логов поиска. Затем запрос использует этот параметр для фильтрации логов поиска за последние 3 месяца от указанной даты.

Чтобы использовать этот запрос в 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».

Запрос вернет все данные логов поиска за последние 3 месяца от указанной даты, а результаты будут отображены в виде таблицы.

Думаю, это неверно. У нас, кажется, нет таблицы action_logs. :thinking:

Давайте я посмотрю и попробую что-нибудь собрать. :+1: :slight_smile:

Думаю, что-то вроде этого будет более подходящим:

-- [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 "CTR"
FROM results
ORDER BY searches DESC

Надеюсь, это поможет, но дайте знать, если нужны какие-то правки. :slight_smile:

Это здорово, спасибо! Я передам это моему администратору :grinning:

Мы выполнили этот запрос, и всё сработало идеально, ещё раз спасибо!