Горячая сортировка для вложенных ответов

Если на вашем сайте включены вложенные ответы, теперь вы можете позволять участникам сортировать ответы по критерию Актуальность (Hot). Такой порядок сортировки выводит на поверхность обсуждения, в которые люди действительно вовлечены прямо сейчас, а не просто самые популярные или самые свежие сообщения.

Зачем это нужно

Сортировка по популярности поощряет ответы, которые набрали лайки за всё время существования темы, что обычно приводит к тому, что ранние популярные посты навсегда застревают наверху. Сортировка по новизне показывает последнюю активность, но не даёт представления о том, что действительно стоит прочитать. Актуальность занимает промежуточное положение: она отдаёт предпочтение ответам, которые получают лайки и появляются недавно, поэтому активная дискуссия, идущая глубоко в теме, может подняться наверх в процессе обсуждения — и плавно опуститься вниз, когда затихнет.

Это особенно важно для вложенных ответов по сравнению с плоскими темами, поскольку активность часто происходит внутри подветок. Сортировка по актуальности учитывает это: когда ответ, спрятанный на трёх уровнях вглубь, начинает набирать популярность, его родительская ветка также поднимается, чтобы читатели могли его найти.

Как это работает

Для каждого ответа вычисляется индекс актуальности на основе трёх факторов:

  • Вовлечённость — лайки и прямые ответы, взвешенные и логарифмически масштабированные, чтобы один очень популярный пост не доминировал вечно
  • Свежесть — бонус за новые сообщения, который уменьшается с периодом полураспада 7 дней, чтобы недавние публикации имели равные шансы с уже устоявшимися
  • Активность ветки — актуальный ответ передаёт свой индекс своим предкам (с небольшим штрафом за каждый уровень), поэтому ветки, содержащие горячие обсуждения, всплывают наверх, а не только отдельные посты

С технической точки зрения индексы актуальности вычисляются по требованию. Для тем, которые никто не сортирует по актуальности, ничего не вычисляется. В первый раз, когда кто-то запрашивает сортировку по актуальности для темы, индексы вычисляются в фоновом процессе и кэшируются. Этот запрос выполняется с использованием сортировки по популярности; при последующих посещениях пользователи получают реальные результаты. Кэшированные индексы считаются свежими в течение 30 минут — после этого следующий запрос по-прежнему мгновенно получает кэшированный порядок, пока в фоне не будет поставлена в очередь задача на обновление.

Несколько разумных оптимизаций: для очень маленьких тем (5 постов или меньше) и тем, в которых не было новых постов в течение 30 дней, просто используется сортировка по популярности, поскольку в них нет ничего существенного, что мог бы добавить индекс актуальности. На практике это означает, что сортировка по актуальности добавляет практически нулевую нагрузку на те части вашего сайта, где она не принесла бы пользы.

Как включить эту функцию

  1. На сайте и для темы должны быть включены вложенные ответы (либо через глобальные настройки по умолчанию, либо через настройки категории)
  2. Включите параметр nested replies hot sort enabled в настройках администратора. Это добавит опцию hot в список вариантов сортировки
  3. Вы можете дополнительно установить её как порядок сортировки по умолчанию в параметре Nested replies default sort

Формула расчёта индекса (веса лайков, веса ответов, период полураспада свежести и т. д.) можно настроить через скрытые настройки сайта, если вам нужно адаптировать её под ритм вашего сообщества, но значения по умолчанию разработаны так, чтобы работать хорошо сразу после установки.

Приятного общения!

5 лайков