今天张叔叔给大家科普一下百度一下是如何实现的。百度被称为中国最大的搜索引擎,全球最大的中文搜索引擎,这个的确不是吹嘘。百度每天处理的搜索请求量都是百亿级别,可以用手指数一下“个十百千万...”,你会惊奇的发现,十个手指头都不够百亿单位。
什么是引擎?引擎可以直接理解为发动机,百度搜索引擎顾名思义就是百度为搜索提供的发动机,借此为大家提供孜孜不倦的搜索服务,满足大家每天的搜索请求。搜索引擎到底如何实现的呢,带着问题和好奇心跟张叔叔一起学习吧。
搜索引擎最终提供给大家的是各种各样的搜索结果,那么这些结果从哪来的?简而言之就是通过网络爬虫从网络上爬取的,具体网络爬虫是如何工作的,可以参见叔叔之前的文章《什么是网络爬虫,每天都在忙乎什么》。百度每天都有海量的网络爬虫在计算机网络中忙碌着,它们从各种网站上爬取网页,图片,视频等等信息。这些信息获取到之后,百度可不是简单的就存储到自己的服务器上面,他们要做很多事情来保证我们可以搜索到这些内容。为了讲解方便,叔叔后面就以网页检索为例。
先开动脑筋思考一个问题,如果放在你面前一本书,如何快速的找到这本书中所有的成语“滴水穿石”所在的页码?是不是能想到的唯一方法就是翻遍整本书,一页一页的去查找成语的位置,如果这本书很薄还好,如果像《西游记》原著那么厚,我想找到所有页码大概得需要一整天时间了。如果换个场景,叔叔给你一本词典,让你找到词典中的成语“滴水穿石”,你大概需要多久?是不是不到一分钟就可以找到了。
为什么词典会比一页一页翻书查找得更快?原因很简单,是因为词典前面有一个目录,可根据首字母进行查找,通过首字母可以大大的缩小查找范围,这样便可以快速的找到你要查找的词语了。百度通过网络爬虫获取到海量的网页内容,如果把每一个网页想象成一页纸,那么百度每天就是在一本拥有上亿页的书中帮大家查询内容。为了提高查询的速度,同样需要创建类似于词典中的目录,不过百度搜索引擎中这个东西叫作索引。
索引如何构建的?如果此刻你想到了这个问题,说明你很爱思考。假设今天百度爬虫获取到了两个网页内容A和B,A中讲述的是赵丽颖和冯绍峰结婚了,B中讲述的是赵丽颖的新电影《张叔叔的美好时光》。当百度获取到这两个网页之后,首先提取出网页中的文字内容然后进行分词处理。分词是什么?分词就是把句段篇分割成字词。比如A网页就会被分词成为赵丽颖、冯绍峰、结婚等,B网页被分词成为赵丽颖、张叔叔、美好时光等。此刻我们就得到了一个网页与分词的对应关系,主谓关系是网页包含词语。索引的构建正好是相反的关系,百度会记录赵丽颖这个词语出现在了哪些网页中,很明显赵丽颖出现在了网页A和网页B中,冯绍峰出现在网页A中,张叔叔出现在网页B中。这个地方就好比创建了词典中的目录,当你想查找赵丽颖的时候,可以快速定位到网页A和网页B。索引创建好之后可以支持快速检索了,我们输入的搜索内容百度如何处理的呢?
出于八卦,今天你在百度搜索中填写了“赵丽颖和冯绍峰啥时候结婚的”,你点击“百度一下”按钮之后,你的搜索请求通过计算机网络传递到了百度服务器,百度服务器首先会对你的搜索内容也进行分词处理,最终分词结果为赵丽颖、冯绍峰、时候、结婚。那么通过索引可以快速的获取到赵丽颖所在的网页A和B,冯绍峰获取到了网页A,时候和结婚分别也获取到了各自的网页。对于这四个词所在的网页求交集(交集就是大家都拥有的),最终发现A是最满足条件的结果,百度就把网页A返回给了你,当你点击打开A网页之后就看到了你想看到的信息。
那么如果只输入赵丽颖进行搜索,岂不是要返回网页A和网页B,那么返回顺序如何决定呢?百度搜索结果中的广告是如何返回的?是不是还要很多疑问,哈哈,且听下文分解。
欢迎转载,为社会主义建设添砖加瓦!
网友评论