【发布时间】:2008-10-30 16:35:40
【问题描述】:
与 StackOverFlow 上的类似,我需要实现一种方法,让人们在类似网站的论坛中投票赞成和反对 cmets。
但是,我们将显示“赞”和“赞”的总分,而不是一般的总分。总分将用于过滤目的,例如“按最高评分排序”、“仅显示 + 3 的评分”
最好的实施策略是什么?
正如用户建议的那样,我还将存储投票者的信息
【问题讨论】:
与 StackOverFlow 上的类似,我需要实现一种方法,让人们在类似网站的论坛中投票赞成和反对 cmets。
但是,我们将显示“赞”和“赞”的总分,而不是一般的总分。总分将用于过滤目的,例如“按最高评分排序”、“仅显示 + 3 的评分”
最好的实施策略是什么?
正如用户建议的那样,我还将存储投票者的信息
【问题讨论】:
您需要存储评分(评论 ID、用户 ID、投票值),以便计算和停止重复投票,但我强烈建议您在主要评论实体上添加 VotesUp 和 VotesDown 字段。
为什么要重复?速度。否则,您将执行大量令人作呕的 SUM-WHERE 语句,它们会将您的数据库服务器运行到地下。标题记录上的一些额外字节,您将能够对您的内容进行排序和过滤。
编辑:如果您还打算在某些情况下按总分排序,您可能需要添加第三个字段 (VoteTotal)。
编辑 2:如果您能够将所有评论标头缓存在内存中,则重复是毫无意义的。这是很多数据,你需要大量的内存来有效地缓存它。如果你不是亿万富翁,我只会复制数据。
【讨论】:
dotnetkicksdotnetkicks 是一个很好的开源参考
还可以收听StackOverFlow podcast,该网站的创建者在其中讨论了他们如何解决他们的一些要求。如果您正在计划上述内容,则需要聆听。
然后,一旦您在那里,与 uservoice 之类的服务进行链接会在您的开发早期为您提供一些有价值的反馈。
【讨论】: