什么是倒排索引
简单来讲就是单词到文档的索引,初次看到这句话多少会有一点迷惑。 没关系,通过一个例子,能够快速地了解倒排索引的概念
文档
- sentence1: 我爱小红
- sentence2: 小红是一个美丽的姑娘
- sentence3: 我爱和小红一起编程
建立索引
首先需要通过对每个句子进行分词
- 我/爱/小红
- 小红/是/一个/美丽/的/姑娘
- 我/爱/和/小红/一起/编程
单词 | 索引(句子Id: 位置) |
---|---|
我 | 1:1, 3:1 |
爱 | 1:2, 3:2 |
小红 | 1:3, 2:1, 3:4 |
美丽 | 2:4 |
姑娘 | 2:6 |
编程 | 3:6 |
搜索
当搜索“···小红···编程···”的时候
- 首先分词
- 根据索引得到位置 小红(1, 2, 3), 编程(3)
- 取交集,返回结果3
优缺点分析
- 优点是非常实用🐟大量的搜索场景
- 缺点是当有大量改动和删除的时候,需要重新建立索引。
适用场景
- 搜索引擎(Google/Bing)
- 数据库全文检索(Elasticsearch)
- 代码搜索工具(GitHub Search)