360搜索的百亿级网页搜索引擎的架构设计与实现( 二 )


  • Query需求分析
针对query本身我们要分析用户的意图是什么?当然也包括一些时效性的特征 。举个例子,比如说“非诚勿扰”这个词,它有电影也有综艺节目 。
360搜索的百亿级网页搜索引擎的架构设计与实现

文章插图
 

360搜索的百亿级网页搜索引擎的架构设计与实现

文章插图
 
如果说能够分析出用户本身他是想看电影还是看综艺节目,我们就会给用户反馈一个更优质的结果,来满足用户的需求 。
query分析这里我主要做了一个简单的介绍,query分析涉及到的一些算法的东西,可能以后有机会再具体分享,这里先不做介绍 。
第二步,查询策略
查询策略覆盖的工具就是我们整个引擎架构所要做的工作 。查询策略主要包括四个方面的工作:检索资源、确定相关网页集合、结果相关性计算、重查策略 。
  • 检索资源
所谓检索资源就是我们从互联网上拿到的网页 。从互联网上能拿到的网页,大概是万亿规模,如果说我们把所有网页拿过来,然后做建库做索引,在用户层面检索,从量级上来说是不太现实的 。因为它需要很多的机器资源,包括一些服务资源,另外我们从这么大一个集合里面来选取符合用户需求的数据,代价也是很大的 。所以说我们会对整个检索资源做一个缩减,也就是说我们会针对互联网上所有的抓取过的网页,做一个质量筛选 。
【360搜索的百亿级网页搜索引擎的架构设计与实现】质量筛选出结果之后,我们还会对网页做一个分类 。我们拿到陌生的网页,会根据它本身的站点的权威性,网站本身的内容质量做打分 。然后我们会对网页分类,标记高质量的网页,普通网页,时效性的一个网页,这样的话在用户检索的时候我们会优先选择高质量的网页返回给用户 。当然从另外一个维度来讲,我们也会从内容上进行分类,就是说每个网页的title和qanchor信息,也就是锚文本信息,是对整篇文章的一个描述信息,也代表文章的主体 。如果我们优先拿title和anchor信息作为用户的召回的一个相关url集合,那它准确性要比从正文拿到的结果质量要高 。当然我们也会保留这种信息来提升它的召回的量 。这是检索要准备的检索资源这一块 。
  • 确定相关网页集合
这一块的话基本上可以分为两点 。
一个是整个query切分后的 term命中,能够命中query当然非常好,因为它能够反应相关数据,正常情况下,网站和用户query相关性是非常高的 。
但是也会存在这样问题,所有的query全命中有可能返回网站数量不够,我们这时候就需要做一些term部分命中的一些策略 。前面query分析中讲到了term weight的概念,我们可能会选择一些term weight比较重要的term来作为这次召回结果的一个term 。整个确定相关网页集合的过程,就是一个求交计算的过程,后面我会再详细介绍 。
  • 结果相关性计算
我们拿到了相关的网页之后,会做一个打分,打分就是所说的结果相关性计算 。我这里列举了两个最基础的计算 。第一个是基础权值的计算,针对每个term和文章本身的相关性的信息 。第二个就是term紧密度计算,也就是整个query里面的term在文章中的分布情况 。
  • 重查策略
为什么有重查策略,就是因为在用户检索过程中有可能返回的结果比较少,也有可能返回给用户的结果质量比较低,最差的就是结果不符合用户的真正意图 。我们可能通过以下三个方式来解决这个问题,一是增加检索资源来拿到更多的结果;而是通过更小粒度的term,减掉一些不重要的term来拿到的结果,还有我们可能也会做一些query的改写以及query的扩展,来满足用户的意图 。
从整个检索模型可以看到,我们要做的工作首先是query分析;第二我们需要把检索资源提前准备好,那就是所谓的索引;第三点是在一个query过来之后,我们通过求交计算确定相关的网页集合,然后通过相关性计算,把优质的集合返回给用户,最后如果结果不满足用户要求的话,我们可以做一个重查 。
这个检索模型,就是我们360搜索设计的一个基础 。
02 百亿级网页计算关键技术下面我介绍一下360搜索这种百亿级网页的搜索引擎的关键技术 。我这里主要介绍离线建库和在线检索两个核心模块 。
360搜索的百亿级网页搜索引擎的架构设计与实现

文章插图
 
离线建库和在线检索
离线建库


推荐阅读