Под пользовательскими сообщениями на моем сайте у меня есть рейтинговая система, подобная Amazon:
Was this review helpful to you: Yes | No
Если есть голоса, я отображаю результаты над этой строкой следующим образом:
5 of 8 people found this reply helpful.
Я хотел бы отсортировать сообщения на основе этих рейтингов. Если бы вы ранжировали посты от наиболее полезных к наименее полезным, как бы вы расположили следующие посты?
a) 1/1 = 100% helpful
b) 2/2 = 100% helpful
c) 999/1000 = 99.9% helpful
b) 3/4 = 75% helpful
e) 299/400 = 74.8% helpful
Понятно, что сортировать только по проценту полезности неправильно, нужно каким-то образом учитывать общее количество голосов. Есть ли стандартный способ сделать это?
ОБНОВЛЕНИЕ:
Используя формулы Чарльза для расчета нижнего диапазона Агрести-Коулла и сортировки по нему, приведенные выше примеры будут сортироваться следующим образом:
1) 999/1000 (99.9%) = 95% likely to fall in 'helpfulness' range of 99.2% to 100%
2) 299/400 (74.8%) = 95% likely to fall in 'helpfulness' range of 69.6% to 79.3%
3) 3/4 (75%) = 95% likely to fall in 'helpfulness' range of 24.7% to 97.5%
4) 2/2 (100%) = 95% likely to fall in 'helpfulness' range of 23.7% to 100%
5) 1/1 (100%) = 95% likely to fall in 'helpfulness' range of 13.3% to 100%
Интуитивно это кажется правильным.
ОБНОВЛЕНИЕ 2:
С точки зрения приложения, я не хочу выполнять эти вычисления каждый раз, когда я открываю список сообщений. Я думаю, что либо обновлю и сохраню нижнюю границу Агрести-Коулла, либо по регулярному расписанию, управляемому cron (обновление только тех сообщений, которые получили голосование с момента последнего запуска), либо обновлю его всякий раз, когда будет получено новое голосование. .