搜索引擎工作原理是什么?百度全文搜索引擎工作原理及分类简述

搜索引擎工作过程非常复杂,接下来简单介绍搜索引擎是怎样实现网页排名的。这里介绍的内容相对于真正的搜索引擎技术来说只是皮毛,不过对大部分SEO人员已经够用了。

搜索引擎工作原理是什么?百度全文搜索引擎工作原理及分类简述

搜索引擎工作原理分为哪几步?

搜索引擎的工作过程大体上可以分成三个阶段。

(1)爬行和抓取:搜索引擎蜘蛛通过跟踪链接发现和访问网页,读取页面 HTML代码,存入数据库。

(2)预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引、倒排索引等处理,以备排名程序调用。

(3)排名:用户输入查询词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。

一、爬行和抓取

爬行和抓取是搜索引擎工作的第一步,完成数据收集的任务。

1、蜘蛛

搜索引擎用来爬行和访问页面的程序被称为蜘蛛(spider)或机器人 (bot)。

搜索引擎蜘蛛访问网站页面时类似于普通用户使用的浏览器。蜘蛛程序发出页面访问请求后,服务器返回 HITML 代码,蜘蛛程序把收到的代码存入原始页面数据库。搜索引擎为了提高爬行和抓取速度,都使用多个蜘蛛并发分布爬行。

蜘蛛访问任何一个网站时,都会先访问网站根目录下的robots.txt文件。如果 robots.txt文件禁止搜索引擎抓取某些文件或目录,蜘蛛将遵守协议,不抓取被禁止的网址。

搜索引擎工作原理是什么?百度全文搜索引擎工作原理及分类简述

和浏览器一样,搜索引擎蜘蛛也有标明自己身份的用户代理名称,站长可以在日志文件和浏览器一样,搜索引擎蜘蛛也有标明自己身份的用户代理名称,站长可以在日志文件中看到搜索引擎的特定用户代理,从而辨识搜索引擎蜘蛛。下面列出常见的搜索引擎蜘蛛名称:

Baiduspidert(thttp://www.baidu.com/search/spider.htm)百度蜘蛛

Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; ) Firefox/1.5.0.11; 360Spider(360 蜘蛛)

Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/
slurp) 英文雅虎蜘蛛(雅虎己经放弃自己的搜索技术,列在这里权当历史纪念吧)。

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Google
蜘蛛。

Mozilla/5.0 (iPhone; CPU iPhone OS 6 0 like Mac OS X) AppleWebKit/536.26
(KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible;
Googlebot/2.1; thttp://www.google.com/bot.html) (Google 移动蜘蛛)。

……

2、跟踪链接

为了抓取网上尽量多的页面,搜索引擎蜘蛛会跟踪页面上的链接,从一个页面爬到下一个页面,就好像蜘蛛在蜘蛛网上爬行那样,这也就是搜索引擎蜘蛛这个名称的由来。

整个互联网是由相互链接的网站及页面组成的。从理论上说,蜘蛛从任何一个页面出发,顺着链接都可以爬行到网上的所有页面。当然,由于网站及页面链接结构异常复杂,蜘蛛需要采取一定的爬行策略才能遍历网上所有页面。

最简单的爬行遍历策略分为两种,一种是深度优先,另一种是广度优先。

所谓深度优先,指的是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其地链接,然后返回到第一个页面,沿着另一个链接再一直往前爬行。

广度优先是指蜘蛛在一个页面上发现多个链接时,不是顺着一个链接一直向前、而是把页面上所有第一层链接都爬一遍,然后再沿者第二层页面上发现的链接爬向第三层页面。

从理论上说,无论是深度优先还是广度优先,只要给蜘蛛足够的时间,都能爬完整个互联网。在实际工作中,蜘蛛的带宽资源、时间都不是无限的,也不可能爬完所有页面。实际上最大的搜素列警也只是爬行和收录了互联网的一小部分。

深度优先和广度优先通常是混合使用的,这样既可以照顾到尽量乡的网站(广度优先),也能照顾到一部分网站的内页(深度优先),同时也会考志页面权重,网站规模、外链、更新等因素。

3、吸引蜘蛛

由此可见,虽然理论上蜘蛛能爬行和抓取所有页面,但实际上不能、也不会这么做。SEO 人员要想让自己的更多页面被收录,就要想方设法吸引蜘蛛来抓取。既然不能抓取所有页面,蜘蛛所要做的就是尽量抓取重要页面,哪些页面被认为比较重要呢?有几方面影响因素。

网站和页面权重。质量高、资格老的网站被认为权重比较高,这种网站上的页面被爬行的深度也会比较高,所以会有更多内页被收录。

页面更新度。蜘蛛每次爬行都会把页面数据存储起来。如果第二次爬行发现页面与第一次收录的完全一样,说明页面没有更新,多次抓取后蜘蛛会对页面更新频率有所了解,不常更新的页面,蜘蛛也就没有必要经常抓取。如果页面内容经常更新,蜘蛛就会更加频繁地访问这种页面,页面上出现的新链接,也自然会被蜘蛛更快地跟踪,抓取新页面。

导入链接。无论是外部链接还是同一个网站的内部链接,要被蜘蛛抓取,就必须有导入链接进入页面,否则蜘蛛根本没有机会知道页面的存在。高质量的导入链接也经常使页面上的导出链接被爬行深度增加。

与首页点击距离。一般来说网站上权重最高的是首页,大部分外部链接是指向首页的,蜘蛛访问最频繁的也是首页。离首页点击距离越近,页面权重越高,被蜘蛛爬行的机会也越大。

URL 结构。页面权重是在收录并进行迭代计算后才知道的,那么前面说的页面权重高有利于被抓取,搜索引擎蜘蛛在抓取前怎么知道这个页面的权重呢?所以蜘蛛要进行预判,除了链接、与首页距离、历史数据等因素外,短的、层次浅的 URL 也可能被直观认为在网站上的权重相对较高。

4、地址库

为了避免重复爬行和抓取网址,搜索引擎会建立一个地址库,记录己经被发现、但还没有抓取的页面,以及已经被抓取的页面。蜘蛛在页面上发现链接后并不是马上就去访问,而是将 URL 存入地址库,然后统一安排抓取。

地址库中的 URL 有几个来源:

(1)人工录入的种子网站。

(2)蜘蛛抓取页面后,从 HTML 中解析出新的链接 URL,与地址库中的数据进行对比,如果是地址库中没有的网址,就存入待访问地址库。

(3)站长通过搜索引擎网页提交表格提交进来的网址。

(4)站长通过 XML 网站地图、站长平合提交的网址。

蜘蛛按重要性从待访问地址库中提取 URI,访问并抓取页面,然后把这个 URL 从待访问地址库中删除,放进己访问地址库中。

大部分主流搜索引擎都提供一个表格,让站长提交网址。不过这些提交来的网址都只是存入地址库而己,是否收录还要看页面重要性如何。搜索引擎所收录的绝大部分页面是蜘蛛自己跟踪链接得到的。可以说提交页面作用微乎其微,搜索引擎更喜欢自己沿着链接发现新页面。

5、文件存储

搜索引擎蜘蛛抓取的数据存入原始页面数据库。其中的页面数据与用户浏览器得到的 HTML 是完全一样的。每个URL 都有一个独特的文件编号。

6、爬行时的复制内容检测

检测并删除复制内容通常是在下面介绍的预处理过程中进行的,但现在的蜘蛛在爬行和抓取文件时也会进行一定程度的复制内容检测。遇到权重很低的网站上大量转载或抄袭内容时,很可能不再继续爬行。这也就是有的站长在日志文件中发现了蜘蛛,但页面从来没有被真正收录过的原因之一。

二、预处理

在一些 SEO材料中,“预处理”也被简称为 “索引”,因为索引是预处理最主要的内容。

搜索引擎工作原理是什么?百度全文搜索引擎工作原理及分类简述

搜索引擎蜘蛛抓取的原始页面,并不能直接用于查询排名处理。搜索引擎数据库中的页面数都在数万亿级别以上,用户输入搜索词后,靠排名程序实时对这么多页面分析相关性,计算量太大,不可能在一两秒内返回排名结果。因此抓取来的页面必须经过预处理,为最后的查询排名做好准备。

和爬行抓取一样,预处理也是在后台提前完成的,用户搜索时感觉不到这个过程。

1、提取文字

现在的搜索引擎还是以文字内容为基础。蜘蛛抓取到的页面 HTML 代码,除了用户在浏览器上可以看到的可见文字外,还包含了大量的 HTML 格式标签、JavaScript 程序等无法用于排名的内容。搜索引擎预处理首先要做的就是从 HTML 文件中去除标签、程序,提取出可以用于排名处理的页面文字内容。

除了可见文字,搜索引擎也会提取出一些特殊的包含文字信息的代码,如 Meta 标签中的文字、图片替代文字、Flash 文件的替代文字、链接锚文字等。

2、中文分词

分词是中文搜索引擎特有的步骤。搜索引擎存储和处理页面内容及用户查询都是以词为基础的。英文等语言单词与单词之间有空格作为天然分隔,搜索引擎索引程序可以直按把句子划分为单词的集合。而中文词与词之间没有任何分隔符,一个句子中的所有宇和词都是连在一起的。搜索引擎必须首先分辦哪几个字组成一个词,哪些字本身就是一个词。比如“减肥方法”将被分词为“减肥”和“方法”两个词。

中文分词方法基本上有两种,一种是基于词典匹配,另一种是基于统计。

3、去停止词

无论是英文还是中文,页面内容中都会有一些出现频率很高,却对内容没有任何影响的词,如“的”“地”、“得”之类的助词,“啊”、“哈”“呀”之类的感叹词,“从而”“以”“却”之类的副词或介词。这些词被称为停止词,因为它们对页面的主要意思没什么影响。

搜索引擎在索引页面之前会去掉这些停止词,使索引数据主题更为突出,减少无谓的计算量。

4、消除噪声

绝大部分页面上还有一部分内容对页面主题也没有什么贡献,比如版权声明文字、导航条、广告等。以常见的博客导航为例,几乎每个博客页面上都会出现文章分类、历史存档等导航内容,但是这些页面本身与“分类”“历史”这些词都没有任何关系。用户搜索“历史”“分类”这些关键词时仅仅因为页面上有这些词出现而返回博客帖子是亳无意义的,完全不相关。所以这些区块都属于噪声,对页面主题只能起到分散作用。

搜索引擎需要识别并消除这些噪声,排名时不使用噪声内容。消噪的基本方法是根据HTML 标签对页面分块,区分出页头、导航、正文、页脚、广告等区域,在网站上大量重复出现的区块往往属于噪声。对页面进行消噪后,剩下的才是页面主体内容。

5、去重

搜索引擎还需要对页面进行去重处理。

同一篇文章经常会重复出现在不同网站及同一个网站的不同网址上,搜索引擎并不喜欢这种重复性的内容。用户搜索时,如果在前两页看到的都是来自不同网站的同一篇文章,用户体验就太差了,虽然都是内容相关的。搜索引擎希望只返回相同文章中的一篇,所以在进行索引前还需要识别和删除重复内容,这个过程就称为 “去重”。

6、正向索引

正向索引也可以简称为索引。

经过文字提取、分词、消噪、去重后,搜索引攀得到的就是独特的、能反映页面主体内容的、以词为单位的字符串。接下来搜索引擎索引程序就可以提取关键词,按照分词程序划分好的词,把页面转换为一个关键词组成的集合,同时记录每一个关键词在页面上的出现频率、出现次数、格式(如出现在标题标签、黑体、H标签、锚文字等)、位置等信息。这样,每一个页面都可以记录为一串关键词集合,其中每个关键词的词频、格式、位置等权重信息也都记录在案。

7、倒排索引

正向索引还不能直接用于排名。假设用户搜索关键词 2,如果只存在正向索引,排名程序需要扫描所有索引库中的文件,我出包含关键词 2的文件,再进行相关性计算。这样的计算量无法满足实时返回排名结果的要求。

所以搜索引擎会将正向索引数据库重新构造为倒排索引。

8、链接关系计算

链接关系计算也是预处理中很重要的一部分。现在所有的主流搜素引擎排名因素中都包含网页之间的链接流动信息。搜索引擎在抓取页面内容后,必须事前计算出:页面上有哪些链接指向哪些其他页面,每个页面有哪些导入链接,链接使用了什么锚文字,这些复杂的链接指向关系形成了网站和页面的链接权重。

Google PR 值就是这种链接关系的最主要体现之一。其他搜索引擎也都进行类似计算,虽然它们并不称之为 PR。

9、特殊文件处理

除了 HTML 文件外,搜索引擎通常还能抓取和索引以文字为基础的多种文件类型,如 PDF、Word、WPS、XIS、PPI、TXT 文件等。我们在搜索结果中也经常会看到这些文件类型。但目前的搜索引擎还不能处理图片和视频,对 Flash 这类非文字内容,以及脚本和程序只能进行有限的处理。

虽然搜索引擎在识别图片及从 Flash 中提取文字内容方面有些进步,不过距离直接靠读取图片、视频、Flash 内容返回结果的目标还很远。对图片、视频内容的排名还往往是依据与之相关的文字内容。

10、质量判断

在预处理阶段,搜索引擎会对页面内容质量、链接质量等作出判断。百度绿萝、石榴算法,Google 的熊猫、企鹅算法等都是预先计算,然后上线,而不是查询时实时计算的。

这里所说的质量判断包含很多因素,并不局限于针对关键词的提取和计算,或者针对链接进行数值计算。比如对页面内容的判断,很可能包括了用户体验、页面排版、广告布局、语法、页面打开速度等,也可能会涉及模式识别、机器学习、人工智能等方法。

三、排名

经过搜索引擎蜘蛛抓取页面,索引程序计算得到倒排索引后,搜索引擎就准备好可以随时处理用户搜索了。用户在搜索框填入查询词后,排名程序调用索引库数据,计算排名显示给用户,排名过程是与用户直接互动的。

搜索引擎工作原理是什么?百度全文搜索引擎工作原理及分类简述

1、搜索词处理

搜索引擎接收到用户输入的搜索词后,需要对搜索词做一些处理,才能进入排名过程。搜索词处理包括如下几方面。

(1)中文分词。与页面索引时一样,搜索词也必须进行中文分词,将查询字符串转换为以词为基础的关键词组合。分词原理与页面分词相同。

(2)去停止词。和索引时一样,搜索引攀也需要把搜索词中的停止词去掉,最大限度地提高排名相关性及效率。

(3)指令处理。查询词完成分词后,搜索引攣的默认处理方式是在关键词之间使用“与”逻辑。也就是说用户搜索“减肥方法”时,程序分词为 “减肥”和“方法”两个词,搜索引擎排序时默认认为,用户寻找的是既包含 “减肥”,也包含“方法” 的页面。只包含 “减肥”不包含“方法”,或者只包含“方法” 不包含“减肥” 的页面,被认为是不符合搜索条件的。当然,这只是极为简化的为了说明原理的说法,实际上我们还是会看到只包含一部分关键词的搜索结果。

另外用户输入的查询词还可能包含一些高级搜索指令,如加号、减号等,搜索引擎都需要做出识别和相应处理。

(4)拼写错误矫正。用户如果输入了明显错误的字或英文单词拼错,搜索引擎会提示用户正确的用字或拼法。

(5)整合搜索触发。某些搜索词会触发整合搜索,比如明星姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容。哪些词触发哪些整合搜索,也需要在搜索词处理阶段计算。

(6)搜索框提示。用户在搜索框填写过程中,搜索引擎就根据热门搜索数据给出多组可能的查询词,减少用户输入时间。

2、文件匹配

搜索词经过处理后,搜索引擎得到的是以词为基础的关键词集合。文件匹配阶段就是找出含有所有搜索关键词的所有文件。在索引部分提到的倒排索引使得文件匹配能够快速完成。

3、初始子集的选择

找到包含所有关键词的匹配文件后,还不能进行相关性计算,因为找到的文件经常会有几十万几百万,甚至上千万个。要对这么多文件实时进行相关性计算,需要的时间还是太长。

实际上用户并不需要知道所有匹配的几十万、几百万个页面,绝大部分用户只会查看前两页,也就是前20 个结果。搜索引擎也并不需要计算这么多页面的相关性,而只要计算最重要的一部分页面就可以了。常用搜索引擎的人都会注意到,搜索结果页面通常最多显示 100个。用户点击搜索结果页面底部的“下一页”链接,最多也只能看到第100页,也就是 1000 个搜索结果,如图 2-32 所示 Google 的结果页面总数。雅虎、搜狗也是最多显示 100页。

4、相关性计算

选出初始子集后,对子集中的页面计算关键词相关性。计算相关性是排名过程中最重要的一步。相关性计算是搜索引擎算法中最令SEO感兴趣的部分。

影响相关性的主要因素包括如下几方面。

(1)关键词常用程度。经过分词后的多个关键词,对整个搜索字符串的意义贡献并不相同。越常用的词对搜索词的意义贡献越小,越不常用的词对搜索词的意义贡献越大。

(2)词频及密度。一般认为在没有关键词堆积的情况下,搜索词在页面中出现的次数越多,密度越高,说明页面与搜索词越相关。当然这只是一个大致直观规律,实际情况要复杂得多,出现频率及密度只是排名因素的很小一部分。

(3)关键词位置及形式。就像在索引部分中提到的,页面关键词出现的格式和位置都被记录在索引库中。关键词出现在比较重要的位置,如标题标签、黑体、H1等,说明页面与关键词越相关。这一部分就是页面 SEO 所要解决的。

(4)关键词距离。切分后的关键词完整匹配地出现,说明与搜索词最相关。比如搜索“减肥方法,时,页面上连续完整出现“减肥方法”四个字是最相关的。如果“减肥”和“方法”两个词没有连续匹配出现,出现的距离近一些,也被搜索引擎认为相关性稍微大一些。

(5)链接分析及页面权重。除了页面本身的因素,页面之间的链接和权重关系也影响关键词的相关性,其中最重要的是锚文字。页面有越多以搜索词为铺文宇的导入链接,说明页面的相关性越强。

链接分析还包括了链接源页面本身的主题、锚文字周围的文字等。

5、排名过滤及调整

选出匹配文件子集、计算相关性后,大体排名就己经确定了。之后搜索引擎可能还有一些过滤算法,对排名进行轻微调整,其中最主要的过滤就是施加惩罚。一些有作弊嫌疑的页面,虽然按照正常的权重和相关性计算排到前面,但搜索引擎的惩罚算法却可能在最后一步把这些页面调到后面去。

6、排名显示

所有排名确定后,排名程序调用原始页面的标题标签、说明标签、快照日期等数据显示在页面上。有时搜索引擎需要动态生成页面摘要,而不是调用页面本身的说明标签。

7、搜索缓存

用户搜索的查询词有很大一部分是重复的。按照2/8 定律,20%的搜索词占到了总搜索次数的 80%。按照长尾理论,最常见的搜索词没有占到 80%那么多,但通常也有一个比较粗大的头部,很少一部分搜索词占到了所有搜索次数的很大一部分。尤其是有热门新闻发生时,每天可能有几百万人搜索完全相同的词。

如果每次搜索都重新处理排名可以说是很大的浪费。搜索引擎会把最常见的搜索词及结果存入缓存,用户搜索时直接从缓存中调用,而不必经过文件匹配和相关性计算,大大提高了排名效率,缩短了搜索反应时间。

8、查询及点击日志

搜索用户的ip地址、搜索的查询词、搜索时间,以及点击了哪些结果页面,搜索引擎都记录形成日志。这些日志文件中的数据对搜索引擎判断搜索结果质量、调整搜索算法、预期搜索趋势等都有重要意义。

上面我们简单介绍了搜索引擎的工作过程。当然实际搜索引擎的工作步骤与算法是非常复杂的。上面的说明很简单,但其中有很多技术难点。

搜索引擎还在不断优化算法,优化数据库格式。不同搜索引擎的工作步骤也会有差异。但大致上所有主流搜索引擎的基本工作原理都是如此,在过去几年及可以预期的未来几年,都不会有实质性的改变。

版权声明:本文由迟博勋博主编辑发布,如需转载请注明来源!本文地址:https://www.chiboxun.com/934.html

(0)

猜你想看

发表回复

登录后才能评论

联系博主

139-xxxx-2322

在线沟通: QQ交谈

邮箱:chinachiboxun@gmail.com