今天张叔叔给大家科普一下百度一下是如何实现的。百度被称为中国最大的搜索引擎,全球最大的中文搜索引擎,这个的确不是吹嘘。百度每天处理的搜索请求量都是百亿级别,可以用手指数一下“个十百千万...”,你会惊奇的发现,十个手指头都不够百亿单位。
什么是引擎?引擎可以直接理解为发动机,百度搜索引擎顾名思义就是百度为搜索提供的发动机,借此为大家提供孜孜不倦的搜索服务,满足大家每天的搜索请求。搜索引擎到底如何实现的呢,带着问题和好奇心跟张叔叔一起学习吧。
搜索引擎最终提供给大家的是各种各样的搜索结果,那么这些结果从哪来的?简而言之就是通过网络爬虫从网络上爬取的,具体网络爬虫是如何工作的,可以参见叔叔之前的文章《什么是网络爬虫,每天都在忙乎什么》。百度每天都有海量的网络爬虫在计算机网络中忙碌着,它们从各种网站上爬取网页,图片,视频等等信息。这些信息获取到之后,百度可不是简单的就存储到自己的服务器上面,他们要做很多事情来保证我们可以搜索到这些内容。为了讲解方便,叔叔后面就以网页检索为例。
先开动脑筋思考一个问题,如果放在你面前一本书,如何快速的找到这本书中所有的成语“滴水穿石”所在的页码?是不是能想到的唯一方法就是翻遍整本书,一页一页的去查找成语的位置,如果这本书很薄还好,如果像《西游记》原著那么厚,我想找到所有页码大概得需要一整天时间了。如果换个场景,叔叔给你一本词典,让你找到词典中的成语“滴水穿石”,你大概需要多久?是不是不到一分钟就可以找到了。
为什么词典会比一页一页翻书查找得更快?原因很简单,是因为词典前面有一个目录,可根据首字母进行查找,通过首字母可以大大的缩小查找范围,这样便可以快速的找到你要查找的词语了。百度通过网络爬虫获取到海量的网页内容,如果把每一个网页想象成一页纸,那么百度每天就是在一本拥有上亿页的书中帮大家查询内容。为了提高查询的速度,同样需要创建类似于词典中的目录,不过百度搜索引擎中这个东西叫作索引。
索引如何构建的?如果此刻你想到了这个问题,说明你很爱思考。假设今天百度爬虫获取到了两个网页内容A和B,A中讲述的是赵丽颖和冯绍峰结婚了,B中讲述的是赵丽颖的新电影《张叔叔的美好时光》。当百度获取到这两个网页之后,首先提取出网页中的文字内容然后进行分词处理。分词是什么?分词就是把句段篇分割成字词。比如A网页就会被分词成为赵丽颖、冯绍峰、结婚等,B网页被分词成为赵丽颖、张叔叔、美好时光等。此刻我们就得到了一个网页与分词的对应关系,主谓关系是网页包含词语。索引的构建正好是相反的关系,百度会记录赵丽颖这个词语出现在了哪些网页中,很明显赵丽颖出现在了网页A和网页B中,冯绍峰出现在网页A中,张叔叔出现在网页B中。这个地方就好比创建了词典中的目录,当你想查找赵丽颖的时候,可以快速定位到网页A和网页B。索引创建好之后可以支持快速检索了,我们输入的搜索内容百度如何处理的呢?
出于八卦,今天你在百度搜索中填写了“赵丽颖和冯绍峰啥时候结婚的”,你点击“百度一下”按钮之后,你的搜索请求通过计算机网络传递到了百度服务器,百度服务器首先会对你的搜索内容也进行分词处理,最终分词结果为赵丽颖、冯绍峰、时候、结婚。那么通过索引可以快速的获取到赵丽颖所在的网页A和B,冯绍峰获取到了网页A,时候和结婚分别也获取到了各自的网页。对于这四个词所在的网页求交集(交集就是大家都拥有的),最终发现A是最满足条件的结果,百度就把网页A返回给了你,当你点击打开A网页之后就看到了你想看到的信息。
那问题来了,当搜索“赵丽颖”的时候,网页A和网页B都满足条件,返回给搜索者的时候,A和B的顺序如何决定的?
先来思考一个问题,如果网页A重点介绍的是赵丽颖和冯绍峰结婚的消息,还附属介绍了赵丽颖的前任们、代表作等娱乐消息;网页B重点介绍的是赵丽颖的新电影《张叔叔的美好时光》,介绍了电影的导演、演员阵容、内容介绍、上映时间等。如果你现在化身百度的服务器,当用户搜索“赵丽颖”的时候,你更想把哪个网页放到前面让用户看到?
张叔叔掐指一算,你会优先把网页A返回给用户。扪心自问一下,是怎么样的思考过程让你最终选择把A放到前面的?其实是网页内容的重点左右了你的选择,很明显网页A更加偏重介绍赵丽颖这位美女明星,而网页B的介绍重点是电影《张叔叔的美好时光》。如果此处你都抓不住内容重点,说明你们语文老师可能之前是教体育的。同样的,百度在对返回结果进行排序的时候也会考虑哪一个网页与搜索内容“赵丽颖”更相关,百度服务器只会计算,是不会像我们这样思考的,它们是如何计算出来的呢?
给大家介绍一种主流的计算方法:TF-IDF,英文全称term frequency–inverse document frequency,千万不要被这复杂的词汇吓到,有叔叔在,一切且可理解。先把它翻译成中文就是词频-文档频率,词频就是在一个网页中这个词出现的次数,比如网页A中“赵丽颖”出现了10次,在网页B中“赵丽颖”出现了3次,从这个角度来看,是不是网页A更与“赵丽颖”有关了呢。
仅仅依赖词频来判断是不够的,比如有个思维比较另类的同学搜索“的”这个字,因为“的”是一个比较常见的字,那么网页A和网页B中包含“的”的数目就差别不大了,很难判断哪个网页更加偏重“的”。由于“的”的普遍性,也就没有办法展现出哪个网页更符合搜索结果。如果所有网页中都包含“赵丽颖”,网页A和B也就不会那么突出了。那如何体现词语的特殊性呢,于是引入了IDF(文档频率),如果所有文档中都有这个词,那说明大家都有,这个词也就不重要了;如果就几个文档中有这个词,说明这个词在这几篇文档中地位很重要。这个时候再次回忆一下童年,是不是所有小朋友家都有的玩具往往被扔到角落里面,你就独爱那个别人家没有的玩具。
百度就是根据词频-文档频率这个思路,最终算出来网页A比网页B更加满足搜索请求“赵丽颖”(现实中比这个复杂多了喔)。到此为止,是不是对于百度一下背后发生了什么有了一个比较清晰的认识了?
大家经常听到“竞价排名”这个词,这个是什么意思呢?张叔叔先给大家科普一下,据统计表明,绝大多数人只会点击搜索结果的前几个。这个对于商家来说诱惑力很大,如果商家的网站在搜索结果中越是靠前,那么被点击的概率越大,直接导致自己的销量越大。比如有两家卖冰箱的公司A和B,为了让自己的排名比较靠前,A公司就花钱买了百度关键词“冰箱”的排名,当用户搜索“冰箱”的时候,A就会排在B前面,这就造成了很多用户去点击和购买A公司的冰箱。
友情提示:现在百度不是完全按照钱多钱少来确定排名,也会综合考虑其他因素。
如果你或者爸爸妈妈使用了百度APP,你会发现百度每天都会给你推送你喜欢的新闻,那这个是怎么做到的?其实和叔叔之前的文章《当妈妈在淘宝的时候,都发生了什么?》中淘宝通过搜集你妈妈的行为记录来推荐购买其他商品一样,百度也会搜集你平时的搜索和浏览记录,然后就可以分析出你的爱好,之后就能推荐你喜欢的东西了!
百度一下背后的故事有一定的难度喔,希望大家能够仔细思考,下次再百度的时候你就明白这背后的逻辑了!
【张叔叔科普数据】
2018年6月,百度APP日活超过1.5亿,这个只是每天使用百度APP的用户量。不可否认,几乎每天使用电脑的人都或多或少使用百度,这个数量几乎等于中国网民的数量。如果网民每天平均使用三次百度的话,那就会产生百亿级别的搜索请求。
网友评论