XML地图 深圳SEO培训为广大SEO爱好者提供免费SEO教程,致力于SEO优化、SEO服务
首页 > SEO培训 » 搜索引擎分布式索引(Parallel Indexing)

搜索引擎分布式索引(Parallel Indexing)

2018-10-11 | 人围观 | 关键词:


  分布式索引(Parallel Indexing)
 

  当搜索引擎需要处理的文档集合数量非常庞大时,靠单机往往难以承担如此重任,此时需要考虑分布式解决方案,即每台机器维护整个索引的一部分,由多台机器协作来完成索引的建立和对查询的响应。至于多台机器如何分工协作,目前常用的分布式索引方案包括两种:按文档对索引划分和按单词对索引划分。
 

  3.10.1 按文档划分(Document Partitioning)
 

  所谓的按文档对索引划分,就是将整个文档集合切割成若干子集合,而每台机器负责对某个文档子集合建立索引,并响应查询请求。图3-32是该方式的一个示意图,假设文档集合包含5个文档,将其切割成两个子集合,分别交由两台机器建立索引。
 

  [图片]图3-32 按文档划分
 

  如图3-33所示为此分布式索引方案对用户查询的响应过程。查询分发服务器接收到用户查询请求后,将查询广播给所有索引服务器。每个索引服务器负责部分文档子集合的索引维护和查询响应,当索引服务器接收到用户查询后,按照本章前述小节所述计算相关文档,并将得分最高的K个文档送返查询分发服务器。查询分发服务器综合各个索引服务器的搜索结果后,合并搜索结果,将得分最高的m个文档作为最终搜索结果返回给用户,这样就完成了对一次用户查询的响应。
 

  [图片]
 

  3.10.2 按单词划分(Term Partitioning)
 

  按单词划分索引方式与上述按文档划分索引方式不同,不是对文档集合进行切割,而是对单词词典进行划分,每个索引服务器负责词典中部分单词的倒排列表的建立和维护,图3-34是这种分布式索引方案的示意图。假设单词词典包含了6个单词,这种方式将每3个单词的倒排列表存储在一台索引服务器上,以此协作方式来完成整个索引系统。
 

  [图片]图3-34 按单词划分
 

  按照单词对索引进行划分的分布式方案中,如何响应用户查询?图3-35是这种方案响应用户查询请求的示意图,值得注意的是,在图中所示体系结构下,搜索系统的查询处理方式只能是一次一单词的方式(细节参见3.7节内容)。
 

  [图片]图3-35 单词倒排列表分布情况查询处理
 

  在图示例子中,假设用户输入的查询包含3个单词Term1、Term2和Term3,查询分发服务器接收到用户查询后,将查询转发给包含单词Term1倒排列表的索引服务器节点1,索引服务器节点1提取Term1的倒排列表,并累计计算搜索结果的中间得分,然后将查询和中间结果传递给包含单词Term2倒排列表的索引服务器节点,索引服务器节点2也是类似处理,并继续传递到索引服务器节点3。索引服务器节点3处理完成后,将最终结果返回给查询分发服务器,查询分发服务器计算得分最高的K个文档作为搜索结果输出。很明显,这是典型的一次一单词的查询处理方最高的K个文档作为搜索结果输出。很明显,这是典型的一次一单词的查询处理方式。
 

  3.10.3 两种方案的比较
 

  以上两种分布式索引技术方案,按文档来对索引进行划分是比较常用的,而按单词进行索引划分只在比较特殊的应用场合才使用。之所以如此,是因为按单词进行索引划分在以下几个方面存在不足。
 

  可扩展性
 

  搜索引擎处理的文档集合往往是在不断变动的,如果是按文档来对索引划分,则很容易支持新增的文档,只要增加索引服务器,将新增的文档由新增索引服务器来负责处理即可,对系统其他部分影响很小,在实现上也非常方便。但是如果是按单词进行索引划分,则对几乎所有的索引服务器都有直接影响,因为新增文档可能包含所有词典单词,即需要对每个单词的倒排列表进行更新,实现起来相对复杂。
 

  负载均衡
 

  按单词进行索引划分在索引服务器的负载均衡方面做得也不是很好。有些单词比较常见,几乎出现在所有文档中,比如一些常用词,这些单词的倒排列表会非常庞大,可能会达到几十兆字节。如果是按文档进行索引划分,这种单词的倒排列表会比较均匀地分布在不同的索引服务器上,而按单词进行索引划分,某个常见单词的倒排列表全部内容都由一台索引服务器维护,如果这个单词同时又是一个流行词汇,会有很多用户搜索,维护这个单词倒排索引的索引服务器会成为负载过大的性能瓶颈。
 

  容错性
 

  假设在分布式索引系统里,某台索引服务器发生故障,对于按文档进行索引划分的方案来说,因为这只影响到部分文档子集合,即使某台索引服务器不能响应查询,其他索引服务器仍然能够响应,对于用户来说,并不会直接感受到这种故障的影响。但是对于按单词进行索引划分的情况,若索引服务器发生故障,则某些单词的倒排列表无法访问,用户查询这些单词的时候,会发现没有搜索结果,这直接影响用户体验。
 

  对查询处理方式的支持
 

  如上节所述,按单词进行索引划分只能支持一次一单词这种查询处理方式,而按文档进行索引划分则不受此限制,可以同时支持两种不同的查询处理方式。对于某些类型的搜索来说,需要一次一文档这种查询处理方式支持,否则在机制上就无法实现。按文档进行索引划分可以根据具体情况选择不同的查询处理方式,而按单词进行索引划分则没有这种灵活性。
 

相关内容推荐:

Top