【问题标题】:Thumbs up/Thumbs Down Rating Implementation竖起大拇指/竖起大拇指评级实施
【发布时间】:2008-10-30 16:35:40
【问题描述】:

与 StackOverFlow 上的类似,我需要实现一种方法,让人们在类似网站的论坛中投票赞成和反对 cme​​ts。

但是,我们将显示“赞”和“赞”的总分,而不是一般的总分。总分将用于过滤目的,例如“按最高评分排序”、“仅显示 + 3 的评分”

最好的实施策略是什么?

正如用户建议的那样,我还将存储投票者的信息

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您需要存储评分(评论 ID、用户 ID、投票值),以便计算和停止重复投票,但我强烈建议您在主要评论实体上添加 VotesUp 和 VotesDown 字段。

    为什么要重复?速度。否则,您将执行大量令人作呕的 SUM-WHERE 语句,它们会将您的数据库服务器运行到地下。标题记录上的一些额外字节,您将能够对您的内容进行排序和过滤。

    编辑:如果您还打算在某些情况下按总分排序,您可能需要添加第三个字段 (VoteTotal)。

    编辑 2:如果您能够将所有评论标头缓存在内存中,则重复是毫无意义的。这是很多数据,你需要大量的内存来有效地缓存它。如果你不是亿万富翁,我只会复制数据。

    【讨论】:

    • 您是否建议在数据库事务中将投票信息(谁、何时、值)写入数据库的同时增加/减少评论标头的总和值,以防止可能的不一致或可能经常更新总和值的计划任务?
    • 问得好,但我认为数据应该始终保持准确。如果您需要将它扩展到月球,正如我在第二次编辑中所说,通过将数据的对象表示存储在内存/缓存中,您可以切出很多 DBIO 并使其飞行。
    • 即。如果您将所有标头都放在 RAM 中,投票将导致 2 次写入 DB,仅此而已。如果没有缓存,您将编写投票记录,然后基于 WHERE 求 SUM,然后再次编写……不用说,这很讨厌。如果您不能缓存投票,也许最好安排更新?
    【解决方案2】:

    dotnetkicksdotnetkicks 是一个很好的开源参考

    还可以收听StackOverFlow podcast,该网站的创建者在其中讨论了他们如何解决他们的一些要求。如果您正在计划上述内容,则需要聆听。

    然后,一旦您在那里,与 uservoice 之类的服务进行链接会在您的开发早期为您提供一些有价值的反馈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多