我有来自数据库的旧评级和来自用户的新评级, 我试图搜索“评级算法”,但他们保存每个用户的评级。在我的情况下,我不保存以前的评级。我的评级栏最高为5
目前我的解决方案是oldR + newR / 2.这有意义吗?
答案 0 :(得分:0)
不是真的。当你考虑它时,这样的公式意味着新的投票比旧投票更重要。想象一下像这样的一系列投票:
Vote: 1 1 1 1 1 1 1 1 1 1 1 5
Rating: 1 1 1 1 1 1 1 1 1 1 1 3
显然,在这种情况下评级不应该是3,它应该仍然是1(或最差2),但是你的公式将是。
至少应该存储投票数和平均评分,以便计算newR = ((oldR*votesCast)+newVote)/(votesCast+1)
。这还需要以更高的精度存储评级,而不仅仅是整数。 (您可以在显示它时将其四舍五入,但在内部也应该跟踪分数。)
稍微好一点的解决方案是分别存储到目前为止为5种不同评级投了多少票,允许你计算不同种类的均值(例如几何)。
显然,最灵活的(但大多数存储和计算密集型)是使用用户ID和时间戳存储每个单独的投票,允许您使用您能想到的任何算法。