搜索引擎为什么这么快?

如题所述

第1个回答  2022-06-20

速度,是工程和算法的灵魂。速度不仅意味着高效,还能 带给人快感

搜索引擎为什么在眨眼之间搜索出结果?

无外乎两个原因:软件快,或者硬件快 。下面将从硬件或者软件两个角度分析这个问题。

CPU最快的操作是位操作,其数学基础是布尔代数。布尔代数对于数学的意义相当于量子力学对物理学的意义,它们将我们对世界的认识从连续状态扩展到离散状态。布尔代数只有或、与、非三个运算,1938年香农大师指出可以使用布尔代数实现开关电路,奠定了数字电路的基础,所有的数学运算都可以转换成二值的布尔运算。人类正是依靠一个个的开关电路才搭建起了电子计算机。

搜索引擎可以分成三个子系统:

其中索引决定了搜索引擎的速度,所以他最基础,也最重要。

最简单的索引实现是一串比特,0表示文档不包含该关键词,1表示包含。比如搜索两个关键词A和B,只需要把A和B对应的索引比特做 与运算 ,就能快速得出同时包含A和B的网页序号。由于二进制的大部分位数都是0,所以只需要记录等于1的位数即可。所以,搜索引擎的索引基于 倒排关键词 实现,是一张大表, 表的每一行是对应一个关键词,后面跟着一组数字 ,是指 包含该关键词的文献序号

为了方便排序,索引中还有大量附加信息,比如每个词出现的位置、次数等等,加之网页的数量非常大,所以单台服务器是不可能存储下索引的。怎么解决这个问题呢?

自然是分布式存储。大家不要把分布式看得那么神秘,其实分布式系统对数据的处理只有两个基本招式: 分片,复制 。将索引分成多份(shards)存储到不同的服务器中。

面对大数据的压力,索引也会变得庞大。因此,根据网页的重要性,质量和访问频率来建立常用和不常用等不同级别的索引。常用的索引需要访问速度快,附加信息多,更新也要快,而非常用的索引则没有这么高的要求。

无论搜索引擎的索引在工程上多么复杂,在原理上依然等价于简单的布尔运算。

参考:《数学之美》

扩展: 有那么多的网页和关键词,搜索引擎是怎样建索引的?

相似回答