Pull to refresh

Голосование: звездочки или ±, вот в чем вопрос…

Reading time2 min
Views269
Я думаю многие из нас задумывались на тему реализации рейтинга в своих проектах. Как лучше сделать рейтинг того или иного объекта? Голосованием «звездочками» или же «плюс/минус один»?

Хочу рассказать вам одну историю концовкой которой являлось решение — использовать только вариант «плюс/минус один». А случилось все так: на одном из проектов было решено использовать звезды. Был создан универсальный плагин для symfony framework, в который в свою очередь был интегрирован плагин jQuery Star Ajax (кажется он так называется). Все шло хорошо, пока не понадобилось сделать рейтинг пользователей. Тут появился вопрос, а как его собственно считать? Т.е. у нас есть таблица:
Средняя оценка (с. о.)
Сумма всех оценок (с. в. о.)
Кол-во всех оценок (к. в. о)

Где с. о. = с. в. о. / к. в. о.. Так вот каким образом адекватно считать «Топ100 пользователей»? Если у нас к примеру следующая ситуация:
Средняя оценка (с. о.)
Сумма всех оценок (с. в. о.)
Кол-во всех оценок (к. в. о)
5
10
2
4
800
20
2
1800
900
5
5
1

Рассмотрим первый вариант выбора первой топ-сотни:

Сортируем по с. о. и получаем следующий результат
Средняя оценка (с. о.)
Сумма всех оценок (с. в. о.)
Кол-во всех оценок (к. в. о)
5
10
2
5
5
1
4
800
20
2
1800
900

Считаю, что результат не удовлетворителен, т.к. первая и вторая позиция не равнозначны третьей. Ведь каждый новый пользователь (только что зарегистрировавшийся), который получит одну оценку — 5, будет в Топ100, а человек за которого голосовали 20 раз, но средняя оценка его 4 будет на более низкой позиции. То есть данный вариант не справедлив.
Вариант номер два. Сумма всех оценок:

Сортируем по с. в. о., получаем:
Средняя оценка (с. о.)
Сумма всех оценок (с. в. о.)
Кол-во всех оценок (к. в. о)
2
1800
900
4
800
20
5
10
2
5
5
1

Глядя на результат, полагаю, что не требуется даже объяснение причины по которой данный вариант отпадает без разговоров.

Я пытался использовать и двойную сортировку, но все это не приводит к желаемому результату.

Итог

Что я хотел этим сказать? Я всегда был против «звезданутого» рейтинга, но никогда не мог строго объяснить причину. Теперь могу, и объяснил. Используйте ± голосование.

P.S. Проблема актуальна, может кто предложит изящный выход из ситуации?
Tags:
Hubs:
+5
Comments22

Articles

Change theme settings