今天的文章,我们继续探讨搜索引擎,和大家聊聊搜索引擎最重要的一环——倒排索引。
在介绍倒排索引之前,我们先来看看什么是索引。索引是数据库当中的概念,维基百科中的说法是“数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据”。可以简单地把索引当成是字典里的检索目录,我们比如我们要查一个叫“index”的单词,通过目录,可以快速地找到字母i开始的位置。索引也是一样,不过我们查找的不再是单词的首字母,而是数据。
在之前介绍搜索引擎的文章当中,我们曾经说过,搜索引擎的爬虫爬取到网页的文本信息之后,会先进行分词,再进行存储。也就是说存储的不是完整的文档,而是文档当中的关键词信息。显然,搜索引擎当中包含的网页数量极为庞大,为了保证效率,我们必须要使用索引。
我们将每个网页称作是一个文档(document),为它准备一个文档Id,然后通过链表将文档当中的关键词串联起来。那么这个数据结构应该变成下面这个样子。
在这张图里面,我们通过文档的ID去查询文档当中包含的关键词信息。我们先查到对应的文档,再去查其中的id,这是一个符合我们日常思维的查询,所以被认为是一个“正向查询”。因此,这个索引结构被称为正向索引</