搜索引擎关键组件
4)解析操作(parse)
5)更新url数据库(updateDB) invertlinks操作分析 索引过程 搜索程序分析
Lucene索引机制
•
Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。
Lucene基本概念 Document Field Analyzer IndexWriter Directory 解释 用来描述文档,相当于数据库中的记录 描述Document属性的字段,一个document可以包 含多个字段 对文档内容进行分词处理,分词后给IndexWriter建立 索引 把 Document 对象加入到索引中 Lucene 的索引的存储的位置路径
Elastic Search搜索流程
Elastic Search集群
Mapping信息
主节点
Index目标库 Type ID 客户端
Json串
TCP
分片 操作
返回至客户端 Mapping 转换
返回结果
Json解析
ቤተ መጻሕፍቲ ባይዱ
Elastic Search搜索流程概略图
END THANK YOU
搜索引擎关键组件
基于Lucene搜索引擎三个关键组件
Nutch
获取 数据
Lucene
建立 索引
Elastic Search
进行 查询
Nutch爬虫
• Lecene是一个提供全文文本搜索的函数库,提供了众
多API;
• Nutch爬虫是建立在Lucene核心上的Web搜索的具体
实现,适合在搜索引擎中起抓取资源的作用。
• Nutch爬虫根据网页库webDB生成抓取列表Fetchlist,
然后再在列表所包含的url中抓取内容。
Nutch工作流程
• • • •
建立初始URL集合 1)注入初始url操作(inject) 2)生成分段操作( generate segment) 3)抓取操作(fetch)
•
• • • •
• 文本分析:要建立索引,首先要将文本分解成一个个片段
• 将索引写入磁盘:Lucene将分析好的文本使用一种叫做倒排
索引(inverted index)的数据结构写入到磁盘中。
Lucene索引机制
Lucene建立索引流程图
Elastic Search
•
ElasticSearch是底层基于Apache Lucene,是一个接近实时(NRT)的搜 索平台。即从索引一个文档直到这个文档能够被搜索到有一个轻微的延 迟(通常是1秒)。ES支持通过HTTP使用JSON进行数据索引。 ES集成了很多客户端的支持,比如PHP,Ruby,Perl,Python,Scala可 用于发现自动节点,所有的分片和副本可以移动到任何节点的 ElasticSearch 集群中。 索引可以分发到指定的分片(Shards)和节点 (Nodes)。 Elastic Search部署结构图。底层支持本地文件系统或者Hadoop 文件系 统等文件系统,通过Elasticsearch 提供的API,可以获取集群的状态信 息,节点负载信息、建立客户端与集群交互,实现索引的CRUD(Create、 Retrieve、Update、Delete)操作。
Lucene索引机制
• Lucene建立索引,有三个主要步骤: • 提取文本:Lucene只能对纯文本建立索引,任何需要建立索
引的资料,都要进行过滤提取纯文本。对于XML和HTML,要 过滤掉所有的tag。 (分词),一般是单词,也可能是词组,句子等。分割好的 文本,可能还要进行归一化处理,以确保最大程度上的检索 能力。
Elastic Search搜索流程
I. II. III. IV. V.
创建索引内容相关的mapping 信息(类似于关系型数据库的表结构)。
创建与集群交互的客户端,构建JSON串。 指定索引文档要索引的目标索引库(index),索引类型(type)和文档ID。 通过tcp 协议(rest 的话就是通过http 协议)发送请求到Elasticsearch 集群任意节点, 接收请求的节点把请求转接到主节点。 主节点接收到请求后,开始进行分片操作,先读取集群状态,把目标索引及其分片 信息提取出来,根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该 条数据分配到哪个分片。
VI.
VII. VIII.
找到索引分片的主分片,先把索引请求提交到主分片处理,判断索引操作的类型对 要索引的JSON 字符串进行解析,根据mapping 转换为对应的解析结果。
最后调用RobinEngine 中的相关方法(添加或修改)对底层lucene 进行索引操作,写入 到lucene 的内存索引中(RobinEngine.innerIndex)。 主分片索引请求完把请求发给副本进行索引操作,根据集群设置的参数值,至少插 入到两份索引中,索引操作才算操作完成。操作完成后把成功信息返回给客户端。
•
•
Elastic Search中的名词概念
Elastic Search概念 Mapping Replicas Shards Cluster Node Recovery River Gateway Discovery.zen Transport 解释 索引内容相关的mapping 信息(类似于关系型数据库的表结构) 索引副本,ES可以设置多个索引的副本 索引分片,ES可以把一个完整的索引分成多个分片,分布到不同的节 点上 集群中有多个节点,其中有一个为主节点 节点是集群中的一个服务器,作为集群的一部分存储数据,参与集群的 索引和搜索功能。 数据重新分布,在有节点加入或退出时会根据机器的负载对索引分片进 行重新分配,挂掉的节点重新启动时也会进行数据恢复 数据源,也是其它存储方式(如数据库)同步数据到ES的一个方法 ES索引的持久化存储方式,默认把索引存放到内存中,当内存满了时 再持久化到硬盘。 ES的自动发现节点机制 ES内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行 交互,同时它支持http协议(json格式)