我正在使用基于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);
}
这是本质上计算分数的行。
$long_number = ($order + $sign) * ($seconds / 45000);
如果您希望创建的时间产生更大的影响,我建议减少45000
和/或抵消($order + $sign)
。这是一个论坛,需要大量的微调才能使其完全按照您想要的方式进行,因此,我建议最好的方法是执行大量的单元测试,并进行大量的调整。
您的公式有误:
($order + $sign) * ($seconds / 45000)
您已添加了不应包含的括号。如果您查看https://gist.github.com/zeuxisoo/882820,则应为:
$order + $sign * $seconds / 45000
但是即使是基于旧的reddit算法which was later fixed to:
sign * order + seconds / 45000
您可以降低45000
来赋予时间部分更多的权重。