# 倒排索引

> 倒排索引（英语：Inverted index），也常被称为反向索引、置入档案或反向档案，是一种索引方法，被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 有两种不同的反向索引形式： 一条记录的水平反向索引（或者反向档案索引）包含每个引用单词的文档的列表。 一个单词的水平反向索引（或者完全反向索引）又包含每个单词在一个文档中的位置。 后者的形式提供了更多的兼容性（比如短语搜索），但是需要更多的时间和空间来创建。

- ID: m07590
- 分类: create
- 领域: 设计思维

## 定义

从词→文档列表的映射，而非从文档→词。使得关键词搜索极快。脚手架作用：为查询优化存储结构。牺牲写入效率换取读取效率——根据使用模式设计数据结构。

## 机制

传统索引是"文档→包含的词"；倒排索引反转成"词→出现该词的文档ID列表（+位置）"。查询时只需查词即得候选文档集，避免逐文档扫描。本质是以空间（额外索引）换时间（查询速度），并依查询模式（读多写少）优化结构。

## 练习

1）建索引：遍历文档，对每个词记录其文档ID与位置；2）查询时直接定位词→文档列表并求交/并；3）用压缩（词典、posting list）降存储；4）接受写入需更新索引的成本；5）在搜索/ES/DB中按需采用。

## 脚手架用法

为查询优化存储结构。牺牲写入效率换取读取效率——根据使用模式设计数据结构。

[阅读网页](https://thinkingmodels.site/entries/detail/m07590)
