从“查得到”到“查得快”:索引与检索的核心逻辑

你是否遇到过这样的困境:在学校里背熟了二分查找、哈希表,但在实际工作面对海量数据时,依然不知道该怎么设计查询接口?或者看到 MySQL 的 B+ 树索引和 Redis 的底层结构,只知道它们快,却说不清背后的权衡?《检索技术核心20讲》正是为了解决这个能力缺口而存在。这门课不讲泛泛的“如何使用工具”,而是深入底层,从线性结构一直讲到倒排索引,再从数据库索引讲到 NoSQL 的 LSM 树,帮你构建一套完整的检索知识体系。

基础不牢,地动山摇:先补齐数据结构与算法的底座

对于有一定编程基础但缺乏系统检索知识的同学,建议先从**基础技术篇**入手。前四讲分别涵盖了线性结构(数组、链表)、非线性结构、哈希检索以及状态检索。这里有一个容易被忽视的关键点:**哈希表与位图的选型**。课程通过“如何根据用户ID快速查询信息”和“如何快速判断用户是否存在”这两个具体场景,让你理解哈希适合精确匹配,而位图/布隆过滤器适合存在性判断。特别是关于“倒排索引”的讲解,它解决了传统关系型数据库在多关键词模糊搜索上的性能瓶颈,这是搜索引擎的基石。如果你连“如何通过中间字”这种常见需求背后的数据结构都没有概念,这一部分就是必补的短板。

从内存到磁盘,再到海量日志:进阶篇的场景化实战

当你掌握了基础,进阶实战篇则带你进入更真实的工程场景。第6讲详细拆解了**B+ 树在磁盘索引中的应用**,这是面试和工作中必须理解的“为什么数据库索引要用 B+ 树而不是二叉树或红黑树”。接着第7讲引入了 **LSM 树**,解释了为什么像 Elasticsearch 或大型日志系统(如 Kafka)这类写多读少的场景,更倾向于使用 LSM 树而非 B+ 树。这部分内容结合了大量工业界的加速技巧,如跳表、联合查询优化等,旨在让你不仅知其然,更知其所以然。

配套练习与预期收益

课程提供了配套的“测一测”环节,用于检验你对检索算法基础的掌握程度。建议在学习过程中,结合资料包中的代码示例动手实现一个简单的哈希索引和倒排索引,哪怕只是伪代码,也能极大加深理解。学完这门课,你应该能够独立回答以下问题:在不同数据规模下(内存 vs 磁盘),该如何选择最适合的检索数据结构?倒排索引是如何处理“且”、“或”等逻辑关系的?为什么 NoSQL 数据库在频繁写入场景下比传统关系型数据库更具优势?这份课程资料是你查漏补缺、构建检索系统底层认知的极佳路径。

课程目录

课前必学 (2讲)

  1. 开篇词 _ 学会检索,快人一步!
  2. 导读 _ 三步走策略,轻松搞定检索!

基础技术篇 (8讲)

  1. 01 _ 线性结构检索:从数组和链表的原理初窥检索本质
  2. 02 _ 非线性结构检索:数据频繁变化的情况下,如何高效检索?
  3. 03 _ 哈希检索:如何根据用户ID快速查询用户信息?
  4. 04 _ 状态检索:如何快速判断一个用户是否存在?
  5. 05 _ 倒排索引:如何从海量数据中查询同时带有“极”和“客”的唐诗?
  6. 测一测 _ 检索算法基础,你掌握了多少?
  7. 特别加餐 _ 倒排检索加速(一):工业界如何利用跳表、哈希表、位图进行加速?
  8. 特别加餐 _ 倒排检索加速(二):如何对联合查询进行加速?

进阶实战篇 (13讲)

  1. 06 _ 数据库检索:如何使用B+树对海量磁盘数据建立索引?
  2. 07 _ NoSQL检索:为什么日志系统主要用LSM树而非B+树?
  3. 08 _ 索引构建:搜索引擎如何为万亿级别网站生成索引?
  4. 09 _ 索引更新:刚发布的文章就能被搜到,这是怎么做到的?
  5. 10 _ 索引拆分:大规模检索系统如何使用分布式技术加速检索?
  6. 11|精准Top K检索:搜索结果是怎么进行打分排序的?
  7. 12 _ 非精准Top K检索:如何给检索结果的排序过程装上“加速器”?
  8. 13 _ 空间检索(上):如何用Geohash实现“查找附近的人”功能?
  9. 14 _ 空间检索(下):“查找最近的加油站”和“查找附近的人”有何不同?
  10. 15 _ 最近邻检索(上):如何用局部敏感哈希快速过滤相似文章?
  11. 16 _ 最近邻检索(下):如何用乘积量化实现“拍照识花”功能?
  12. 测一测 _ 高性能检索系统的实战知识,你掌握了多少?
  13. 特别加餐 _ 高性能检索系统中的设计漫谈

系统案例篇 (4讲)

  1. 17 _ 存储系统:从检索技术角度剖析LevelDB的架构设计思想
  2. 18 _ 搜索引擎:输入搜索词以后,搜索引擎是怎么工作的?
  3. 19 _ 广告系统:广告引擎如何做到在0.1s内返回广告信息?
  4. 20 _ 推荐引擎:没有搜索词,“头条”怎么找到你感兴趣的文章?

结束语 (2讲)

  1. 结束语 _ 成长和进化,技术如此,我们亦如此
  2. 结课测试 _ 这些检索知识,你都掌握了吗?