我正在尝试为我正在开发的应用程序开发评级系统。基本上,app允许您将对象从1到5(由星号表示)进行评级。但我当然知道保持评级数并将评级加上数字本身不可行。
因此,我脑海中出现的第一件事是将收到的评分除以给定的总评分。如果对象已收到用户的评级2,并且该次数是对象已被评为100可能加2/100。但是我认为这种方法不够好1)一个天真的方法2)为了让我得到对象被评级的次数,我必须查看db,这可能最终会有时间复杂度O( n)的
所以我想知道有什么替代方案可能更好来解决这个问题?
答案 0 :(得分:1)
您可以在DB 2中保留其他值 - 评分次数和所有评级的总和。这种更新对象评级的方法只需要:
答案 1 :(得分:1)
有很多方法,但在检查之前
答案 2 :(得分:1)
我认为你应该为1星,2星,......保留单独的计数器以计算评级,你必须计算rating = (1*numOneStars+2*numTwoStars+3*numThreeStars+4*numFourStars+5*numFiveStars)/numOneStars+numTwoStars+numThreeStars+numFourStars+numFiveStars)
这样你就可以像亚马逊一样显示有多少人投票选出了1星,有多少人投了5星...
答案 3 :(得分:0)
您是否考虑过对星数的投票上调/下调机制?它并没有直接解决你的问题,但值得注意的是其他网站,如YouTube,Facebook,StackOverflow等都使用+/-投票,因为它通常比基于星级的评级更有效。