Algorithm 如何构建评级实现?

Algorithm 如何构建评级实现?,algorithm,database-design,architecture,data-structures,Algorithm,Database Design,Architecture,Data Structures,在我们正在进行的项目中,我们需要一个“评级”系统,类似于SO中的一个。然而,在我们的系统中,有多个实体需要被“标记”为向上投票(只向上投票,不向下投票,就像递增投票一样)。有时,我们需要按照评级最高的顺序显示所有实体,而不考虑实体类型,我想基本上是混合结果集。您使用什么样的数据结构/算法来实现这一点,以使其灵活且仍具有可扩展性?由于reddit的排名算法令人震惊,因此,如果不复制它,也可以查看它: 考虑到条目发布的时间A和2005年12月8日上午7:46:43 B,我们将ts作为它们的秒差:

在我们正在进行的项目中,我们需要一个“评级”系统,类似于SO中的一个。然而,在我们的系统中,有多个实体需要被“标记”为向上投票(只向上投票,不向下投票,就像递增投票一样)。有时,我们需要按照评级最高的顺序显示所有实体,而不考虑实体类型,我想基本上是混合结果集。您使用什么样的数据结构/算法来实现这一点,以使其灵活且仍具有可扩展性?

由于reddit的排名算法令人震惊,因此,如果不复制它,也可以查看它:


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

ts=A-B

和x作为赞成票U和反对票D之间的差值:

x=U-D

在哪里

y=1如果x>0
如果x=0,则y=0
如果x<0,则y=-1
z为x和1绝对值的最大值:

z = |x| if |x| >= 1
z = 1 if |x| < 1
z=|x | if | x |>=1
如果| x |<1,则z=1
我们将评级作为函数ƒ(ts,y,z):

ƒ(ts,y,z)=log10z+(y•ts)/45000


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