我有一个排名系统,用户可以在其中支持/反对(+1/-1)个对象,每个对象都有一个累积rating_sum
值,可以是负数、零或正数。我还记录了对象被评为的总次数rating_count
。因此,我可以通过一些代数得到赞成票和反对票的数量。
我想实现一个考虑到对象评级的评分算法,但也意味着较旧的对象会受到惩罚并且得分较低。
到目前为止,我发现了以下内容:
score=rating_sum/(age^gravity)
哪里gravity
是一些常数(我一直在使用gravity=2
)。
这可以正常工作,除了带有负值的评级,在这种情况下,对象越老,它的分数就越高(负值越小)。这意味着给定两个具有相同负评分的对象,例如 -2,较旧的对象得分高于较年轻的对象,并且浮动得更高。
有没有我可以使用的评分算法也适用于负面评分?
(出于技术原因(我正在尝试使用 django ORM 进行优化),我想要一个相当简单的算法,并且可以放入 SQL 查询语句,所以最好只使用 POW,LOG)