最近上数据结构课 上到b树的时候,课上的引子便是搜索引擎的结构基础:倒排索引,引起了我极大的兴趣
要知道google 百度这类公司便是应用这一结构为基石的,想想还是蛮有趣的
首先我们来回想一下在使用搜索引擎时的过程,输入一个或多个关键字,然后搜索引擎就返回了一个结果列表
最直白简单的想法是,搜索引擎遍历所有的文档,从中挑选与关键字相关的文档,那么这叫做【正想索引】
但是不得不否认这种想法是不可行的,对于搜索引擎来说,他们要面对的是万亿级别的文档数量,如果需要把所有的文档都遍历一遍,那么搜索一个关键字需要等上一年才能显示结果。
那么为了加快搜索引擎的速度,需要建立一个相反的索引列表。
当抓取一个网页文件时,对文件中的内容进行分词处理,把这些提取出来的关键字与这个网页文件形成相应的映射关系,这便是【倒排索引】
对于多个关键字分别索引网页文件的id ,进行并集处理得到结果便是搜索引擎的基本流程。
说到这里,个人觉得与其说他是倒排索引,更应该称之为转置索引或者反向索引,将一个未处理的数据库进行分词处理,方法从一般的以文档id为索引 转化为文档内容作为索引关键字。即:
文档----->关键字 转换为 关键字----->文档