倒排索引
预备知识
搜索引擎: Search Engine,一种信息检索系统
,旨在协助搜索存储在计算机系统中的信息。搜索结果一般被称为“hits”,通常会以表单的形式列出。网络搜索引擎是最常见、公开的一种搜索引擎,其功能为搜索万维网上储存的信息。
网页: Web Page,是一个存放于万维网
,用浏览器阅读
的文件,经由网址(URL)来识别与访问。
文档: Document,一般搜索引擎的处理对象是互联网网页,但还可涵盖更多种形式,比如Word,PDF,html,XML等不同格式的文件都可以称之为文档。再比如一封邮件,一条短信,一条微博也可以称之为文档。
文档集合: Document Collection,由若干文档构成的集合称之为文档集合。比如海量的互联网网页或者说大量的电子邮件都是文档集合的具体例子。
文档编号: Document ID,在搜索引擎内部,会将文档集合内每个文档赋予一个唯一的内部编号,以此编号来作为这个文档的唯一标识,这样方便内部处理,每个文档的内部编号即称之为“文档编号”,后文有时会用DocID来便捷地代表文档编号。
单词编号: Word ID,与文档编号类似,搜索引擎内部以唯一的编号来表征某个单词。
定义
搜索引擎中的一个概念。
搜索引擎中,一个未经处理的数据库中,一般是以文档ID作为索引,从文档角度看其中的单词,这种索引叫做forward index
。而inverted index
(倒排索引),则是以单词ID作为索引,从单词角度看文档。可以更形象地理解为:
- forward index :对应“单词-文档”矩阵的列分割
- inverted index:对应“单词-文档”矩阵的行分割,即forward index的转置
产生原因
forward index 无法满足快速检索的需求
当用户在主页上搜索关键词“华为手机”时,假设只存在正向索引(forward index),那么就需要扫描索引库中的所有文档,找出所有包含关键词“华为手机”的文档,再根据打分模型进行打分,排出名次后呈现给用户。因为互联网上收录在搜索引擎中的文档的数目是个天文数字,这样的索引结构根本无法满足实时返回排名结果的要求。
其他相关概念
单词词典: Lexicon,搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。
倒排列表: PostingList,倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
倒排文件: Inverted File,所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
参考文献
https://www.cnblogs.com/zlslch/p/6440114.html 倒排索引 - 博客园
https://www.zhihu.com/question/23202010 倒排索引为什么叫倒排索引 - 知乎
https://zh.wikipedia.org/wiki/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E 搜索引擎 - *
https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%A0%81 网页 - *