Итак, я только что построил систему рейтинга звезд и попытался придумать алгоритм для перечисления пунктов «Лучшие». Для простоты здесь столбцы:PHP/MySQL - алгоритм для «Top Rated»
item_name
average_rating (a decimal from 1 to 5)
num_votes
Я пытаюсь определить «сладкое пятно» между количеством голосов и рейтинга. Например ...
- Элемент рейтинга (4,6/20 голосов) должно быть выше в списке, чем элемент, который (в 5.0/2 голосов)
- Элемент рейтинга (2.5/100 голосов) должен быть ниже элемента, который (в 4.5/2 голосов)
Итак, другими словами, NUM_VOTES играет фактор в том, что это «Top».
Кто-нибудь знает об алгоритме, который очень хорош при определении этого «сладкого пятна»?
Заранее спасибо.
В дополнение к этому, есть и этот вариант, это немного более интенсивно: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html Байесовский рейтинг, вероятно, намного лучше, хотя , Однако это интересный другой подход. – brianreavis
Это решение хорошее, но у него есть тот недостаток, что вам нужно знать среднее число голосов и рейтингов! Это означает больше [!] Запросов MySQL для каждого расчета рейтинга. – tuergeist
, что страница evanmiller.org - это та, которую я действительно искал, поскольку это также отличный алгоритм. я не мог найти его на работе, потому что по какой-то причине он заблокирован фильтром содержимого. – longneck