【全球快播报】Booking.com如何在毫秒内搜索数百万个地点
译自:How Booking.com Searches Through Millions of Locations in Milliseconds
(资料图片仅供参考)
Booking.com是一家与酒店、旅馆、度假租赁等相关的在线旅行社。每个月都有数亿用户通过访问该网站来寻找合适的度假住宿。Booking的一个主要特性是可以以地图的方式提供查找服务,其地图市场提供了上千万套房产,用户可以通过地图查找到:
- 提供租赁房产的位置
- 附近感兴趣的地方(博物馆、沙滩、历史建筑等)
- 租赁房产与感兴趣的地方的距离
为实现此需求,需要能够快速加载地图,其后端需要搜索世界各地数百万个不同的点。
Igor Dotsenko 写了一篇博客来探究他们是如何实现该目标的。
在地图上查找
当用户打开地图查找房产时,会出现一个有边界的框,此时需要在边框内展示感兴趣的点,这样Booking才能在该框中快速查找最感兴趣的点。
Quadtrees(四叉树)
底层数据结构采用的是Quadtree。Quadtrees是一种树,特别适用于2D空间数据,如地图、图像、视频游戏等。通过Quadtrees可以实现高效地插入/删除点操作、快速范围查找、最近邻搜索等。
Quadtrees和其他树结构一样存在父子节点。对于一个Quadtrees,其内部节点总是包含4个子节点(内部节点即非叶子的节点,叶子节点没有子节点)。父节点表示一个特定的2D区域空间,每个子节点表示该区域的象限。
当处理地图数据时,父节点表示地图上的某些区域,其4个子节点分别表示父区域的西北、东北、西南和东南四个象限。
对于Booking,每个节点表示地图上的特定有界框,用户可以通过在地图上放大或平移来修改可见的有界框。节点的每个子节点将西北、东北、西南和东南边界框保持在父节点的边界框内。
每个节点还包含少量标记(代表感兴趣的地点),每个标记会分配一个重要值,重要值大的标记被分配给树中更高的节点(即根节点中的标记是最重要的)。
下面看下Booking是如何查找、构建和更新Quadtree的。
查找Quadtree
当用户选择一个特定的有界框时,Booking会从Quadtree 中为该有界框查找最重要的标记,因此使用了广度优先查找(从上往下按照重要度查找到一定数目的标记)。
首先从根节点开始查找与选择的有界框交叉的标记,如果需要更多的标记,则会继续查找与有界框交叉的子节点,并将其添加到队列中。使用先进先出的顺序处理队列中的节点(查找和有界框交叉的标记)。一旦查找到足够(等于请求数目)的标记,则结束查找并将结果发送给用户(展示在地图上)。
构建Quadtree
本段内容来自该博客
Quadtree保存在内存中,且会时不时地通过重建来添加新的标记(或修改标记的重要程度)。
一开始只有一个表示整个世界的根节点,且为空。为了使用标记构建树,需要通过遍历所有标记来将其插入到树中。假设每个节点最多可以包含10个标记,每次插入时:
- 将当前标记放到当前节点的标记集中
- 如果当前标记的数目<=10,则插入结束,遍历下一个标记
- 如果当前标记的数目>10,则需要从该节点中找到重要值最低的标记,并将其放到子节点中(越靠近根节点的节点,其标记的重要值越高)
- 如果该节点没有子节点,则需要创建子节点(将节点的有界框分为4个子有界框,即4个子节点)
- 从子节点中查找与有界框重要值最低的标记相交的节点
- 将此标记递归放入子节点(即重复第一个步骤)
结果
Booking通过创建更多的Quadtree,并让每个Quadtree负责特定的地理区域来实现水平伸缩。对于存储了300,000个标记的Quadtree,其p99检索速度小于5.5毫秒。
关键词:
责任编辑:宋璟
-
【全球快播报】Booking.com如何在毫秒内搜索数百万个地点
-
国内首台150兆瓦级大型冲击式水轮机转轮成功下线
-
环球焦点!云南党政代表团访沪考察,调研拼多多“农产品上行”
-
福州超六成农贸市场迈向数字化-全球快消息
-
亚太股份:目前公司的轮毂电机已小批量生产|焦点速讯
-
全球观天下!克莱追梦去留与忠诚无关?续约勇士前景大猜想
-
世界热点!pbe登录失败 英雄联盟pbe登录失败怎么办/无法登陆解决方法
-
大港股份(002077):该股换手率大于8%(05-16) 当前观点
-
全球今热点:吉他社官网电脑版_吉他社官网
-
当前视点!直指AI发展两大瓶颈 北京这份文件给出答案:实施算力伙伴计划、建设预训练语料库
-
即时焦点:NASA 新的人工智能工具能够在太阳风暴袭击地球之前提前 30 分钟发出警告
-
适合讲故事的背景音乐轻音乐_适合讲故事的背景轻音乐
-
谋划部署的意思_部署的意思
-
今亮点!国家纳米中心碳纳米材料肠道微生物发酵过程分析研究获进展
-
产品方案推介第485期:恒银科技的“恒银科技基于物联网技术的运营E管家系统V1.0” 今日聚焦
-
杰伦布朗个人资料和图片_杰伦布朗最新篮球明星动态_世界快报
-
庚星股份:目前公司与徐州伟天正常开展大宗煤炭交易和回笼货款-全球观速讯
-
辽河油田兴隆台采油厂“唤醒”长停井“吐出”效益油
-
环球速讯:理财7日年化收益率是什么意思_7日年化收益率是什么意思
-
全球热文:顶不住了?威马被曝海口门店全部关停
-
信息:英尺换算英寸公式(英尺换算)
-
高瓴旗下HHLR一季度13F披露 加码阿里、微软、百度等科技股
-
【时快讯】夏季女性喝汤养颜瘦身
-
天天要闻:固废处理公司经营范围_固废处理公司怎么赚钱
-
揭秘和田玉直播套路,分辨可信度_全球新动态
-
焦点速看:嵩口古镇一日游攻略_嵩口古镇
-
电影《北京2022》发布群像海报 致敬奋战赛场内外的冬奥人 通讯
-
安全用电安全知识图片_安全用电的安全知识
-
环球讯息:券商观点|医药行业周报:国企改革仍为主线之一,天津为医药国改标杆
-
2023广州长隆野生动物园5月份开放吗?
-
世界新消息丨凝聚真情 浇灌民族团结之花
-
天天热门:小区车位转让协议书范本_小区的车位所有权归谁
-
当前信息:白云机场(600004)报收于14.31元,下跌0.28%
-
全球报道:外媒:美战机在阿拉斯加附近拦截6架俄军机
-
凯淳股份(301001)龙虎榜数据(05-15) 全球今日讯