写点什么

搜索引擎的基本架构

作者:littleFuBaby
  • 2023-05-16
    北京
  • 本文字数:972 字

    阅读完需:约 3 分钟

一、互联网搜索引擎整体架构


通过搜索引擎,快速检索互联网上的页面内容,互联网页面规模庞大,万亿级数据,一方面,搜索引擎把互联网页面收录起来,统一通过爬虫把页面存储在搜索引擎内部,另一方面,构建搜索引擎,以便快速获取想要的数据内容


爬虫,爬的就是一系列的文本,然后,从这些文本中进行各种校验去重


倒排索引,快速检索


链接关系,对检索出来的内容,进行排序,通过链接关系 PageRank 进行排序,不同页面会有不同权重的分,返回给用户一个经过权重值排序后的数据


二、爬虫系统架构


这个过程不就是原来 19e 的火车团队进行爬虫的方式


三、爬虫禁爬协议


这是一个共同遵守的协议


四、文档矩阵与倒排索引


正排索引,文档里面包含了哪些词,文档对应的词有哪些倒排索引,词对应的文档有哪些
复制代码


五、带词频的倒排索引


六、带词频与位置的倒排索引


通过位置判断两个词是否紧挨一起
复制代码


七、Lucene 架构


自己的系统优化数据存储和数据访问,比较成熟的方案就是Lucene
复制代码


八、Lucene 索引文件准实时更新


索引有更新,就需要重新全量创建一个索引来替换原来的索引。这种方式在数据量很大时效率很低,并且由于创建一次索引的成本很高,性能也很差。
Lucene 中引入了段的概念,将一个索引文件拆分为多个子文件,每个子文件叫做段,每个段都是一个独立的可被搜索的数据集,索引的修改针对段进行操作。
• 新增:当有新的数据需要创建索引时,原来的段不变,选择新建一个段来存储新增的数据。
• 删除:当需要删除数据时,在索引文件新增一个 .del 的文件,用来专门存储被删除的数据ID。当查询时,被删除的数据还是可以被查到的,只是在进行文档链表合并时,才把已经删除的数据过滤掉。被删除的数据在进行段合并时才会被真正被移除。
• 更新:更新的操作其实就是删除和新增的组合,先在 .del 文件中记录旧数据,再在新段中添加一条更新后的数据。
为了控制索引里段的数量,我们必须定期进行段合并操作
缺点:
不支持分布式集群
复制代码


九、ElasticSearch 架构


为了高可用,更大规模处理数据,常用ES,本质就是包装了Lucene,实现集群功能
• 索引分片,实现分布式• 索引备份,实现高可用• API 更简单、更高级
复制代码


十、ES 分片预分配与集群扩容


扩容单位以分片为主,如果分片有2个,而扩容有三个,则不起作用
因此,需要提前规划未来有多少台服务器,进而可以进行分片处理


把ES当作NoSql使用,作为存储使用,也越来越多
复制代码


用户头像

littleFuBaby

关注

强准备+强信念+强执行 2019-11-21 加入

以前是T型人才,当下是π型人才,未来是梳子型人才

评论

发布
暂无评论
搜索引擎的基本架构_littleFuBaby_InfoQ写作社区