倒排索引

4 阅读1分钟

什么是倒排索引

简单来讲就是单词到文档的索引,初次看到这句话多少会有一点迷惑。 没关系,通过一个例子,能够快速地了解倒排索引的概念

文档

  • 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. 根据索引得到位置 小红(1, 2, 3), 编程(3)
  3. 取交集,返回结果3

优缺点分析

  1. 优点是非常实用🐟大量的搜索场景
  2. 缺点是当有大量改动和删除的时候,需要重新建立索引。

适用场景

  • 搜索引擎(Google/Bing)
  • 数据库全文检索(Elasticsearch)
  • 代码搜索工具(GitHub Search)