我们如何建立评分实施方案?

时间:2020-03-05 18:45:05  来源:igfitidea点击:

我们正在研究的项目中需要一个"评级"系统,类似于SO中的系统。但是,在我们的实体中,需要以投票方式"标记"多个实体(只有增加,从不减少,就像增加一样)。有时候,我们可能需要按照评级最高的顺序显示所有实体,而与实体类型无关,基本上是将结果集混合在一起。我们使用什么数据结构/算法来实现此目的,以使其灵活且仍可扩展?

解决方案

回答

由于reddit的排名算法很不稳定,因此,看看它是否有意义,即使不复制它,也很有意义:

给定条目发布的时间A和2005年12月8日上午7:46:43 B的时间,我们将ts表示为秒差:

ts = 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

我们将评分作为函数(ts,y,z):

(ts,y,z)= log10 z +(y ts)/ 45000