我们有一个包含地点数据库的网站。对于每个地方,我们的用户都可以执行我们记录的以下操作之一:
- VIEW - 查看它的个人资料
- 评分 - 按照 1-5 星的等级给它评分
- REVIEW - 回顾
- 已完成 - 标记他们已经完成
- 愿望 list - 标记他们想去那里
- FAVORITE - 标记这是他们的最爱之一
在我们的数据库地点表中,每个地点都包含执行上述每个操作的次数以及用户给出的平均评分。
- 观点
- 评分
- 平均评分
- 完成
- 心愿单
- 收藏
我们希望能够使用上述信息生成热门地点列表。理想情况下,我们希望能够使用相对简单的 SQL 查询生成此列表,而无需执行任何跑腿工作来计算其他字段或相互堆叠排名位置。话虽这么说,但由于我们只有大约 50,000 个名额,我们可以每晚运行一个 cron 作业来计算某些字段,例如不同类别的排名,如果这会对我们排名靠前的名额的整体结果产生有意义的影响的话。
如果你能就我们应该如何考虑将最佳位置冒泡到顶部、我们应该更重视哪些标准以及给出这些信息提出一些建议,我将不胜感激 - 建议 MySQL 查询需要看起来像什么以便选择前 10 个位置。
需要注意的一件事是,此时我们不太关心某个地方是否受欢迎 - 这意味着查看聚合信息就可以了,不需要对较新的数据赋予更大的权重。
在此先感谢您的帮助和建议!
最佳答案
关于从数据库中选择最受欢迎地点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706964/