6

在我们正在进行的项目中,我们需要一个“评级”系统,类似于 SO 中的系统。但是,在我们的系统中,有多个实体需要通过投票来“标记”(仅向上,从不向下,就像增量一样)。有时我们需要按照评分最高的顺序显示所有实体,不管实体类型如何,我猜基本上是混合结果集。您使用什么数据结构/算法来实现这一点,以便灵活且仍可扩展?

4

1 回答 1

6

由于 reddit 的排名算法很震撼,如果不复制它,看看它是非常有意义的:


鉴于条目发布的时间 A 和 2005 年 12 月 8 日上午 7:46:43 B 的时间,我们将 t作为它们的秒差:

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

我们将评分作为函数 ƒ(t s , y, z):

ƒ(t s , y, z) = log 10 z + (y • t s )/45000


于 2008-08-29T17:20:34.947 回答