类似微博的 feed 热度算法如何计算?
得到 A 和 B 间隔的秒数 ts。
ts=A-B
M表示某篇文章的来自于微博客的推荐次数,R代表来自于阅读器分享的分享次数,D代表来自于网摘收藏的次数。引入不同权重因子,则可以计算得到变量Z:
Z=M*3+R*1+D*0.8(表示推荐15次,分享5次,网摘收藏4次,对排序的影响是一样大的)
最后定义 SRRank 公式为,
SRRank=log10Z+ts/45000
参数注解基本和Reddit一样,不同的就是没有反对票:
1)时间点 B,2008-12-01 00:00:00,是一个固定的值。ts 反映了文章的新鲜程度。引入 B 是一个非常优雅的技巧,它使得新鲜度的度量可以独立于系统当前时间。
2)45000 代表的是一个 12.5 小时周期内的总秒数。它 与 ts 一起使用,随着时间的推移,新文章的得分会逐渐超越高投票数的老文章,从而实现自动更新的效果。
3)log10 的使用是另外一个技巧,它可以使得早期的投票获得更大的权重。比如,前 10 票获得的权重,与 11 到 100票所获得的权重是一样的。
理解1:前10票获得的权重为1,前100票获得的权重为2,所以两者相减,11到100票所获得的权重也是1。
理解2:时间这个参数这说明新文章的得分会逐渐超越高投票数的老文章,当A文章比文章晚发表12.5个小时,那么要使A,B文章的热度一样,那么B文章在投票数上面要多获得1个权重值
http://www.zhihu.com/question/19936651
http://www.cnblogs.com/zhengyun_ustc/archive/2008/12/22/ju690_sr.html