2.推荐具体公式

1.Hacker News


Score = (P-1)/(T+2)^G

P表示帖子的得票数,减去1是为了忽略发帖人的投票
T表示距离发帖的时间(单位为小时),加上2是为了防止最新的帖子导致分母过小(之所以选择2,可能是因为从原始文章出现在其他网站,到转贴至Hacker News,平均需要两个小时)。
G表示"重力因子"(gravityth power),即将帖子排名往下拉的力量,默认值为1.8,后文会详细讨论这个值。



2.Reddit


Score = log10^z + gt/45000


这个部分表示,赞成票与反对票的差额z越大,得分越高。


需要注意的是,这里用的是以10为底的对数,意味着z=10可以得到1分,z=100可以得到2分。也就是说,前10个投票人与后90个投票人(乃至再后面900个投票人)的权重是一样的,即如果一个帖子特别受到欢迎,那么越到后面投赞成票,对得分越不会产生影响。


当赞成票等于反对票,z=1,因此这个部分等于0,也就是不产生得分。


这个部分表示,t越大,得分越高,即新帖子的得分会高于老帖子。它起到自动将老帖子的排名往下拉的作用。


分母的45000秒,等于12.5个小时,也就是说,后一天的帖子会比前一天的帖子多得2分。结合前一部分,可以得到结论,如果前一天的帖子在第二天还想保持原先的排名,在这一天里面,它的z值必须增加100倍(净赞成票增加100倍)。


y的作用是产生加分或减分。当赞成票超过反对票时,这一部分为正,起到加分作用;当赞成票少于反对票时,这一部分为负,起到减分作用;当两者相等,这一部分为0。这就保证了得到大量净赞成票的文章,会排在前列;赞成票与反对票接近或相等的文章,会排在后面;得到净反对票的文章,会排在最后(因为得分是负值)。


3.stack overflow

function hot($Qviews, $Qanswers, $Qscore, $Ascores, $date_ask, $date_active)
{
    $Qage = (time() - strtotime(gmdate("Y-m-d H:i:s",strtotime($date_ask)))) / 3600;
    $Qage = round($Qage, 1);
 
    $Qupdated = (time() - strtotime(gmdate("Y-m-d H:i:s",strtotime($date_active)))) / 3600;
    $Qupdated = round($Qupdated, 1);
 
    $dividend = (log10($Qviews)*4) + (($Qanswers * $Qscore)/5) + $Ascores;
    $divisor = pow((($Qage + 1) - ($Qage - $Qupdated)/2), 1.5);
 
    echo $dividend/$divisor . "\n";
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值