如何实现Foursquare的“市长”功能功能 - 找到最近 N 天内得分最高的用户?
在 Foursquare 中,过去 N 天内在某个地点得分最高的用户将被授予该地点的市长职位。
实现这一目标最有效的方法是什么?
用户可能已经检查了数百个地方。要显示某个用户所属的所有市长职位,需要将这数百个地点一一遍历,并查看每个地点最近60天内他的得分是否最高,这听起来非常低效。
是否有任何 SQL 或算法魔法可以快速执行该任务?
更新:我正在使用 MySQL 和 Django
In Foursquare, the user who has the highest score for a place in the last N days is awarded the Mayorship of that place.
What is the most efficient way to implement that?
A user could have checked into hundreds of places. To display all the mayorships that belong to a user, it'd be necessary to go through all those hundreds of places one by one and check if he has the highest score in the last 60 days for each place-- that sounds very inefficient.
Is there any SQL or algorithmic magic that could perform the task quickly?
UPDATE: I'm using MySQL and Django
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会将“当前专业”保留在位置表中,并不时更新。示例(我不知道数据模型是否正确):
I would keep the 'current major' in the place table, and update that from time to time. Example (I have no idea if the data model is correct):