从数据库中选择最受欢迎的地方的算法

Rus*_* C. 4 mysql algorithm popularity

我们有一个包含地方数据库的网站.对于每个地方,我们的用户都可以采取我们记录的以下操作之一:

  1. 查看 - 查看它的个人资料
  2. 评分 - 按1-5星级评分
  3. 审查 - 审查它
  4. 完成 - 标记他们一直在那里
  5. 愿望清单 - 标记他们想要去那里
  6. 最喜欢的 - 标记它是他们的最爱之一

在我们的数据库表中,每个地方都包含上述每个操作的次数以及用户给出的平均评级.

  • 意见
  • 评级
  • AVG_RATING
  • 完成
  • 愿望清单
  • 喜爱

我们希望能够使用上述信息生成顶部位置列表.理想情况下,我们希望能够使用相对简单的SQL查询生成此列表,而无需执行任何工作来计算其他字段或堆栈排名位置.话虽这么说,因为我们只有大约50,000个地方,我们可以运行夜间cron工作来计算一些字段,例如不同类别的排名,如果它会对我们的顶级位置的整体结果产生有意义的差异.

如果你能就如何考虑将最好的地方冒泡到最顶层,我们应该考虑更重要的标准,并给出这些信息 - 建议MySQL查询需要看起来像是为了选择前10名.

有一点需要注意的是,此时我们不太关心一个受欢迎的地方的新近度 - 这意味着查看总体信息很好,而且最近的数据不需要加权更多.

在此先感谢您的帮助和建议!