前言
在学习 ES 的过程中,简单的介绍下倒排索引是怎么回事,对倒排索引有一个宏观的感受。
正排索引
在讲述倒排索引之前先介绍下正排索引。正排索引就是如下表形式:
文档id | 文档内容 |
---|---|
1 | 什么是正排索引 |
2 | 什么是倒排索引 |
3 | 正排索引和倒排索引 |
倒排索引
倒排索引就是对上表进行转换,最简单的倒排索引如下表所示:
单词 | 文档ids |
---|---|
什么 | 1,2 |
是 | 1,2 |
正排 | 1,3 |
倒排 | 2,3 |
索引 | 1,2,3 |
和 | 3 |
词频(TF)和位置(POS)
上表所示的倒排索引之所以是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词。实用的倒排索引还可以记载更多的信息,如下表第3列的词频和位置。
TF:单词在某个文档中出现的次数
POS:单词在文档中出现的位置
单词 | 文档ids | 文档id:词频TF:<位置POS> |
---|---|---|
什么 | 1,2 | 1:1:<1>,2:1:<1> |
是 | 1,2 | 1:1:<2>,2:1:<2> |
正排 | 1,3 | 1:1:<3>,3:1:<0> |
倒排 | 2,3 | 2:1:<3>,3:1:<5> |
索引 | 1,2,3 | 1:1:<5>,2:1:<5>,3:2:<2,7> |
和 | 3 | 3:1:<4> |
以“索引”这个单词为例,“3:2:<2,7>”:表示在文档id是3的文档中出现2次,在文档中的位置分别是2和7。