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