Отображать одинаковый ранг при одинаковом счете

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

Как насчёт отображения одинакового номера ранга, когда баллы совпадают? Например, в приведённом выше случае все эти пользователи имели бы ранг 48.

(примечание для контекста: мы переименовали «Cheers» в «Contributions»)

7 лайков

Я зашел на таблицу лидеров здесь, на Meta, и в синем блоке было указано, что мой рейтинг — 30. Но на самом деле он 32. Есть два случая ничьих по баллам выше моих, и я предполагаю, что это и есть причина.

Эти люди отображаются в рейтинге с разными позициями, что является второй ошибкой.

Если бы баллы были 100, 90, 90, 70, то соответствующие люди по общепринятой практике должны были бы занимать места 1-е, 2-е (ничья), 2-е (ничья), 4-е.

(Впервые вообще зашел на эту таблицу, честное слово!)

4 лайка

Я перенес ваш пост сюда @Ed_S, чтобы отчеты были сгруппированы вместе. :+1:

5 лайков

Спасибо — думаю, есть две ошибки.

2 лайка

Похоже, что пользователи с одинаковым количеством лайков теперь имеют равный рейтинг

1 лайк

Да, это поведение настраивается через параметр стратегии ранжирования по баллам:

  • dense_rank (по умолчанию) — создаёт поведение при ничьей, показанное на вашем скриншоте
  • rank — строки с одинаковыми значениями получают одинаковый ранг, следующий ранг увеличивается на количество строк с ничьей
  • row_number — создаёт поведение при ничьей, показанное в исходном сообщении
3 лайка

Действительно! Похоже, что настройка была добавлена вами вскоре после последнего сообщения здесь: PERF: Precompute leaderboards using materialized views (#112) · discourse/discourse-gamification@2eadff6 · GitHub.

Так что, полагаю, это completed и тему можно закрыть.

4 лайка