我正在为我公司的内部网站点工作,我需要添加一个模块,列出员工孩子们完成的图纸。每个员工都可以上传任意数量的图纸,每次加载时,内联网的主页上都会出现随机图纸。
每张图纸旁边都会有一个“赞”按钮,每次点击该按钮都会计算对图纸的投票。
还会有一个“顶部图纸”部分,当然图纸将按“顶部”排序。
问题是......我不确定什么会将图形定义为顶部,到目前为止我所拥有的是投票,这是不公平的,因为1个月前发布的图纸有很多今天发布的选票和图纸不太可能获得1个月大的选票。
非常感谢任何帮助!
每个用户只能投票一次,(公司有很多的员工),我不存储图纸有多少视图(我应该吗?)。
我不确定使用什么公式......我认为新上传的图纸也应该有机会进入顶级名单,对吗?
谢谢!
答案 0 :(得分:1)
XKCD的Randall Munroe有一篇关于reddit如何处理这个问题的优秀文章here。那篇文章链接到this one,其中涵盖了所有天真的方法,描述了他们的垮台,然后继续解释如何建立一个实际上如你所愿的评级系统。
答案 1 :(得分:0)
我会使用平均评分,不包括未获得一定数量投票的图纸。这样,如果一张图只有一票,但它是5星,它就不会自动获胜。类似的东西:
if votes >= minVotes:
score = sum(ratings)/votes
答案 2 :(得分:0)
你可以按最近的投票排序。所以现在获得投票的新图纸将排在旧图纸之前。许多网站都有多个“热门”列表,按时间表排列。比如“本周最佳”,“本月”和“所有时间”。
如果您只能拥有一个“顶级”列表,那么您可以“老化”旧图纸。因此,具有10票但是一个月大的绘图可能会获得0.8的年龄乘数,而新绘图的乘数将为1.0。