Skip to content
章节导航

数据库里面的正排索引和倒排索引

正排索引 (Forward Index )

指将文档的内容按照文档的顺序进行索引,每个文档对应一个索引条目,包含了文档的各个字段的内容。

例子假设我们有三个文档的标题和内容:

  • 文档1:标题 "Apple iPhone 12",内容 "The latest iPhone model"
  • 文档2:标题 "Samsung Galaxy S21",内容 "Powerful Android smartphone"
  • 文档3:标题 "Microsoft Surface Laptop",内容 "Thin and lightweight laptop"

正排索引的结构示意图如下

DocumentIDTitleContent
1Apple iPhone 12The latest iPhone model
2Samsung Galaxy S21Powerful Android smartphone
3Microsoft Surface LaptopThin and lightweight laptop

正排索引的优势在于可以快速的查找某个文档里包含哪些词项。但是正排不适用于查找包含某个词项的文档有哪些

在数据库系统中,将正排索引类比为表格的结构,每一行是一个记录,每一列是一个字段(类似于 MySQL)

倒排索引(Inverted Index)

  • 根据关键词构建的索引结构,记录了每个关键词出现在哪些文档或数据记录中,适用于全文搜索和关键词检索的场景
  • 它将文档或数据记录划分成关键词的集合,并记录每个关键词所出现的位置和相关联的文档或数据记录的信息

案例

例子假设 使用以下文档构建倒排索引

  • 文档1:标题 "Apple iPhone 12",内容 "The latest iPhone model"
  • 文档2:标题 "Samsung Galaxy S21",内容 "Powerful Android smartphone"
  • 文档3:标题 "Microsoft Surface Laptop",内容 "Thin and lightweight laptop Apple"

倒排索引的结构示意图如下:

TermDocuments
Apple1,3
iPhone1
121
latest1
Samsung2
Galaxy2
S212
Powerful2
Android2
smartphone2
Microsoft3
Surface3
Laptop3
Thin3
lightweight3

总结

  • 正排索引和倒排索引的结构和用途不同
  • 正排索引用于快速访问和提取文档的内容
  • 倒排索引用于快速定位和检索包含特定词语的文档