在我们正在开发的项目中,我们需要一个"评级"系统,类似于SO中的项目.然而,在我们的实体中,有多个实体需要通过投票来"标记"(仅向上,从不向下,如增量).有时我们需要按照评级最高的顺序显示所有实体,无论实体类型如何,基本上混合结果集,我想.您使用哪些数据结构/算法来实现这一点,以便灵活且可扩展?
由于reddit的排名算法不断变化,如果不复制它,看看它就非常有意义:
鉴于项目被张贴的时间,上午07时46分43秒的时间2005年12月8日乙我们个人有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