检索技术核心20讲 / 从搜索引擎到推荐引擎,带你吃透检索
陈东
奇虎360商业产品事业部资深总监
  • 课程目录
  • 课程介绍
  • 开篇词 | 学会检索,快人一步!

    你理解的检索技术是什么?是搜索引擎?还是数据库?实际上,检索技术的覆盖范围远不止这些。

  • 导读 | 三步走策略,轻松搞定检索!

    在正式开始学习检索技术之前,我想和你先聊聊有哪些高效的学习方法,能让我们之后的学习事半功倍!

  • 01 | 线性结构检索:从数组和链表的原理初窥检索本质

    什么是检索?从字面上来理解,检索其实就是将我们所需要的信息,从存储数据的地方高效取出的一种技术。

  • 02 | 非线性结构检索:数据频繁变化的情况下,如何高效检索?

    有层次的文件组织肯定比散乱平铺的文件更容易找到。那对于零散的数据,非线性的树状结构是否可以帮我们提高检索效率呢?

  • 03 | 哈希检索:如何根据用户ID快速查询用户信息?

    给你一个用户ID,要求你查出该用户的具体信息。这样的需求我们应该如何实现呢?

  • 04 | 状态检索:如何快速判断一个用户是否存在?

    在实际工作中,我们经常需要判断一个对象是否存在。我们能否利用有序数组、二叉检索树或者哈希表来实现高效检索呢?

  • 05 | 倒排索引:如何从海量数据中查询同时带有“极”和“客”的唐诗?

    假设你已经熟读唐诗300首了。这个时候,如果我问你,有哪些诗中同时包含了“极”字和“客”字?你会怎么做呢?

  • 测一测 | 检索算法基础,你掌握了多少?

    对于检索相关的基础数据结构和算法,你掌握了多少呢?快来测试一下吧!

  • 特别加餐 | 倒排检索加速(一):工业界如何利用跳表、哈希表、位图进行加速?

    基础篇讲了这么多检索的基础数据结构和算法,那它们在工业界的实际系统中是怎么应用的呢?真正的检索系统和算法又是什么样的呢?

  • 特别加餐 | 倒排检索加速(二):如何对联合查询进行加速?

    在日常的检索中,我们往往会面临更复杂的联合查询需求。这个时候,又该如何加速呢?

  • 06 | 数据库检索:如何使用B+树对海量磁盘数据建立索引?

    关系型数据库是怎么借助磁盘完成存储和检索的?磁盘上的数据检索有什么特点?为什么B+树能对磁盘上的大规模数据进行高效索引?

  • 07 | NoSQL检索:为什么日志系统主要用LSM树而非B+树?

    这一讲,我和你讲LSM树的3大特点,分别是内存和磁盘分离,批量写代替随机写,以及高效率写入日志系统。

  • 08 | 索引构建:搜索引擎如何为万亿级别网站生成索引?

    搜索引擎这样的大规模数据应用,是如何对万亿级别的网站进行索引的呢?在保证检索效率的前提下,万亿级别的数据是怎么存储的呢?

  • 09 | 索引更新:刚发布的文章就能被搜到,这是怎么做到的?

    这一讲,我和你分享工业界中索引更新的方案,包括Double Buffer机制、全量索引结合增量索引,以及读写分离思想。

  • 10 | 索引拆分:大规模检索系统如何使用分布式技术加速检索?

    搜索引擎、广告引擎和推荐引擎,这些大规模的检索系统都采用的分布式技术有什么优点?它是如何提高检索效率的呢?

  • 11|精准Top K检索:搜索结果是怎么进行打分排序的?

    Top K检索的过程是搜索引擎中非常核心的一个环节。今天,我就和你分享,搜索引擎在Top K检索中打分排序的主要方法。

  • 12 | 非精准Top K检索:如何给检索结果的排序过程装上“加速器”?

    今天,我要和你分享非精准Top K检索的三种“加速”方法,分别是根据静态质量得分排序截断,使用胜者表,使用分层索引。

  • 13 | 空间检索(上):如何用Geohash实现“查找附近的人”功能?

    要实现“查找附近的人”功能,本质上就是要解决空间检索的问题。非精准检索能够帮助我们高效地解决这个问题。

  • 14 | 空间检索(下):“查找最近的加油站”和“查找附近的人”有何不同?

    在一些基于地理位置的服务中,我们并不关心检索结果是否是在“附近”,而是必须要找到“最近”的一批满足我们要求的结果。

  • 15 | 最近邻检索(上):如何用局部敏感哈希快速过滤相似文章?

    搜索引擎是如何快速过滤相似文章的?文章被向量空间模型表示为高维空间的点之后,又该如何检索呢?局部敏感哈希到底是什么?

  • 16 | 最近邻检索(下):如何用乘积量化实现“拍照识花”功能?

    现在,以图搜图、拍图识物已经是许多平台上的常见功能了。你知道这些依赖于高效的图片检索技术的功能,是怎么实现的吗?

  • 特别加餐 | 高性能检索系统中的设计漫谈

    高性能的检索系统中都有哪些核心设计思想?这些设计思想是如何应用的呢?今天,我就带你进一步分析进阶篇中提到的四个核心思想。

  • 测一测 | 高性能检索系统的实战知识,你掌握了多少?

    关于高性能检索系统的实战知识,你掌握了多少呢?快来测试一下吧!

  • 17 | 存储系统:从检索技术角度剖析LevelDB的架构设计思想

    今天,我和你分享LevelDB的架构设计思想。LevelDB的实现,可以看作是我们之前学过的各种检索技术的落地实践。

  • 18 | 搜索引擎:输入搜索词以后,搜索引擎是怎么工作的?

    今天,我和你分享搜索引擎的工作流程和核心检索架构,并且重点讨论搜索引擎对搜索词的特殊处理技术。

  • 19 | 广告系统:广告引擎如何做到在0.1s内返回广告信息?

    今天我和你分享,没有搜索词的展示广告的特点,以及广告引擎在索引构建 、召回和排序这些环节所进行的灵活设计。

  • 20 | 推荐引擎:没有搜索词,“头条”怎么找到你感兴趣的文章?

    为什么我们在浏览手机App的时候,通过“下拉刷新”功能,系统就能推荐出我们最关心的“头条信息”?

  • 结束语 | 成长和进化,技术如此,我们亦如此

    学习之路没有终点,保持探索和进化,才是我们成长的终极密码。

  • 结课测试 | 这些检索知识,你都掌握了吗?

    为了帮助你检验自己的学习效果,我特别给你准备了一套结课测试题。

【仅限 100 个名额 | 立省 ¥23】

拼团+口令「maimaimai」到手仅 ¥45,立省 ¥23,仅限 100 个名额

你将获得

  • 5 类数据结构的原理和应用
  • 15+ 行业真实应用案例详解
  • 4 大热门行业检索架构和设计
  • 从基础到实践,构建检索知识体系

讲师介绍

陈东,奇虎360商业产品事业部资深总监,前微软广告技术中心工程师,前聚效广告技术总监。在互联网广告行业深耕十余年,致力于弹性分布式系统架构、检索引擎与推荐系统等技术方向。目前在奇虎360负责展示广告平台相关研发团队的管理和业务拓展,包括检索引擎团队、算法团队、前端团队、测试团队等。

课程介绍

在日常的工作或者面试中,经常会遇到一些与查询相关的问题,比如:

  • 如何从海量数据中查询同时带有“极”和“客”字的唐诗?
  • 为什么很多日志系统使用NoSQL数据库而不是关系型数据库?
  • 在爬虫系统抓取网页之前,如何快速判断一个URL是否已经被抓取过?

其实,这些问题都属于检索技术的研究范畴。检索技术已经成为互联网时代技术人必不可少的技能之一,因为其应用极其广泛。

一方面,很多平台的架构设计都有相似的检索模块,比如搜索、推荐、广告等;另一方面,用好检索技术还可以帮助我们有效提升程序的执行效率,比如,只要我们能合理地使用数据库的索引功能,那程序从数据库中检索相关数据的速度就能提升好几倍。

在这个专栏中,陈东会通过20篇文章,将他十多年打造高性能广告引擎的工作经验,以及针对各种检索业务的深入思考和理解分享出来。带你系统地学习高效的检索方案和设计思想到底有哪些,到底怎么用;并且会结合工业界中的具体业务场景,从最简单的解决方案入手,一步一步带你分析各种方案的优缺点,找到最优解。

专栏共包含三个模块,分别是基础技术篇、进阶实战篇和系统案例篇。

基础技术篇:聚焦5大类核心的数据结构和检索算法,包括线性结构检索、非线性结构检索、哈希检索等,着重讲解它们的存储特点和检索效率,帮你理解检索技术的本质,并且能够在代码级别提升运行效率。

进阶实战篇:分析工业界中的高效检索方案,详细讲解其中涉及的高级检索技术,总结一些架构设计思想,比如,读写分离、索引和数据分离、空间检索、Top K搜索。掌握这些设计思想和高级技术能够大幅度提升检索效率,帮你解决实际工作中的检索难题。

系统案例篇:剖析当前热门的存储系统、搜索引擎、广告引擎、推荐引擎。学习这些系统是如何应用检索技术架构的、关键环节如何处理,从而帮你扩大知识面,拥有架构师、设计者视角,能够从更高的角度去思考问题、解决问题。

课程目录

适合人群

1.初级工程师:大学刚毕业或者拥有0~5年的工作经验,只要熟悉数组和链表,知道怎么评估时间代价即可。 2.中高级工程师:有5年以上工作经验,从事搜索引擎、广告系统、推荐系统相关工作。 3.任何在提高程序运行效率上遇到难题、想要拓展设计思路的程序员,都可以学习本专栏。

特别放送

订阅须知