什么是倒排索引
1.什么是倒排索引
2.什么是 MVCC前言
上周四被面试官问到了倒排索引,虽用过 ES,但不知道这玩意儿说不过去啊。
倒排索引(Inverted Index)是一种用于快速查找文档或文档集合中包含特定词汇的数据结构。与传统的正排索引(Forward Index)不同,倒排索引是通过词汇表(词汇-文档关系表)来构建的。
在倒排索引中,每个词汇都会映射到包含该词汇的文档列表。当需要查找包含特定词汇的文档时,只需直接查询倒排索引,而不需要遍历整个文档集合。
基本原理:
- 收集文档:首先,需要收集要建立索引的文档,这可以是文本文档、网页、数据库记录等。
- 分词:对每个文档进行分词,将文档中的文本切分成词汇。这个过程通常包括去除停用词(常见但无实际意义的词汇)等预处理步骤。
- 建立词汇表:建一个词汇表,其中包含所有文档中出现过的词汇。这个词汇表可以看作是一个映射,将每个词汇与包含该词汇的文档列表关联起来。
- 构建倒排索引:对每个词汇,创建一个倒排列表(Inverted List),记录包含该词汇的文档的位置或标识。倒排列表通常按照文档的频率或其他相关信息进行排序。
- 查询:当需要查询包含特定词汇的文档时,直接查找倒排索引,找到包含该词汇的文档列表。这使得检索效率非常高效。
实际示例(结合正排索引)
正排索引:
假设有一本书,这本书有一个正排索引。正排索引记录了这本书的每一页的内容以及对应的页码。我们可以根据页码迅速找到书中的任意一页。
页码 | 内容 |
---|---|
1 | 书的封面和版权信息 |
2 | 序言 |
3 | 第一章的内容 |
4 | 第一章的继续 |
... | ... |
200 | 最后一章的内容 |
201 | 附录 |
倒排索引:
然后,假设按照内容中的词汇,建立倒排索引,记录每个词出现在这本书的哪些页。
词汇 | 出现的书籍和页码 |
---|---|
第一章 | 页3, 页4, ... |
最后 | 页200, ... |
内容 | 页3, 页200... |
... | ... |
参考文献
[1] 倒排索引-维基百科
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构