最简单易懂的搜索引擎工作原理简介
搜索引擎的工作过程大体上可以分成三个阶段。
(1)爬行和抓取:搜索引擎蜘蛛通过跟踪链接发现和访问网页,读取页面HTML代码,存入数据库。
(2)预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引、倒排索引等处理,以备排名程序调用。
(3)排名:用户输入查询词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。
一、爬行和抓取
1、蜘蛛
蜘蛛访问页面时类似于普通用户使用的浏览器。
蜘蛛访问任何一个网站时,都会先访问网站根目录下的robots.txt文件。
搜索引擎蜘蛛也有标明自己身份的用户代理名称。
2、跟踪链接
最简单的爬行遍历策略分为两种,一种是深度优先,另一种是广度优先。
所谓深度优先,指的是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其他的链接,然后返回到第一个页面,沿着另一个链接再一直往前爬行。
广度优先是指蜘蛛在一个页面上发现多个链接时,不是顺着一个链接一直向前,而是把页面上所有第一层链接都爬一遍,然后再沿着第二层页面上发现的链接爬向第三层页面。
从理论上来说,无论是深度优先还是广度优先,只要给蜘蛛足够的时间,都能爬完整个互联网。在实际工作中,蜘蛛的带宽资源、时间都不是无限的,也不可能爬完所有页面。实际上最大的搜索引擎也只是爬取和收录了互联网的一小部分。
深度优先和广度优先通常是混合使用的,这样既可以照顾到尽量多的网站(广度优先),也能照顾到一部分网站的内页(深度优先),同时也会考虑页面权重、网站规模、外链、更新等因素。
3、吸引蜘蛛
既然蜘蛛不能抓取所有页面,那么蜘蛛所要做的就是尽量抓取重要页面。
①网站和页面权重。质量高、资格老的网站被认为权重比较高,这种网站上的页面被爬行的深度也会比较高,所以会有更多内页被收录。
②页面更新度。蜘蛛多次爬取后会对页面更新频率有所了解,如果页面经常更新,蜘蛛就会更加频繁的访问这种页面。
③导入链接。高质量的链接也经常使页面上的导出链接被爬行深度增加。
④与首页点击距离。一般来说网站上权重最高的是首页。离首页距离越近,页面权重越高。
⑤URL结构。短的、层次浅的URL也可能被直观地认为在网站上的权重相对较高。
4、地址库
为了避免重复爬行和抓取网址,搜索引擎会建立一个地址库,记录已经被发现、但还没有抓取的页面,以及已经被抓取的页面。蜘蛛发现链接后不是马上就去访问,而是统一安排抓取。
5、文件存储
搜索引擎蜘蛛抓取的数据存入原始页面数据库。其中的页面数据与用户浏览器得到的HTML是完全一样的。每个URL都有一个独特的文件编号。
6、爬行时的复制内容检测。
蜘蛛在爬行和抓取文件时也会进行一定程度的复制内容检测。遇到权重很低的网站上大量转载或抄袭内容时,很可能不再继续爬行。这也就是有的站长在日志文件中发现了蜘蛛,但页面从来没有被真正收录过的原因之一。
二、预处理
1、提取文字
搜索引擎预处理首先要做的就是从HTML文件中去除标签,程序,提取出可用于排名处理的文字内容。
除了可见文字,搜索引擎也会提取一些特殊的包含文字信息的代码,如meta标签中的文字、图片替代文字、flash文件中的替代文字、链接瞄文字等。
2、中文分词
分词是中文搜索引擎特有的步骤。搜索引擎存储和处理页面内容及用户查询都是以词为基础的。英文等语言单词与单词之间有空格作为天然分隔,搜索引擎索引程序可以直接把句子划分为单词的集合。而中文词与词之间没有任何分隔符,一个句子中的所有词和词都是连在一起的。搜索引擎必须首先分辨哪几个字组成一个词,哪些词本身就是一个词。比如“减肥方法”将被分词为“减肥”和“方法”两个词。
中文分词方法基本上有两种,一种是基于词典匹配,另一种是基于统计。
基于词典匹配的方法是指,将待分析的一段文字与一个事先造好的词典进行匹配,其准确度在很大程度上取决于词典的完整性和更新情况。
基于统计的分词方法指的是分析大量文字样本,计算出字与字相邻出现的统计概率,几个字相邻出现越多,就越可能形成一个单词。
实际工作中分词系统都是混合使用两种方法的。
搜索引擎对页面的分词取决于词库的规模、准确性和分词算法的好坏,而不是取决于页面本身如何,所以SEO人员对分词所能做的很少。唯一能做的是在页面上用某种形式提示搜索引擎,某几个字应该被当作一个词处理,尤其是可能产生歧义的时候,比如在页面标题、h1标签及黑体中出现关键词。
3、去停止词
无论是英文还是中文,页面内容中都会有一些出现频率很高,却对内容没有任何影响的词,如“的”、“地”、“得”之类的助词,“啊”、“呀”、“哈”之类的感叹词,“从而”、“以”、“却”之类的副词或介词。这些词被称为停止词,因为它们对页面的主要意思没什么影响。英文中常见的停止词有the,a,an,to,of等。
4、消除噪声
绝大部分页面上还有一部分对页面主题也没有什么贡献,比如版权声明文字、导航条、广告等。
消噪的基本方法是根据HTML标签对页面分块,区分出页头、导航、正文、页脚、广告等区域。
5、去重
搜索引擎不喜欢重复性的东西,如果内容相关,搜索引擎希望只返回相同文章中的一篇。
去重的基本方法是对页面特征关键词计算指纹,也就是说从页面主体内容中选取最有代表性的一部分关键词(经常是出现频率最高的关键词),然后计算这些关键词的数字指纹。这里的关键词选取是在分词、去停止词、消噪之后。实验表明,通常选取10个特征关键词就可以到达比较高的计算准确性,再选取更多词对去重准确性提高的贡献也就不大了。
了解了搜索引擎的去重算法,SEO人员就应该知道简单地增加“的”、“地”、“得”、调换段落顺序这种所谓伪原创,并不能逃过搜索引擎的去重算法,因为这样的操作无法改变文章的特征关键词,也就不发改变指纹。而且搜索引擎的去重算法很可能不止于页面级别,而是进行到段落级别,混合不同文章、交叉段落顺序也不能使转载和抄袭变成原创。
6、正向索引
经过以上步骤之后,搜索引擎得到的就是独特的、能反映页面主体内容的,以词为单位的字符串。接下来搜索引擎程序就可以提取关键词,按照分词程序划分好的词,把页面转换为一个关键词组成的集合,同时记录每一个关键词在页面上的出现频率、出现次数、格式、位置等信息。这样每一个页面都可以记录为一串关键词集合,其中每个关键词的词频、格式、位置等权重信息也都记录在案。
搜索引擎索引程序将页面及关键词形成词表结构存储进索引库。
每个文件都对应一个文件ID,文件内容被表示为一串关键词的集合。实际上在搜索引擎索引库中,关键词也已经转换为关键词ID了。这样的数据结构就成为正向索引。
7、倒排索引
正向索引还不能直接用于排名,搜索引擎会将正向索引重新构造为倒排索引,把文件对应到关键词的映射转换为关键词到文件的映射。
在倒排索引中关键词是关键,每个关键词都对应着一系列的文件,这些文件中都出现了这个关键词,这样当用户搜索某个关键词时,排序程序在倒排索引中定位到这个关键词,就可以马上找出所有包含这个关键词的文件。
8、链接关系计算
搜索引擎在抓取页面内容后,必须事前计算出:页面上有哪些链接指向哪些其他页面,每个页面有哪些导入链接,链接使用了什么瞄文字,这些复杂的链接指向关系形成了网站和页面的链接权重。
9、特殊文件处理
除了HTML文件外,搜索引擎通常还能抓取和索引以文字为基础的多种文件类型,如PDF、Word、WPS、XLS、PPT、TXT文件等。
10、质量判断
这里所说的质量判断包含很多因素,并不局限于针对关键词的提取和计算,或者针对链接进行数值计算。比如对页面内容的判断,很可能包含了用户体验、页面排版、广告布局、语法、页面打开速度等,也可能会涉及模式识别、机器学习、人工智能等方法。
三、排名
1、搜索词处理
①中文分词。分词原理与页面分词相同,将查询字符串转换为以词为基础的关键词组合。
②去停止词。和索引时一样,搜索引擎也需要把搜索词中的停止词去掉,最大限度的提高排名相关性及效率。
③指令处理。查询词完成分词后,搜索引擎的默认处理方式是在关键词之间使用“与”逻辑。
另外用户输入的查询词还可能包含一些高级搜索指令,如加号、减号等,搜索引擎都需要做出识别和相应处理。
④拼写错误校正。
⑤整合搜索触发。某些关键词会触发整合搜索,比如明星姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容
⑥搜索框提示。用户在搜索框填写过程中,搜索引擎就根据热门搜索数据给出多组可能的查询词。
2、文件匹配
搜索词经过处理后,搜索引擎得到的是以词为基础的关键词集合。文件匹配阶段就是找出含有搜索关键词的所有文件。在索引部分提到的倒排索引使得文件匹配能够快速完成。
3、初始子集的选择
找到包含所有关键词的匹配文件后,还不能进行相关性计算,因为找到的文件经常会有几十万几百万,甚至上千万,要对这么多的文件实时进行相关性计算,需要的时间还是太长。
实际上,用户并不需要知道所有匹配的几十万、几百万页面,绝大多数用户只会查看前两页,搜索引擎并不需要计算这么多页面的相关性,而只要计算最重要的一部分页面就可以了。
但问题在于,还没有计算相关性时,搜索引擎又怎么知道哪1000个文件是最相关的?所以用于最后相关性计算的初始页面的选择,必须依靠其他特征而不是相关性,其中最主要的就是页面权重
4、相关性计算
相关性计算是搜索引擎算法中最令SEO感兴趣的部分。
影响相关性的主要因素包括如下几方面:
①关键词常用程度。
越常用的词对搜索词的意义贡献越小,越不常用的词对搜索词的意义贡献越大。
所以搜索引擎对搜索词串中的关键词并不是一视同仁地处理,而是根据常用程度进行加权。不常用的词加权系数高,常用词加权系数低,排名算法对不常用的词给与更多关注
②词频及密度。
一般认为在没有关键词堆积的情况下,搜索词在页面中出现的次数越多,密度越高,说明页面与搜索词越相关。当然这只是一个大致直观规律,实际情况要复杂的多,出现频率及密度只是排名因素的很小一部分。
③关键词位置及形式。
就像在索引部分中提到的,页面关键词出现的格式和位置都被记录在索引库中。
④关键词距离。
切分后的关键词完整匹配地出现,说明与搜索词最相关。
⑤链接分析及页面权重。
除了页面本身的因素,页面之间的链接和权重关系也影响关键词的相关性,其中最重要的是瞄文字。页面有越多以搜索词为瞄文字的导入链接,说明页面的相关性越强。
链接分析还包括了链接源页面本身的主题、瞄文字周围的文字等。
5、排名过滤及调整
经过以上步骤,大体排名就已经确定了。之后搜索引擎可能还会有一些过滤算法。对排名进行轻微调整,其中最主要的过滤就是施加惩罚。一些有作弊嫌疑的页面,虽然按照正常的权重和相关性计算排到前面去,但搜索引擎的惩罚算法却可能在最后一步把这些页面调到后面去。
6、排名显示
所有排名确定后,排名程序调用原始页面的标题标签、说明标签、快照日期等数据显示在页面上。有时搜索引擎需要动态生成页面摘要,而不是调用页面本身的说明标签。
7、搜索缓存
用户搜索的查询词有很大一部分是重复的。按照二八定律,20%的搜索词占到了搜索次数的80%。
如果每次搜索都重新处理排名可以说是很大的浪费。搜索引擎会把最常见的搜索词及结果存入缓存。用户搜索时直接从缓存中调用,而不必经过文件匹配和相关性计算,大大的提高了排名效率,缩短了搜索反应时间。
8、查询及点击日志
搜索用户的IP地址、搜索的查询词、搜索时间、以及点击了解哪些结果页面,搜索引擎都会记录形成日志。这些日志文件中的数据对搜索引擎判断搜索结果质量、调整搜索算法、预期搜索趋势等都有重要意义。