Я хотел бы узнать, какие сообщения на моём форуме получили больше всего лайков с момента запуска на Discourse (почти 4 года назад).
Я поискал здесь и нашёл это, что, похоже, тот же самый вопрос, но тема закрыта, поэтому я не могу добавить туда:
Решения, предложенные в той теме пользователем @dax, на самом деле не дают того, что ищу я (или тот другой заявитель):
discourse.example.com/?order=likes (лайки показываются для всех тем)
или discourse.example.com/search, ввести in:likes и отсортировать результаты по «самым лайкаемым»
Первый способ вообще не работает (и просто возвращает на домашнюю страницу моего форума).
Второй возвращает результаты только для самых лайкаемых постов, которые лайкнул я сам. Смотрите здесь:
Когда я ввожу in:likes в поле поиска, автоматически ставится галочка «Мне понравилось». Если я затем снимаю эту галочку, текст in:likes в поле поиска тоже исчезает. Я не могу одновременно иметь in:likes в поле поиска и снятую галочку «Мне понравилось».
Так что это не даёт мне того, что я хочу узнать. Есть ли способ это сделать?
Я только что создал этот запрос для Data Explorer с помощью Gemini. Он показывает топ-10 самых лайкнутых постов за всё время.
-- Запрос для получения топ-10 самых лайкнутых постов за всё время (для современных версий Discourse)
SELECT
p.id AS post_id,
p.like_count,
CONCAT('/t/', t.slug, '/', t.id, '/', p.post_number) AS url,
t.title AS topic_title,
p.user_id,
u.username
FROM posts AS p
JOIN topics AS t ON t.id = p.topic_id
JOIN users AS u ON u.id = p.user_id
WHERE p.deleted_at IS NULL
AND t.deleted_at IS NULL
AND p.post_type = 1 -- 1 для обычных постов
ORDER BY p.like_count DESC
LIMIT 10