Php Reddit排序算法-上升

Php Reddit排序算法-上升,php,ranking,reddit,Php,Ranking,Reddit,我正在使用这个基于Reddit的算法,并希望对其进行更改,使其显示上升的帖子,而不是热门帖子。我应该更改哪个数字,以便发帖到现在之间的时间对返回的分数有更大的影响?我试着改变了一些数字,但仍然没有取得任何进展 谢谢你 function calculate_rank_sum($score, $created_at) { $order = log10(max(abs($score), 1)); if ( $score > 0 ) { $sign = 1;

我正在使用这个基于Reddit的算法,并希望对其进行更改,使其显示上升的帖子,而不是热门帖子。我应该更改哪个数字,以便发帖到现在之间的时间对返回的分数有更大的影响?我试着改变了一些数字,但仍然没有取得任何进展

谢谢你

function calculate_rank_sum($score, $created_at) {

     $order = log10(max(abs($score), 1));

     if ( $score > 0 ) {
        $sign = 1;
     } elseif ( $score < 0 ) {
        $sign = -1; 
     } else {
        $sign = 0;
     }

     $seconds = intval(($created_at - mktime(0, 0, 0, 1, 1, 1970))/86400);

     $long_number = ($order + $sign) * ($seconds / 45000);

     return round($long_number, 7);
}
函数计算排名和($score,$created\u at){
$order=log10(最大值(绝对值($score),1));
如果($score>0){
$sign=1;
}elseif($score<0){
$sign=-1;
}否则{
$sign=0;
}
$seconds=intval($created_at-mktime(0,0,0,1,11970))/86400;
$long_number=($order+$sign)*($seconds/45000);
返回轮($long_编号,7);
}

这是计算分数的一行

$long_number = ($order + $sign) * ($seconds / 45000);
如果您希望创建的时间产生更大的影响,我建议减少
45000
,和/或抵消
($order+$sign)
。这是一个需要进行大量微调才能完全按照您想要的方式进行的论坛,因此我建议您最好执行大量单元测试,并进行大量调整。

您的公式是错误的:

($order + $sign) * ($seconds / 45000)
您添加了不应该出现的括号。如果你看,应该是:

$order + $sign * $seconds / 45000
但即便如此,这也是基于旧的reddit算法


您可以减少
45000
以增加时间分量的权重。

定义上升?另外,
$sign=($score>0)-($score<0)更好(未分支,请参阅)。这段代码是否来自某种Reddit代码库(我不知道它是开源的)?你是否已经修改了它,或者这是“真实”算法?@Jori是的,Reddit是开源的:但是,Reddit不是用PHP构建的。看起来他从这里获取了源代码:嗯。但是整个代码一开始就没有意义(这是谁写的?)。
mktime(0,0,0,1,11970)
是否与
time()相同?如果你真的在计算1970年1月1日00:00:00 GMT(Unix历元)之后的天数,为什么要叫它
$seconds
?然后把它除以45000,这样事情在很久以后就会变得更重要了?
sign * order + seconds / 45000