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

你好,我是陈东。欢迎来到《检索技术核心20讲》。 今天是课程导读,在正式开始学习检索技术之前,我想和你先聊聊这个专栏的学习方法,目的就是让我们后面的学习能达到事半功倍的效果。 想要高效地学习检索,我的经验是咱得先弄清楚到底都要学哪些内容,给自己一张知...

检索技术核心20讲

开篇词:学会检索,快人一步!

你好,我是陈东,本硕都毕业于北京大学,目前是奇虎360商业产品事业部资深总监。 提起检索,我真有挺多话要说,因为这是我从学生时代到职场一路走来,一直都在学习和从事的事情。 我在研究生时期就加入了北大网络实验室。这个实验室当时最有名的一个产品,就是19...

检索技术核心20讲

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

你好,我是陈东。欢迎来到专栏的第一节,今天我们主要探讨的是,对于数组和链表这样的线性结构,我们是怎么检索的。希望通过这个探讨的过程,你能深入理解检索到底是什么。 你可以先思考一个问题:什么是检索?从字面上来理解,检索其实就是将我们所需要的信息,从存储...

检索技术核心20讲

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

你好,我是陈东。 当我们在电脑中查找文件的时候,我们一般习惯先打开相应的磁盘,再打开文件夹以及子文件夹,最后找到我们需要的文件。这其实就是一个检索路径。如果把所有的文件展开,这个查找路径其实是一个树状结构,也就是一个非线性结构,而不是一个所有文件平铺...

检索技术核心20讲

3、哈希检索:如何根据用户ID快速查询用户信息?

你好,我是陈东。 在实际应用中,我们经常会面临需要根据键(Key)来查询数据的问题。比如说,给你一个用户ID,要求你查出该用户的具体信息。这样的需求我们应该如何实现呢?你可能会想到,使用有序数组和二叉检索树都可以来实现。具体来说,我们可以将用户ID和...

检索技术核心20讲

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

你好,我是陈东。 在实际工作中,我们经常需要判断一个对象是否存在。比如说,在注册新用户时,我们需要先快速判断这个用户ID是否被注册过;再比如说,在爬虫系统抓取网页之前,我们要判断一个URL是否已经被抓取过,从而避免无谓的、重复的抓取工作。 那么,对于...

检索技术核心20讲

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

你好,我是陈东。 试想这样一个场景:假设你已经熟读唐诗300首了。这个时候,如果我给你一首诗的题目,你可以马上背出这首诗的内容吗?相信你一定可以的。但是如果我问你,有哪些诗中同时包含了“极”字和“客”字?你就不见得能立刻回答出来了。你需要在头脑中一首...

检索技术核心20讲

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

你好,我是陈东。 在基础篇中,我们学习了许多和检索相关的数据结构和技术。但是在大规模的数据环境下,这些技术的应用往往会遇到一些问题,比如说,无法将数据全部加载进内存。再比如说,无法支持索引的高效实时更新。而且,对于复杂的系统和业务场景,我们往往需要对...

检索技术核心20讲

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

你好,我是陈东。 B+树作为检索引擎中的核心技术得到了广泛的使用,尤其是在关系型数据库中。 但是,在关系型数据库之外,还有许多常见的大数据应用场景,比如,日志系统、监控系统。这些应用场景有一个共同的特点,那就是数据会持续地大量生成,而且相比于检索操作...

检索技术核心20讲

8、索引构建:搜索引擎如何为万亿级别网站生成索引?

你好,我是陈东。 对基于内容或者属性的检索场景,我们可以使用倒排索引完成高效的检索。但是,在一些超大规模的数据应用场景中,比如搜索引擎,它会对万亿级别的网站进行索引,生成的倒排索引会非常庞大,根本无法存储在内存中。这种情况下,我们能否像B+树或者LS...

检索技术核心20讲