2

我有一个应用程序,用户可以:

  1. 撰写有关产品的评论
  2. 为产品添加评论
  3. 赞成/反对投票评论
  4. 赞成/反对投票评论

每个赞成/反对票都记录在数据库表中。

我现在要做的是创建过去 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函数添加权重,使评论的权重更重?例如,如果添加图片投票,这样的功能会是什么样子?

4

1 回答 1

1

这些类型的算法可能非常复杂。你可能想看看这些书:

于 2010-05-10T22:02:37.270 回答