【发布时间】:2012-12-14 17:34:04
【问题描述】:
我有几个系统,其中包含用户表以及某种形式的业力/重量/声誉。有时是用户发布的帖子数量,有时是用户在网站上的所有活动中收到的赞成/反对票数。
USER {
id int
name string
karma int
}
如何使用这些数字来计算该用户的“体重”或“权威”?例如,一位老会员的投票通常比新用户的 4 票更有价值。
我正在考虑将所有成员的总积分/业力/声誉相加,然后尝试得出 1-100 的比例。
SUM(user.points) / COUNT(user.*) = average user points
然后像
CEIL(userA.points / average user points) = their weight on an issue
但是,这种方式也需要有一条曲线,因为我不希望拥有 5,000 个帖子/业力的人超过 20 个新用户的投票。
【问题讨论】:
-
嗯...由您来定义它。 5k 用户应该超过多少新用户?一种方法是使用
log(),基数由您决定。 -
仅供参考:所以,
weight= log(karma)/log(n);,其中n是您想要摆弄的数字,可能是1 < n < 10,但更可能您想要它在1 < n < 3之间的某个地方。
标签: mysql rdbms weighted weighted-average