【360搜索:支撑百亿级网页搜索引擎的架构!】首先我们先从官网上抓取网页,抓取的网页会存到基于Hbase的网页库里 。这个是一个万亿量级的网页库,下一步要做的工作是质量筛选,然后我们会把通过质量筛选的网页放到我们的索引网页库中,所有的建库,包括rank计算,以及所有与搜索引擎相关的部分都是依赖于下边的网页索引库进行的 。我们在建索引的时候,会做一个分片处理,分片的机制采用了区间划分 。那么区间划分基本上我们就是用md5作为Key,本身md5是64位的整数,按照这64位整数的范围作为一个区间划分 。从url转换上md5它本身是均匀分布的,那我们分片按照这个区间划分也会是均匀的,实际上我们划分的各个索引节点的量级也是均等的 。进行分片之后,我们会针对每个分片基于Map-来跑,生成索引,索引主要包括上面讲的正排索引和倒排索引 。然后会把索引推送到下面的在线服务推荐,每个在线服务推荐负责一个索引库 。这里可以看到,我们根据网页的类型对索引库也做了一个划分,比如说重要网页索引库和普通网页索引库 。
还有一个问题,就是我们每天的新增的网站,超过我们实时的网页怎么办?这种情况我们会走另外一个流程,在网页抓取过来之后,也会有一个质量筛选,这个质量筛选有2个流程,第一个是实时计算,通过我们刚才讲到的Storm集群,包括我们目前公司内部的Titan集群,进行实时计算来生成实时性的索引 。第二个是我们会把每天更新的这些数据做批量计算,基于Map-生成一个相互索引,这样的话在时间上能够覆盖到所有的时间点 。
文章插图
整个离线建库基本是这样一个流程,下面介绍一下在线检索的模块 。用户检索过来之后,我们首先做一个query分析 。然后我们把query分析的结果扔给分布式服务的一个请求节点,这个请求节点通过广播的方式会把请求广播到这几种索引库这里 。在索引库内部会做一些求交计算 。第二步我们会做基础相关性的计算,然后把优质结果的Top N 来返回给上层的服务请求节点 。服务请求节点还会做一些策略,比如说用户的一些特定需求,包括一些机器学习的排序,最终返回给用户的网页基本上是几百条的一个量级 。
整个架构流程是就是这样的模式 。下面我会具体讲一下我们重点的一些核心模块的设计 。
- 360推送-360推送工具-360批量推送工具
- 百度、360快速收录新上线网站技巧、方法
- php怎么优化搜索,导航型搜索关键词如何优化
- 12490f能不能上3600内存
- 平板支撑腿要发力吗
- 巨鲸音乐盒 – 难以拒绝的免费正版音乐诱惑!方便搜索下载正版MP3歌曲的工具
- 旅游搜索
- 6 生僻字_小程序搜索排名规则,重在这6点!
- 媒体们求求你们放过平板支撑这个动作吧 卷腹吉尼斯记录
- 删除搜索建议,IE 加载项big搜索怎么删除