我有一个应用程序,用户可以:
- 撰写有关产品的评论
- 为产品添加评论
- 赞成/反对投票评论
- 赞成/反对投票评论
每个赞成/反对票都记录在数据库表中。
我现在要做的是创建过去 4 周内最活跃用户的排名。当然,好的评论应该比好的评论更重要。但是,例如,10 条好的评论应该比一篇好的评论更重要。
例子:
// reviews created in recent 4 weeks
//format: [ upVoteCount, downVoteCount ]
var reviews = [ [120,23], [32,12], [12,0], [23,45] ];
// comments created in recent 4 weeks
// format: [ upVoteCount, downVoteCount ]
var comments = [ [1,2], [322,1], [0,0], [0,45] ];
// create weight vector
// format: [ reviewWeight, commentsWeight ]
var weight = [0.60, 0.40];
// signature: activties..., activityWeight
var userActivityScore = score(reviews, comments, weight);
... update user table ...
List<Users> users = "from users u order by u.userActivityScore desc";
一个公平的评分函数会是什么样子?该功能的实现如何score()
?如何为g
函数添加权重,使评论的权重更重?例如,如果添加图片投票,这样的功能会是什么样子?