- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜索引擎关键组件
搜索引擎关键组件
基于Lucene搜索引擎三个关键组件
获取数据
建立索引
进行查询
Nutch爬虫
Lecene是一个提供全文文本搜索的函数库,提供了众多API;
Nutch爬虫是建立在Lucene核心上的Web搜索的具体实现,适合在搜索引擎中起抓取资源的作用。
Nutch爬虫根据网页库webDB生成抓取列表Fetchlist,然后再在列表所包含的url中抓取内容。
Nutch工作流程
建立初始URL集合
1)注入初始url操作(inject)
2)生成分段操作( generate segment)
3)抓取操作(fetch)
4)解析操作(parse)
5)更新url数据库(updateDB)
invertlinks操作分析
索引过程
搜索程序分析
Lucene索引机制
Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。
Lucene基本概念
解释
Document
用来描述文档,相当于数据库中的记录
Field
描述Document属性的字段,一个document可以包含多个字段
Analyzer
对文档内容进行分词处理,分词后给IndexWriter建立索引
IndexWriter
把 Document 对象加入到索引中
Directory
Lucene 的索引的存储的位置路径
Lucene索引机制
Lucene建立索引,有三个主要步骤:
提取文本:Lucene只能对纯文本建立索引,任何需要建立索引的资料,都要进行过滤提取纯文本。对于XML和HTML,要过滤掉所有的tag。
文本分析:要建立索引,首先要将文本分解成一个个片段(分词),一般是单词,也可能是词组,句子等。分割好的文本,可能还要进行归一化处理,以确保最大程度上的检索能力。
将索引写入磁盘: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)操作。
Elastic Search中的名词概念
Elastic Search概念
解释
Mapping
索引内容相关的mapping 信息(类似于关系型数据库的表结构)
Replicas
索引副本,ES可以设置多个索引的副本
Shards
索引分片,ES可以把一个完整的索引分成多个分片,分布到不同的节点上
Cluster
集群中有多个节点,其中有一个为主节点
Node
节点是集群中的一个服务器,作为集群的一部分存储数据,参与集群的索引和搜索功能。
Recovery
数据重新分布,在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复
River
数据源,也是其它存储方式(如数据库)同步数据到ES的一个方法
Gateway
ES索引的持久化存储方式,默认把索引存放到内存中,当内存满了时再持久化到硬盘。
Discovery.zen
ES的自动发现节点机制
Transport
ES内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)
Elastic Search搜索流程
创建索引内容相关的mapping 信息(类似于关系型数据库的表结构)。
创建与集群交互的客户端,构建JSON串。
指定索引文档要索引的目标索引库(index),索引类型(type)和文档ID。
通过tcp 协议(rest 的话就是通过http 协议)发送请求到Elasticsearch 集群任意节点,接收请求的节点把请求转接到主节点。
主节点接收到请求后,开始进行分片操作,先读取集群状态,把目标索引及其分片信息提取出来,根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该条数据分配到哪个分片。
找
文档评论(0)