公司做了个含有社交属性的平台,其中涉及对帖子的评论的排序问题。评论的排序权重计算公式如下:
就是“时间权重”和“点赞权重”都基于当前时间来计算,“时间权重”每小时变化一次,“点赞权重”每天变化一次。随着社交数据的膨胀,需要重算的历史数据也增多。
如何减少无必要的计算?调整“评论的排序权重”的计算公式,还是制定相应的策略做?
总体来看,不会实时计算评论权重,而是建立异步任务去计算评论的权重并保存。查询评论时,直接根据评论的权重排序。
基于此想法,目前的方案如下:
按此需求计算评论权重。当帖子有新增评论,或者相关评论有新操作,则重算该帖子所有评论的权重。
“评论的排序权重”目前是对历史数据的权重做减法。重新设计一个计算公式,不动历史数据,只针对新评论或者有新操作的评论的权重做加法。
其实评论的排序,已有相关的研究或方案,例如“威尔逊置信区间法”。需要时间去理解。