1. 数据搜索方式
Elasticsearch作为一个搜索引擎,主要的任务就是对数据进行检索,为了更好的实现目的,首先需要对数据进行一定的了解。
数据有两种类型:
- 结构化数据
- 特点:格式固定,长度有限。
- 非结构化数据
- 特点:格式不固定,长度不定。
对于结构化数据,数据的搜索方式主要有顺序扫描
、关键词精确匹配
、关键词部分匹配
等。
对于非结构化数据,数据的搜索方式主要有顺序扫描
和全文检索
两种方法。受到非结构化数据特点的影响,顺序扫描
对于处理非结构化数据的效率很低,因此全文检索
方式应运而生,而全文搜索就是Elasticsearch所要做的事情。
2. 搜索引擎工作原理
搜索引擎的工作原理分为两个阶段:
- 网页数据爬取和索引阶段
- 包括:网络爬虫、数据预处理、数据索引。
- 搜索阶段
- 包括:搜索关键词、输入内容预处理、搜索关键词查询。
(1) 网页数据爬取和索引阶段
- 使用网络爬虫尽可能快、尽可能全地发现和抓取互联网上的各种网页。
- 被爬取的网页会被存入网页库,注意存入新网页之前需要进行查重检查,防止存入重复网页。
- 网页数据预处理程序不断地从网页库中取出网页进行必要的预处理。常见的预处理动作有去除噪声内容(版权声明文字、导航条、广告等)、关键词处理(如中文分词、去除停止词)、网页间链接关系计算等。网页经过预处理后,会被浓缩成以关键词为核心的内容。
- 将预处理过的数据进行数据索引过程。索引过程先后进行正向索引和倒排索引阶段,最终建立索引库。索引库的更新和维护通常采用增量方式进行。
(2) 搜索阶段
- 对用户输入的关键词进行预处理(如删除不必要的字符等)。
- 根据分词规则进行分词。
- 向索引库发送搜索请求。
- 搜索引擎根据索引库返回的内容进行排序后返回给用户。
3. 网络爬虫工作原理
网络爬虫通过种子爬取网页的链接地址来寻找目标网页。从网站的一个页面,读取其中内容并通过其中包含的其他网页的链接来寻找下一个页面,如此循环,直到抓取所有内容。
网络爬虫工作时的常规做法如图所示。
(1) 爬取策略
网络爬虫在爬取网络时需要根据一定的策略,常用的爬取策略有深度优先
和广度优先
两种。
原理
深度优先:从种子站点开始,当子页面中的每一个可能的链接路径深入到不能再深入(即子页面中没有超链来进行更深入的爬取)时,返回父页面,继续爬取下一个子页面,如此循环,直到全部爬取完成。
广度优先:从种子站点开始,将页面中的所有链接添加到待爬取表中,依次爬取,直到所有链接爬取完成。
优缺点分析
深度优先
:只保存部分结点,占用空间少;有回溯操作,运行速度慢。
广度优先
:保留全部结点,占用空间大;无回溯操作,运行速度快。
(2) 收录模式
收录模式一般有两种:增量收集
和全量搜集
。
全量搜集就是每次爬取网页都更新全部数据内容,特点是资源开销大、付出成本高、内容更新的时效性不高、网路宽带消耗高、更新时间长。
增量收集避免了全量搜集的弊端,主要用于搜集新网页、搜集更新的网页、删除不存在的网页,但是网络爬虫的设计也会更加复杂。
4. 网页分析
网页分析
动作发生在网络爬虫将爬取到的网页内容存储到网页库中之后。
网页分析
主要的分析动作:去除噪声
、网络内容摘要
、网页重要程度计算
、链接分析
、关键词提取/分词
等。
(1) 去除噪声
原理
通过去除广告、无关的导航条、版权信息、调查问卷等和文章主体无关的内容,减小索引结构规模。
目的
提高搜索的准确性,提高搜索速度。
(2) 网络内容摘要
摘要的生成方式主要有两种:静态生成
和动态生成
。
静态生成
方式直接从网页内容中提取一小段文字展示,这种方式“短、平、快”,但是展示内容可能与搜索的关键词无关。
动态生成
方式根据查询关键词在文档中的位置,提取其前后的文字,并将关键词高亮显示,保证展示的摘要与搜索的关键词的相关性。
(3) 网页重要程度计算
网页重要程度计算
用于衡量网站的权威性。通过计算网页被引用的次数来衡量网站的权威性,呈正相关。
(4) 链接分析
通过链接分析
,可以看出网页的权威程度和流行程度。
从算法的角度来解析链接分析
,可以将网页的链接关系看作有向图,网页的链接关系就变成了入度和出度。入度指的是网页可以通过其他网页的链接来访问,出度指的是网页中链接了其他网页,入度越大说明网页越权威、越流行。谷歌提出的PageRank算法便是谷歌搜索引擎的重要法宝。