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

标签 algorithm mysql popularity

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

  1. VIEW - 查看它的个人资料
  2. 评分 - 按照 1-5 星的等级给它评分
  3. REVIEW - 回顾
  4. 已完成 - 标记他们已经完成
  5. 愿望 list - 标记他们想去那里
  6. FAVORITE - 标记这是他们的最爱之一

在我们的数据库地点表中,每个地点都包含执行上述每个操作的次数以及用户给出的平均评分。

  • 观点
  • 评分
  • 平均评分
  • 完成
  • 心愿单
  • 收藏

我们希望能够使用上述信息生成热门地点列表。理想情况下,我们希望能够使用相对简单的 SQL 查询生成此列表,而无需执行任何跑腿工作来计算其他字段或相互堆叠排名位置。话虽这么说,但由于我们只有大约 50,000 个名额,我们可以每晚运行一个 cron 作业来计算某些字段,例如不同类别的排名,如果这会对我们排名靠前的名额的整体结果产生有意义的影响的话。

如果你能就我们应该如何考虑将最佳位置冒泡到顶部、我们应该更重视哪些标准以及给出这些信息提出一些建议,我将不胜感激 - 建议 MySQL 查询需要看起来像什么以便选择前 10 个位置。

需要注意的一件事是,此时我们不太关心某个地方是否受欢迎 - 这意味着查看聚合信息就可以了,不需要对较新的数据赋予更大的权重。

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

最佳答案

关于从数据库中选择最受欢迎地点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706964/

相关文章:

algorithm - 算法:有没有解决比较的好方法?

seo - 用于谷歌流行度的 URL 排名检查器 API

过去 24 小时内最受欢迎的 PHP MySQL 查询

algorithm - 散列值如何映射到布隆过滤器中的向量?

c++ - 复制指针数组并跳过某些索引

python - 如何使用三次或更高次的多项式曲面回归来拟合一组 3D 数据点?

.net - 为什么 BLToolkit 不流行?

Java、MySQL、Spring 应用程序

php - 在 Laravel 中使用 Eloquent ORM 使用 'not regexp' 执行数据库搜索

mysql - Ansible - 在 array 上循环由 shell 命令产生