我们有一个包含地点数据库的网站。对于每个地方,我们的用户都可以采取我们记录的以下操作之一:
- VIEW - 查看它的个人资料
- 评分 - 以 1-5 星的等级对其进行评分
- 审查 - 审查它
- 已完成 - 标记他们去过那里
- 愿望清单 - 标记他们想去那里
- FAVORITE - 标记这是他们的最爱之一
在我们的地点数据库表中,每个地点都包含执行上述每个操作的次数以及用户给出的平均评分。
- 意见
- 收视率
- 平均评分
- 完全的
- 愿望清单
- 最喜欢的
我们希望能够使用上述信息生成排名靠前的位置列表。理想情况下,我们希望能够使用相对简单的 SQL 查询来生成此列表,而无需做任何繁琐的工作来计算额外的字段或相互堆叠排名位置。话虽如此,由于我们只有大约 50,000 个位置,我们可以运行一个夜间 cron 作业来计算一些字段,例如不同类别的排名,如果它会对我们的顶级位置的整体结果产生有意义的差异。
如果你能就我们应该如何考虑将最佳位置冒泡到顶部提出一些建议,我将不胜感激,我们应该更加重视哪些标准,并鉴于这些信息 - 建议 MySQL 查询需要看起来像什么才能选择前 10 个地方。
需要注意的一点是,此时我们不太关心某个地方的流行程度——这意味着查看汇总信息就可以了,并且不需要对更新的数据进行更重的加权。
提前感谢您的帮助和建议!