Обновление расчета рейтинга пользователей.

Полтора года назад мы с @Иван Бочкарев добавили в рейтинг коэффициент активности. В комментариях Іван Клімчук предложил учитывать ещё и возраст самой заметки — я ответил, что идея отличная, и пообещал попробовать. Концепт я сделал, выкатил на боевой сайт и заодно выключил тот самый коэффициент активности, о котором написал двумя неделями раньше. Включить обратно забыл — на полтора года.

Что предложил Іван



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

Я ответил, что идея отличная и что я до неё не додумался. И пообещал попробовать сделать концепт.

Концепт я сделал. И заодно выключил январское обновление



17 января я дописал расчёт по годам и выложил на бой. Заодно закомментировал коэффициент активности — рассуждение было такое, что раз старые заметки и так дешевеют, штрафовать автора второй раз незачем.

Раскомментировать забыл.

Полтора года рейтинг считался не так, как описано в январской статье: возраст заметок учитывался, активность автора — нет. Снаружи подмену было почти не видно, потому что оба коэффициента бьют по одним и тем же людям. Но бьют по-разному. Заметка десятилетней давности дешевеет до 0.1 сама по себе, а вот автор, переставший писать пару лет назад, не получал больше никакого штрафа — все его заметки последних лет продолжали считаться по полной.

Полез я в это только на прошлой неделе, когда решил разобраться, почему в ТОП-20 держатся аккаунты без единой заметки за год.

Как считается теперь



Оба коэффициента работают вместе, как Іван и предлагал.

Коэффициент активности автора — без изменений с января. Писал в последний месяц — 1, от месяца до трёх — 0.8, от трёх до полугода — 0.5, от полугода до года — 0.3, больше года назад — 0.1.

Коэффициент возраста заметки — новый. Теперь каждая публикация и каждый голос весят по тому году, когда случились:

  • 2026 и 2025 — полный вес
  • 2024 — 0.9
  • 2023 — 0.8
  • дальше минус 0.1 за каждый год
  • 2016 и раньше — 0.1, ниже не опускается
Смысл в том, что заметка семилетней давности продолжает приносить автору баллы, но уже не столько же, сколько свежая. А коэффициент активности поверх этого решает, интересен ли автор сообществу прямо сейчас.

Заодно нашлось



Пока разбирался, вылезли две вещи, которые тихо работали неправильно:

  • Дата активности для комментаторов считалась неверно. Бралась не дата комментария, а дата публикации заметки, в которой он оставлен. То есть человек, отвечающий на вопросы в старых ветках, для формулы выглядел молчуном. Таких набралось 14 в первой двухсотке, двое из них — в ТОП-20.
  • Заблокированные снова обнуляются. Эта проверка жила внутри коэффициента активности и полтора года не работала вместе с ним.

Что стало со списком



@Василий Наумкин — пятый. Формула по-прежнему считает его вклад самым большим на портале, но без свежих заметок первые строчки он уступил. Напишет что-нибудь — вернётся на первое место при ближайшем пересчёте.

@Павел Гвоздь поднялся на третье место, @Володя и @Prihod вошли в первую дюжину. Все трое — жертвы той самой ошибки с датой: они всё это время писали, а формула считала их ушедшими.

@Алексей Шумаев, @Павел Романов и @vectorserver зашли в ТОП-20 из третьего десятка.

Ушли из ТОП-20 Іван Клімчук, Михаил и Pavel Zarubin — те самые, кого январская статья уже провожала с первой страницы. Полтора года без коэффициента активности они держались на накопленном.

Тут не могу удержаться: Іван покинул двадцатку из-за коэффициента, который сам же и предложил. В январе он написал «Дорогу молодым» — ну вот, дорога.

И да, первым в списке теперь я. Понимаю, как это выглядит, поэтому скажу прямо: базовые баллы у меня и так были вторыми и от изменения не зависят, поменялся только множитель — потому что я пишу. Формула одна на всех, считает её скрипт по расписанию, а не я руками.

Что дальше



Как и в январе — это не окончательная формула.

Затухание по годам пока применяется не ко всему: баллы за написанные комментарии и за добавление в избранное живут по-старому, без учёта возраста. Плюс коэффициент меняется скачком первого января, а не плавно по месяцам. И то, и другое буду доделывать.

Картина, которую я вижу сейчас, кажется мне честнее прошлогодней: наверху люди, которые пишут, а накопленные заслуги никуда не делись — просто перестали держать место вечно. Но если вы видите иначе или у вас есть идея получше — пишите. Прошлогодняя дискуссия в комментариях вылилась ровно в это обновление, так что смысл в ней есть.
Николай Савин
Николай Савин
1 час назад
modx.pro
26

Комментарии: 1

Артур Шевченко
1 час назад
Мне всё нравится, спасибо)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1