贝叶斯评级设置

时间:2012-05-24 21:13:37

标签: php mysql rating-system

我正在试图弄清楚如何开始在MYSQL中设置贝叶斯评级系统。我没有使用5星评级,但类似的东西。我将是一个5卷的酒吧。

这是我的专辑页面。用户不会对专辑进行评级,而是会对将平均成为专辑评级的歌曲进行评分。

  • $songsum
  • $songavg
  • $numofrated
  • $totalsongs
  • $albumrating
  1. $songsum / $numofrated = $songavg
  2. $songavg * ($numofrated / $totalsongs) = $albumrating
  3. 另一页(艺术家页面)也将被评级。

    $avg_num_votes  = 18;  // Average number of votes in all products
    $avg_rating     = 3.7; // Average rating for all products
    $this_num_votes = 6;   // Number of votes for this product
    $this_rating    = 4;   // Rating for this product
    
    $bayesian_rating =
        ( ($avg_num_votes * $avg_rating) + ($this_num_votes * this_rating) )
      / ($avg_num_votes + $this_num_votes);
    

    我该如何开始设置? $this_rating应该与专辑在同一个表格中吗?

    <小时/> 其他信息

    • MYSQL中的表格:专辑,歌曲,流派,独奏,小组
    • 已经有外键链接

1 个答案:

答案 0 :(得分:1)

您对评级方案的初步想法可能会发生变化(特别是对于专辑),因此您最好存储交易信息,这样您就可以随时重新计算所有内容。

在“歌曲”和“用户”中创建一个名为“评级”的新表:

  • ID
  • song_id
  • (album_id)
  • USER_ID
  • 等级

由于你有song_id,因此没有必要使用album_id,但它会节省一些时间并且磁盘空间便宜

将以下字段添加到数据库中:

  • song.summary_votes
  • song.summary_average
  • album.summary_votes
  • album.summary_average

定期运行一个脚本,将summary_字段更新为您想要的字段。