有效地整合1比10的投票制度,避免常见的缺陷


Integrating a 1-10 voting system effectively without common pitfalls

我计划将合理的排名/投票系统集成到现有的应用程序中。

我熟悉传统的5星评级系统是如何工作的,并且知道与之相关的常见陷阱/问题,因此我想知道是否有其他方法(我听说过威尔逊,贝叶斯等,但不确定如何用下面的结构实现):

  • 我计划允许用户通过内容页对1到10之间的内容进行投票。
  • 该内容的得分和总投票将显示在内容页。
  • 我还将显示/列出前10名内容,所以我需要的方法是公平/现实的,而不是使10的总票数为1的投票直接到1。

我使用的是PHPMySQL,我有一个内容表(其中有一个content_id,我想我可以JOIN上)。

我想知道你是否可以建议一种方式/方法来实现上述目标,如果你能附上一些示例PHP代码和示例MySQL模式,我将不胜感激,这样我就可以更好地理解它,因为我已经谷歌和可能已经找到了潜在的解决方案,如威尔逊和贝叶斯…然而,他们提供了一篇冗长的文章,其中包含令人困惑的数学方程——而且没有提到实现上述目标的方法(即。比分……并在PHP/MySQL中实现该方法)或至少由于没有任何PHP/MySQL示例代码我误解了这一点。

也许这比我想的更容易——我不知道,因为我以前从来没有需要实现这种"更复杂"的排名/投票功能——所以我很感谢你的回应。

你应该从youtube上观看这个视频开始:建立网络声誉系统。

为了强调这一点,让我引导你到XKCD。

对于DB结构,您需要以下部分:

  • 物品清单(含total_votes列)
  • 投票的用户列表
  • 项目-用户交集表(rating列,如果你用5星的东西)