【发布时间】:2010-04-25 02:48:35
【问题描述】:
我们有一个包含地点数据库的网站。对于每个地方,我们的用户都可以采取我们记录的以下操作之一:
- VIEW - 查看它的个人资料
- 评分 - 以 1-5 星的等级对其进行评分
- 审查 - 审查它
- 已完成 - 标记他们去过那里
- 愿望清单 - 标记他们想去那里
- 最喜欢的 - 标记这是他们的最爱之一
在我们的地点数据库表中,每个地点都包含执行上述每个操作的次数以及用户给出的平均评分。
- 观看次数
- 收视率
- avg_rating
- 已完成
- 愿望清单
- 最喜欢的
我们希望能够使用上述信息生成排名靠前的位置列表。理想情况下,我们希望能够使用相对简单的 SQL 查询来生成此列表,而无需做任何繁琐的工作来计算额外的字段或相互堆叠排名位置。话虽如此,由于我们只有大约 50,000 个名额,因此我们可以运行一个每晚的 cron 作业来计算一些字段,例如不同类别的排名,如果这会对我们的顶级名额的总体结果产生有意义的影响。
如果您能就我们应该如何考虑将最佳位置冒泡到顶部提出一些建议,我们应该更加重视哪些标准,并给出这些信息,我将不胜感激 - 建议 MySQL 查询需要看起来像什么以选择前 10 名。
需要注意的一点是,此时我们不太关心某个地方的热门程度——这意味着查看汇总信息就可以了,并且不需要对最近的数据进行更重的加权。
提前感谢您的帮助和建议!
【问题讨论】:
-
没有人能告诉你如何做到这一点——这是你必须做出的决定,它决定了排名。你为什么不直接挑选一些东西并对其进行改进,直到你喜欢结果?例如,为什么不严格按照评分对它们进行排名?
-
@WhirlWind - 我知道最终的决定将是我们的,但我希望能获得一些高层次的想法和外部观点,了解其他人认为应该更高评价的标准及其背后的原因。此外,我知道有些人对这类问题深思熟虑,并会重视他们对适当解决方案的投入。
标签: algorithm mysql popularity