我正在开发一个Wilson得分区间来对我的网站上的热门内容进行排序,但目前它只是静态的。我的意思是,它将一直保持相同的得分,直到有人点赞或踩它。
这就是为什么我想要实现随时间降低得分的功能,就像在这篇文章中一样。Reddit排名算法如何工作。在那篇文章中,他们解释了Reddit内容得分随时间降低的原因。
就目前而言,我有这个PHP函数,它根据赞和踩给出一个得分:
function wilsonScore($up, $down)
{
$score = (($up + 1.9208) / ($up + $down) - 1.96 * sqrt(($up * $down) /
($up + $down) + 0.9604) / ($up + $down)) / (1 + 3.8416 / ($up + $down)) ;
return $score;
}
我希望分数保持不变,但在排序时添加一些SQL代码。
SQL代码如下:
SELECT *
FROM photos
WHERE status = 0
AND net_votes > 0 // display only picture that got rated over 0
ORDER BY score DESC
我有一个想法,就是得出一个能对分数进行对数下降的算法,在帖子发布的头1-2-3天里时间不会对分数产生太大影响,之后分数开始下降。
编辑
理论上是否可行将某些内容添加到分数中,以便用户在网站上获得更多声望(如SO)时,其评分更有价值?类似的东西在互联网上是否已经存在?
这里有人使用过类似的东西吗?