Как вы строите реализацию рейтингов? - PullRequest
6 голосов
/ 29 августа 2008

Нам нужна система «рейтинга» в проекте, над которым мы работаем, подобная той, что в SO. Тем не менее, у нас есть несколько сущностей, которые нужно пометить с помощью голосования вверх (только вверх, а не вниз, как приращение). Иногда нам нужно будет показать все объекты в порядке их наивысшего рейтинга, независимо от типа объекта, в основном, смешивая наборы результатов, я полагаю. Какие структуры данных / алгоритмы вы используете для реализации этого, чтобы он был гибким и все еще масштабируемым?

1 Ответ

6 голосов
/ 29 августа 2008

Поскольку алгоритм ранжирования reddit рушится, имеет смысл взглянуть на него, если не скопировать его:


Учитывая время публикации записи A и время 7:46:43 утра 8 декабря 2005 г. B мы имеем t s как их разницу в секундах:

т с = A - B

и x как разница между количеством поднятых голосов U и количеством поданных голосов D:

x = U - D

Где

y = 1 if x > 0
y = 0 if x = 0
y = -1 if x < 0

и z как максимальное значение абсолютного значения x и 1:

z = |x| if |x| >= 1
z = 1 if |x| < 1

у нас есть рейтинг как функция & fnof; (t s , y, z):

& fnof; (t s , y, z) = log 10 z + (y & bull; t s ) / 45000


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...