美文网首页
主流搜索引擎算法【分布式索引】

主流搜索引擎算法【分布式索引】

作者: 马小马_f182 | 来源:发表于2019-04-20 17:24 被阅读0次

分布式索引(Parallel Indexing)

当搜索引擎需要处理的文档集合太多的时候,就需要考虑分布式解决方案。每台机器维护整个索引的一部分,有多台机器协作来完成索引的建立和对查询的响应。

- 按文档划分(Document Paritioning)

将整个文档集合切割成若干个子集合,而每台机器负责对某个文档子集合建立索引,并响应查询请求。

- 按单词划分(Term Paritioning)【可操作性不强】

每个索引服务器负责词典中部分单词的倒排列表的建立和维护。

工作原理:一次一个单词。假设查询包含A、B、C三个单词,查询服务器接收到查询后,将查询转发到包含单词A倒排列表的索引服务器节点1,索引服务器节点1提取A的倒排列表,并累计计算搜索结果的中间的分,然后将查询和中间结果传递给包含单词B倒排列表的索引服务器节点,索引服务器节点2也是类似处理,并继续到索引服务器节点3。然后将最终结果返回给查询分发服务器,查询分发服务器计算得分最高的K个文档作为搜索结果输出。

两种方案比较

- 按文档比较常用,按单词划分只在特殊应用场合才使用。

- 按单词划分的不足:

可扩展性

搜索引擎处理的文档是经常变动的。如果按文档来对索引划分,只需要增加索引服务器,操作起来很方便。但如果是按单词进行索引划分,则对几乎所有的索引服务器都有直接影响,因为新增文档可能包含所有词典单词,即需要对每个单词的倒排列表进行更新,实现起来相对复杂。

负载均衡

常用单词的倒排列表非常庞大,可能会达到几十M大小。如果按文档划分,这种单词的倒排列表会比较均匀地分布在不同的索引服务器上,而按单词进行索引划分,某个常见单词的倒排列表全部内容都由一台索引服务器维护。如果该单词同时是一个流行词汇,那么该服务器会成为负载过大的性能瓶颈。

容错性

假设某台服务器出现故障。如果按文档进行划分,那么只影响部分文档子集合,其他索引服务器仍然能响应。但如果按单词进行划分,若索引服务器发生故障,则某些单词的倒排列表无法访问,用户查询这些单词的时候,会发现没有搜索结果,直接影响用户体验。

对查询处理方式的支持

按单词进行索引一次只能查询一个单词,而按文档划分的不受此限制。

相关文章

  • 主流搜索引擎算法【分布式索引】

    分布式索引(Parallel Indexing) 当搜索引擎需要处理的文档集合太多的时候,就需要考虑分布式解决方案...

  • ES 分布式搜索入门

    1 主流分布式搜索引擎 1.1 Lucene Lucense官网地址: http://lucene.apache....

  • 主流搜索引擎算法【建索引】

    索引基础 单词-文档矩阵 倒排索引基本概念 单词词典常用的存储数据结构:1.哈希表+冲突链表2.树形结构【B树与B...

  • 主流搜索引擎算法【查询】

    主要有下面三种查询处理机制。 一次一文档(Doc at a Time) 以倒排列表中包含的文档为单位,每次将其中某...

  • 搜索引擎之Lucene,Solr,ElasticSearch比较

    1 搜索引擎 1.1 简介 全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的...

  • ELK总结—第二篇Logstash的搭建

    1、简介 Elasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文本检索能力,广...

  • ELK

    架构 Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引...

  • Elastic Stack

    概述 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副...

  • 搜索引擎

    Elasticsearch 分布式搜索引擎 Solr 不是实时的搜索引擎 Lucene 全文检索工具包单独使用Lu...

  • 使用Fluentd、Elasticsearch、Kibana共同

    Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制...

网友评论

      本文标题:主流搜索引擎算法【分布式索引】

      本文链接:https://www.haomeiwen.com/subject/muylgqtx.html