2019年2月10日星期日

网站评分插件升级

  这两天把原先系统的投票评分插件也一一升级了,升级的过程还算顺利,最终文章和评论都可以评分了,这样,稍后我就可以制作"评分最高的文章"和"评分最高的评论"两个侧栏了,这两个插件升级的过程还算有点复杂,这里记录一下。

  原有的文章评分插件,采用的是5分评分,感觉体验不好,用户要思考到底是打从1分还是打5分,考虑太多,这次直接替换为"顶一下"、"踩一下"两种,相当于只用打1分或5分,简单多了。

  当然,原有的评分数据不能丢,我这里也做了一个转换,原有评分插件记录了分数值和投票次数两个参数,通过一个公式可以将其转化为顶踩次数。

  假设评分数值为R,投票总数为A,顶数值为Y,踩数值为N,已知R和A,计算Y和N,假设原先投票的人都投了1分或5分,则Y=(R-1)*A/4,N=A-Y,就近似计算出了"顶一下"、"踩一下"的数值。

  为了不出现小数,新的评分使用百分制,评分数值为R=Y*100/(Y+N+1),评分的机理是,默认系统先投一票反对,然后投赞成数值为100,投反对数值为0,计算平均值,第一个人投赞成票时,按照上面的公式计算出来的数值是50分,而不是100分,这样可以很简单地避免1、2个投票投出高分的票。当投票人数非常多的时候,系统第一次投的票对分值的影响就很小了。

  评论投票是在原有的评论投票插件基础上进行修改,使其适应新系统,此外再增加文章投票功能,使得两个投票系统公用一个代码,让系统也简化了许多。

  有了文章投票和评论投票,之后就可以按照投票的分值排序,得出用户投票得分最高的文章和评论。