Иногда от других внутренних команд поступают требования по поиску определённой информации. Этот запрос оказался для нас полезным, чтобы найти необходимое.
-- [params]
-- user_id :user
-- int_list :category_ids = 0
SELECT
p.id AS post_id,
p.raw,
p.created_at,
p.topic_id
FROM posts p
WHERE p.user_id = :user
AND p.topic_id IN (
SELECT t.id
FROM topics t
WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
AND t.archetype <> 'private_message'
)
AND p.raw LIKE '%```%'
Я не уверен, экспортируете ли вы эти данные, но если вы используете их в Data Explorer, один из удобных приёмов, к которому я всегда обращаюсь для всех поисков по пользователям, — это параметр user_id, который предоставляет очень простое поле ввода для поиска:
-- [params]
-- user_id :user
-- int_list :category_ids = 0
SELECT
p.id AS post_id,
p.raw,
p.created_at,
p.topic_id
FROM posts p
WHERE p.user_id = :user
AND p.topic_id IN (
SELECT t.id
FROM topics t
WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
AND t.archetype <> 'private_message'
)
AND p.raw LIKE '%```%'
Этот вариант также включает «магию» AS post_id, превращающую p.id в рабочую ссылку в результатах на экране, а также расширяет параметр категории, позволяя выбирать все категории сразу или несколько (0 — все, или список через запятую для нескольких, например 4, 5, 6).
Этот запрос работает довольно быстро, но вот ещё один совет с альтернативным методом поиска по ключевым словам:
Я обновил свой первоначальный запрос с этим! На самом деле я использовал SQL-конструктор Discourse AI, чтобы помочь мне это сделать. Это был поистине невероятный опыт, который экономит мне, вероятно, 4–5 часов каждую неделю.
Существуют параметры category_id и group_id, хотя они не так удобны, как user_id, где появляется выпадающий список (они работают путем ввода имени, которое автоматически преобразуется в идентификатор). Тем не менее, они могут быть довольно полезны.
(Также ещё одна общая полезная информация, которая может помочь улучшить некоторые запросы с поддержкой ИИ, доступна здесь: Common Discourse data tips)