我有兴趣使用这个
ranking class,基于
Evan Miller的一篇文章来排名我有一个有upvotes和downvotes的表.我有一个非常类似Stack Overflow的上/下投票系统的系统,用于我正在处理的事件站点,通过使用这个排名类,我觉得结果会更准确.我的问题是如何通过功能’hotness’订购?
private function _hotness($upvotes = 0, $downvotes = 0, $posted = 0) {
$s = $this->_score($upvotes, $downvotes);
$order = log(max(abs($s), 1), 10);
if($s > 0) {
$sign = 1;
} elseif($s < 0) {
$sign = -1;
} else {
$sign = 0;
}
$seconds = $posted - 1134028003;
return round($order + (($sign * $seconds)/45000), 7);
}
我想每次用户投票我都可以在我的表中有一个列,其中包含为新投票重新计算的热度数据,并按主页上的该列排序.但我有兴趣在运行中加入上述功能,我不确定这是否可行.
来自Evan Miller,他使用:
SELECT widget_id, ((positive + 1.9208) / (positive + negative) -
1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) /
(positive + negative)) / (1 + 3.8416 / (positive + negative))
AS ci_lower_bound FROM widgets WHERE positive + negative > 0
ORDER BY ci_lower_bound DESC;
但我宁愿不在sql中进行这个计算,因为我觉得这很麻烦,如果我在多个页面上使用这个代码就很难改变.