自制搜索引擎
上QQ阅读APP看书,第一时间看更新

1-1 理解搜索引擎的构成

在本节,我们首先介绍什么是搜索引擎,然后再大略地讲解其基本架构。由于从1-2节开始还会详细地讲解有关内容,所以在本节就让我们先在大体上了解一下搜索引擎的全貌吧。

什么是搜索引擎

搜索引擎是一类系统或软件的统称,作用是从文档的集合中查找(检索)出匹配信息需求(查询)的文档,信息需求是由单词、问题等构成的。

确切地说,本书所讲解的搜索引擎其实是“全文搜索引擎”。所谓的“全文”指的就是全部的句子,当检索的对象为“由文本构成的文档中的全部句子”时,对于该文档进行的检索就称为全文搜索。而实现了这种全文搜索的系统就是全文搜索引擎(全文搜索系统),在英文中一般称为Full-text Search Engine。在本书之后的章节中,提到“搜索引擎”指的就是全文搜索引擎。

在现代的搜索引擎中,不仅能看到Google和Yahoo!等Web检索,还可以看到邮件检索和专利检索等各式各样的应用程序(应用层)。当然,应用程序的用途和使用方式不同,搜索引擎的规模和其所要求的系统必备条件也就不同。尽管如此,在这些应用程序中,搜索引擎的基本结构却没有太大的差异。本书将以搜索引擎的基本结构为主进行讲解。

下面,就让我们先从搜索引擎的全貌看起吧。

构成搜索引擎的组件

搜索引擎一般由以下4个组件构成。

 

● 索引管理器(Index Manager)

● 索引检索器(Index Searcher)

● 索引构建器(Indexer)

● 文档管理器(Document Manager)

 

图1-1展示了构成搜索引擎的全部要素。首先让我们简单地看看这些组件都在进行着怎样的工作吧。

图1-1 搜索引擎的构成

■索引管理器

索引管理器组件的作用是管理带有索引结构的数据,索引结构是一种用于进行高速检索的数据结构。对索引的访问也是通过索引管理器进行的。

索引管理器通常是将索引作为二级存储上的二进制文件来进行管理的。而且,还经常会通过保存经过压缩的索引来达到减少从二级存储加载的数据量,提升检索处理效率的目的。

■索引检索器

索引检索器是利用索引进行全文搜索处理的组件。索引检索器根据来自检索应用程序用户的查询,协同索引管理器进行检索处理。在大多数情况下,索引检索器都会根据某种标准对与查询相匹配的检索结果排序,并将排在前面的结果返回给应用程序。

另外,本书将查询和信息需求视为同义词。所谓查询是指“由1个以上的单词或词组组成的对搜索引擎的询问”。

■索引构建器

索引构建器是从作为检索对象的文本文档中生成索引的组件。索引构建器会先通过解析将文本文档分解为单词序列,然后再将该单词序列转换为索引结构。在搜索引擎中,将生成索引的环节称为索引构建(Index Construction)。

■文档管理器

文档管理器是管理文档数据库的组件,文档数据库中储存着作为检索对象的文档。文档管理器会先从文档数据库中取出与查询相匹配的文档,然后再根据需要从该文档中提取出一部分内容作为摘要。

由于文档管理器的结构非常简单,只是对应着文档特定的ID(文档编号)来保存文档的内容,所以本书就省略了相关的详细介绍。我们经常能看到有人将数据库管理系统(DBMS)和基于二级存储的数据库管理器(DBM)等用作文档管理器。

由文档管理器管理的文档数据库既可以在构建索引的阶段随索引一同构建,也可以提前构建。

与搜索引擎相关的组件

严格来讲,本节所介绍的爬虫和搜索排序系统虽不是搜索引擎的一部份,但却是与搜索引擎密切相关的组件。

■爬虫

爬虫(Crawler)是用于收集Web上的HTML文件等文档的系统(机器人)。例如,用于Web检索的爬虫就是通过追随Web页面上的超链接来收集全世界的HTML网页的。全世界的Web页面正以惊人的速度不断增长,因此爬虫的任务就是高效地收集这些网页。

■搜索排序系统

以Google的PageRank系统为代表的搜索排序系统是给作为检索对象的文档打分的系统。例如,在Web检索中,通常会以考量了查询与文档的关联性以及文档的热门度后得出的分数为基准,将检索结果排序后提供给应用程序的用户。搜索排序系统正是用于此目的的、能(机械地)算出文档热门度的系统。

在本节,我们讲解了搜索引擎的一般构成以及各个组件的主要用途。由于在后面的章节还会继续一一讲解各个组件,所以即使现在还未能充分理解也不必担心,可以先从大体上把握搜索引擎的全貌。