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

你好,我是陈东。 在搜索引擎的检索结果中,排在前面几页的检索结果往往质量更好,更符合我们的要求。一般来说,这些高质量检索结果的排名越靠前,这个搜索引擎的用户体验也就越好。可以说,检索结果的排序是否合理,往往决定了一个检索系统的质量。 所以,在搜索引擎...

检索技术核心20讲

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

你好,我是陈东。 在互联网行业中,分布式系统是一个非常重要的技术方向。我们熟悉的搜索引擎、广告引擎和推荐引擎,这些大规模的检索系统都采用了分布式技术。 分布式技术有什么优点呢?分布式技术就是将大任务分解成多个子任务,使用多台服务器共同承担任务,让整体...

检索技术核心20讲

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

你好,我是陈东。 在前面的课程中,我们讲到,倒排索引是许多检索系统的核心实现方案。比如,搜索引擎对万亿级别网页的索引,就是使用倒排索引实现的。我们还讲到,对于超大规模的网页建立索引会非常耗时,工业界往往会使用分布式技术来并行处理。 对于发布较久的网页...

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲

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

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

检索技术核心20讲