您如何建立评级实施?

Sam*_*fee 6 architecture algorithm database-design data-structures

在我们正在开发的项目中,我们需要一个"评级"系统,类似于SO中的项目.然而,在我们的实体中,有多个实体需要通过投票来"标记"(仅向上,从不向下,如增量).有时我们需要按照评级最高的顺序显示所有实体,无论实体类型如何,基本上混合结果集,我想.您使用哪些数据结构/算法来实现这一点,以便灵活且可扩展?

Ser*_*gel 6

由于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
Run Code Online (Sandbox Code Playgroud)

和z作为x和1的绝对值的最大值:

z = |x| if |x| >= 1
z = 1 if |x| < 1
Run Code Online (Sandbox Code Playgroud)

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

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