首页 文章

实施排名系统

提问于
浏览
1

我已经看到了几个关于如何保护和防止滥用排名系统(如盯着电影,产品等)的问题,但实际上并没有实现它 . 为了简化这个问题,我不担心安全问题,访问该系统的人都是可信任的,如果发生这种情况,滥用排名系统是微不足道的,并且比原因更容易回复 . 无论如何,我很好奇如何存储选票 .

一个想法是有一个投票表,记录每个投票,然后立即,在预定的时间,或在产品的每次加载(这似乎效率低,但可能不是),投票得到统计,并在0和5之间加倍更新到产品表中的产品条目 .

或者,我在产品表中存储总分和多个投票,并在我显示时将其除去,并在有人投票时将投票添加到总数和增量数 .

或者有没有更好的方法来做到这一点我没有?我想在产品表中只有一个“评级”字段,但如果没有一些额外的数据,就无法想到更新投票的方法 .

同样,数据完整性很重要,但绝不是必要的,任何想法?

3 回答

  • 1

    我会对你的产品保持“得分”,但也会保留一张投票表,看谁投票给了什么 . 当有人投票时,插入投票,更新产品分数 .

    这允许快速排序,你还有一个表,可以重新计算分数和停止人们双重投票 .

    没有必要等待写投票并更新分数 . 这将引入问题,如果它像传统系统一样(读取的次数多于写入次数),则不会给您带来任何好处 .

  • 0

    你的意思是,你会将选票分别存储在一个表中,然后用定义的策略更新产品表中产品的相应排名?这似乎是一种低效的存储方式 . 也许有这个原因的背景;但是你为什么不想把所有的选票存放在一张 table 上,并继续将这些选票的参考文献提交给各自的产品 . 这为您提供了实时计数 .

    在UI上,您将计算所有投票的平均值,以显示近似整数 . 那就够了,不是吗?或者我错过了什么?

  • 0

    我同意奥利 . 此外,您可以缓存您的分数 . 因此,您在缓存中更新产品分数,您的应用程序始终会获取缓存值 . 因此,即使在页面刷新时,您也可以在不访问数据库的情况下获得最新分数 .

相关问题