广场信息流排序

目标

将广场信息流中的优质内容推送到顶部

所有数据

  • 评论
  • 是否配图
  • 后台推荐标识
  • 时间戳(s):(发帖时 - 2018-03-15-00-00-00)/ 1000

排序逻辑:

  • 新内容要往前排
  • 赞多的往前排
  • 评论多的往前排
  • 有配图的初始权重高
  • 有推荐标识的置顶
  • 官方贴优先置顶

数据的权重(权重后期可调)

  • 推荐:置顶(最多3个)
  • 有配图:10
  • 赞:2
  • 评论:5
  • 时间戳:/ 100

公式

平滑一下赞和评论的影响(当赞和评论数量多时)
LOG10((zan * 2 + com * 5 + 1)) + pic * num + timestamp / 100

测试结果

输了20个WB广场最新数据,从上至下,(截屏,假设每个贴间隔3s),Excel跑一下:


广场信息流排序_第1张图片
image.png

基本符合预期,数据量比较小,误差会比较大。数据多一点,时间延长几天,再测试下。怎么实现比较简单?(赖力,能不能用后台跑下测试服卧底的样式)

测试

排序写好后,用测试服测试一下排序的效果,大家都发一下各种形式的内容,基于内容视觉,再多修改几次权重

上线后权重优化

优化标准:广场页平均每个用户停留时间
设置几组不同的参数,判断哪一组参数用户的停留时间更长

其他

记录一下用户的点赞数,后期可以给用户相应标签,激励其多发高质量内容

修改

用户刚发的时候,客户端置顶,刷新的时候再排序
服务器每10分钟刷新排序一次

排序小颗粒度:1h,评论点赞优先,之后时间权重增加
排序大颗粒度:1天,时间权重增加更快

time = 当前时间 - 发帖时间

横向优先显示点赞和评论多的帖子,纵向弱化时间的权重

发布后1h:
lg(zan * 2 + com * 1 + 1) + 36 + pic(0 || 1) * 18 + 100 / (time + 10) + 100

发布后1天:更更减弱权重
lg(zan * 2 + com * 1 + 1) + 36 + pic(0 || 1) * 18 + 100 / (time + 10)

参考

  1. Delicious
    它按照"过去60分钟内被收藏的次数"进行排名。每过60分钟,就统计一次
  2. Hacker news
    Score = (P-1)/(T+2)^G
  3. Reddit
    Score = log10(Z) + yt/45000
  4. Stackoverflow
    [log10(Qviews)4 + (QanswersQscore)/5 + sum(Ascores)] / [(Qage+1)-(Qage-Qupdated)/2]^1.5
  5. Reddit
    二项分布,威尔逊区间
  6. IMDB
    贝叶斯平均
    WR = (v/v+m)R + (m/m+c)C

最终

T单位为小时:
Score = log[(Z*2 + C)] + P)/(T+2)^G

广场信息流排序_第2张图片
Excel 数据

你可能感兴趣的:(广场信息流排序)