搜索引擎的工作原理非常复杂,大致可以分为三个阶段:爬行与抓取、预处理、排名,如图 1-4 所示,具体介绍如下。
图 1-4 搜索引擎的工作原理
1. 爬行与抓取
爬行与抓取是搜索引擎第一步工作,也就是在互联网上发现、搜集网页信息,同时对信息进行提取和建立索引库。「爬行和抓取」的具体内容包括以下几点。
(1)搜索引擎蜘蛛
搜索引擎用来爬行和访问页面的程序被称为「蜘蛛」(spider)或网络机器人,这是一种按照一定规则自动抓取互联网信息的程序或者脚本。
蜘蛛的作用就是在互联中浏览信息,然后把这些信息都抓取到搜索引擎的服务器上,然后建立索引库。我们可以把蜘蛛比作一个用户,然后这个用户访问某一个网站后,把该网站的内容保存到自己的计算机上。
搜索引擎蜘蛛与浏览器一样,也有表明自己身份的代理名称,站长可以在网站日志文件中看到搜索引擎的特定代理名称,从而知道哪些搜索引擎蜘蛛何时爬行和抓取了自己网站页面。常见的搜索引擎蜘蛛有:百度蜘蛛、雅虎中国蜘蛛、雅虎英文蜘蛛、Google 蜘蛛、微软 Bing 蜘蛛、搜狗蜘蛛、搜搜蜘蛛、有道蜘蛛。
(2)跟踪链接
为了抓取更多的页面,搜索引擎蜘蛛会跟踪页面上的链接,从一个页面爬行到下一个页面,就像蜘蛛在蜘蛛网上爬行一样。整个互联网是由相互连接的网站及页面组成,从理论上讲,蜘蛛从任何一个页面出发,都可以顺着链接爬行到互联网上的其他页面。
由于网站及页面链接结构异常复杂,蜘蛛需要采取一定的爬行策略才能爬完网上所有的页面。搜索引擎蜘蛛的爬行策略分为两种,一种是深度优先搜索,另外一种是广度优先搜索。
① 深度优先搜索
深度优先搜索指的是蜘蛛沿着发现的链接一直向前爬行,直到再也没有其他链接,然后返回到第一个页面,再沿着另一个链接一直向前爬行。
图 1-5 所示为一个无向图,如果蜘蛛从 A 点开始爬行(访问次序井不是唯一的,第二个点既可以是 C 点也可以是 B、D 点),则得到如下一个访问过程:A→B→E,这时没有下一条路了,就会回溯到 A 点,然后继续下一访问过程:A→C→F→H→G→D(没有路,最终回到 A),回到 A 点后,A 点没有未访问过的相邻结点,本次搜索结束。
② 广度优先搜索
广度优先搜索是指蜘蛛在一个页面上发现多个链接时,不是顺着一个链接一直向前,而是把页面上所有的第一层页面都爬一遍,然后再沿着第二层页面上发现的链接爬向第三层链接。如图 1-6 所示,蜘蛛从 A 页面顺着链接爬行到 B、C、D 页面,直到 A 页面上的所有链接都爬行完了,再从 B 页面的链接爬行到 E、F 页面中。
在深度优先搜索算法中,深度越大的结点越先得到扩展。如果在搜索中把算法改为按结点的层次进行搜索,本层的结点没有搜索处理完时,不能对下层结点进行处理,即深度越小的结点越先得到扩展,也就是说先产生的结点先得以扩展处理,这种搜索算法称为广度优先搜索法。
从理论上讲,无论是深度优先还是广度优先,只要给蜘蛛足够的时间,都能爬行完整个网络。但在实际工作中,蜘蛛的宽带资源和时间都是有限的,所以不可能爬完所有的页面。深度优先和广度优先通常是混合使用的,因为这样既可以照顾到更多的网站(广度优先),也能照顾到一部分网站的页面(深度优先),同时还考虑了页面权重、网站规模和外部链接等因素。
(3)吸引蜘蛛
虽然理论上蜘蛛会抓取所有的网页,但实际上会因为多种因素影响而不能抓取所有的网页。因此,SEO 人员想要自己网站有更多的页面被收录,就要想办法吸引蜘蛛爬行,那么哪些因素可以吸引蜘蛛爬行呢?
· 网站和页面权重。一般来说,质量高、时间久的网站,权重都比较高,搜索引擎蜘蛛爬行的次数也比较频繁。这种网站上页面被爬行的深度比较高,收录的网页也非常多。
· 页面的更新频率。蜘蛛每次爬行都会把页面数据存储起来,如果第二次爬行时发现页面与第一次收录的内容完全相同,说明页面没有更新,蜘蛛也就不会经常抓取了。页面内容经常更新,蜘蛛会更加频繁地访问页面,页面出现新的链接,自然会被蜘蛛更快地跟踪、抓取。
· 网站的原创内容。原创内容对于百度蜘蛛的吸引力非常大,也是搜索引擎蜘蛛每天都需要的。对于原创文章的撰写,站长需要有敏锐的观察力和文字功底,原创内容要有吸引力,不能老生常谈,或者观点模糊,否则就会失去对蜘蛛的吸引力。
· 网站地图。网站地图就像是一个指向标,只有清晰明了的指向标,才能指引蜘蛛抓取的路线。如果网站地图清晰明了,就非常容易吸引蜘蛛爬行。相反,如果网站内部链接很乱,蜘蛛经常迷路,那么蜘蛛就很少会爬行,不利于抓取网站页面。
(4)地址库
为了避免蜘蛛重复爬行和抓取网址,搜索引擎会建立一个地址库,记录下己经被发现但还没有被抓取的页面,以及己经被抓取的页面。地址库中 URL 主要来源于以下 4 个方面:
· 人工录入的种子网站。
· 蜘蛛抓取页面后,从 HTML 中解析出新的链接 URL,与地址库中的数据进行对比,如果地址库中没有的该网址,就存入待访问地址库。
· 站长通过搜索引擎页面提交表格提交进去的网址。
· 站长通过 XML 网站地图、站长平台提交的网址。
蜘蛛按重要性从待访问地址库中提取 URL,访问井抓取页面,然后把这个 URL 从待访问地址库中删除,放进己访问地址库中。
一般来说,搜索引擎都会提供一个表格,供站长提交网址。不过这些提交来的网址都只是存入地址库而己,是否收录还要看页面的重要性。搜索引擎所收录的绝大部分页面是蜘蛛自己跟踪链接得到的。可以说提交页面基本上是毫无用处的,搜索引擎更喜欢自己沿着链接发现新页面。
(5)文件储存
文件储存是指搜索引擎蜘蛛抓取的数据被存入原始页面数据库。其中的页面数据与用户浏览器得到的 HTML 是完全相同的。每个 URL 都有一个独特的文件编号。
(6)爬行时检测内容
众所周知,在搜索引擎索引环节中会进行去重处理,其实在蜘蛛爬行的时候己经在进行检测,当蜘蛛爬行和抓取文件时会进行一定程度的复制内容检测,遇到权重低的网站上大量转载或抄袭内容时,很可能不再继续爬行。
所以对于新站来说,切莫采集和抄袭其他网站内容,这也是为什么很多站长查看日志的时候发现了蜘蛛,但是页面却没有被抓取的原因,因为蜘蛛在爬行时发现是重复内容就放弃抓取,所以蜘蛛就只停留在爬行过的阶段。
2. 预处理
蜘蛛对网站进行了爬行和抓取之后,还需要对页面进行预处理,也被称为「索引」。因为搜索引擎数据库中拥有数以亿计的网页,用户输入搜索后,搜索引擎的计算量太大,很难在极短的时间内返回搜索结果,因此必须对页面进行预处理,为最后的查询排名做准备。预处理主要包括如下几个步骤。
(1)提取文字
现阶段的搜索引擎主要以文字内容为基础。蜘蛛抓取到的页面中的 HTML 代码,除了用户在浏览器上可以看到的可见文字外,还包含了大量的 HTML 格式标签、Javascript 程序等无法用于排名的内容。搜索引擎预处理首先要做的就是从 HTML 文件中去除标签和程序,提取出用于排名处理的网页面文字内容。
(2)中文分词
中文分词是中文搜索引擎特有的一步工作内容,中文的词与词之间没有任何分隔符,一个句子里面所有字和词都是连在一起的。因此,搜索引擎首先要分辨哪几个字是组成一个词的,哪些字本身就是一个词。中文分词有两种方法,一种是基于词典匹配分词法,另一种是基于统计分词法。
· 基于词典匹配分词,是指将待分析的一段汉字与一个事先造好的词典中的词进行匹配,在待分析汉字串中扫描到词典中己有的词条,则说明匹配成功,或者可以说切分出一个单词。
· 基于统计分词,是指对大量的文字样本进行分析,计算出字与字相邻出现的概率,字与字之间相邻出现的次数越多,就越可能形成一个单词。基于统计分词方法的优势是对新出现的词反应更快速,也有利于消除歧义。
在实际使用中,会综合使用两种分词方法。搜索引擎对页面的分词取决于词库的规模、准确性和分词算法的好坏,而不是取决于页面本身,所以从分词角度来说,SEO 人员对于网站能做的很少。唯一能做的是在页面上用某种形式提示搜索引擎,某几个字应该被作为一个词处理,尤其在可能产生歧义的时候,比如在页面标题、h1 标签及黑体中出现关键词。如果某页面是关于「舞蹈培训」的内容,那么可以把「舞蹈培训」这几个字标为黑体这样搜索引擎对页面进行分析时就会知道标为黑体的是一个词。
(3)去停止词
停止词是一些在页面内容中出现频率很高,但是对内容没有任何影响的词,如「的」「地」「得」之类的助词,还有「啊」「哈」「呀」之类的感叹词,「从而」「以」「却」之类的副词或者介词。除中文外还有一些英文的常见停止词,如 the、a、an、to、of 等。
因为它们对页面的主要意思没什么影响,故搜索引擎在索引页面之前会去掉这些停止词,使索引数据主题更为突出,减少无谓的计算量。
(4)消除噪声
噪声井不是指网页中的嘈杂的声音,而是指页面上对页面主题没有贡献的内容,比如版权声明文字、导航条、广告等,这些内容对页面主题只能起到分散作用。因此搜索引擎需要识别井消除这些噪声,排名时不使用噪声内容。消噪的基本方法是根据 HTML 标签对页面分块,区分出页头、导航、正文、页脚、广告等区域,在网站上大量重复出现的区块柱柱属于噪声。对页面进行消噪后,剩下的才是页面主体内容。
(5)去重
同一篇文章经常会重复出现在不同网站及同一个网站的不同网址上,搜索引擎井不喜欢这种重复性的内容。用户搜索这些信息时,如果在前几页看到的都是来自不同网站的同一篇文章,会影响用户体验。虽然这些网页内容具有相关性,但是搜索引擎更希望返回结果中只有一篇相同的文章,所以在进行索引前还需要识别和删除重复内容,这个过程可以称为「去重」。
了解了搜索引擎的去重算法,SEO 人员就应该知道只是在文章中简单地添加「的」「地」「得」或者调换段落顺序这种「伪原创」方法,井不能逃过搜索引擎的去重算法。因为这样的操作井没有改变文章内容中特征关键词,而且搜索引擎的去重算法很可能不止于页面级别,而是进行到段落级别,即便是混合不同文章、交叉调换段落顺序也不能使转载和抄袭变成原创。
(6)正向索引
经过提取文字、分词、消除噪声、去重后,搜索引擎得到的才是独特的、能反映页面主体内容的、以词为单位的内容。完成上述工作后,搜索引擎索引程序就可以提取关键词,按照分词程序划分关键词,将页面转换为一个关键词组成的集合,同时记录每一个关键词在页面上的出现频率、出现次数、格式(如出现在标题标签、黑体、H 标签、锚文本等)、位置(如页面第一段文字等)。这样,每一个页面都可以记录为一串关键词集合,其中每个关键词的词频、格式、位置等权重信息也都记录在案。
(7)倒排索引
正向索引还不能直接用于排名。假设用户搜索关键词 2,如果只存在正向索引,排名程序需要扫描所有索引库中的文件,找出包含关键词 2 的文件,再进行相关性计算。这样的计算量无法满足实时返回排名结果的要求。因此需要搜索引擎将正向索引数据库重新构造成倒排索引,把文件对应到关键词的映射转换为关键词到文件的映射。
(8)链接关系计算
目前主流的搜索引擎排名因素中都包含网页之间的链接流动信息。搜索引擎在抓取页面内容后,必须事前计算出页面上有哪些链接指向哪些页面,每个页面有哪些导入链接,链接使用了什么锚文本,这些复杂的链接指向关系形成了网站和页面的链接权重。
由于页面和链接数量巨大,网上的链接关系又时时处在更新中,因此链接关系及(权重)PR 的计算要耗费很长时间。
(9)特殊文件处理
除了 HTML 文件外,搜索引擎通常还能抓取和索引以文字为基础的多种文件类型,如 PDF、Word、WPs、XLs、PPT、TXT 文件等。我们在搜索结果中也经常会看到这些文件类型。不过,搜索引擎也有自己无法处理的网页内容,例如图片、视频、Flash 等,还包括脚本和程序等。虽然搜索引擎在识别图片及从 Flash 中提取文字内容方面有些进步,不过距离直接靠读取图片、视频、Flash 内容返回结果的目标还很远。
3. 排名
经过搜索引擎蜘蛛抓取页面,索引程序计算得到倒排索引后,搜索引擎就准备好对用户搜索进行处理了,搜索引擎面对的用户大部分是通过在搜索框输入搜索词后得到一个列表页面,这个搜索结果页面是基于大量的搜索索引库建立起来的,那么搜索引擎是如何完成排名这一环节的呢?
(1)对提交的搜索请求进行分析
用户在搜索引擎上输入关键词,提交搜索请求后,搜索引擎便会对该搜索请求进行详细分析。分析搜索请求包括以下几点。
· 中文分词。与页面搜索时一样,搜索词也必须进行中文分词,将查询字符串转换为以词为基础的关键词组合。
· 去停止词。与页面索引时一样,搜索引擎也需要把搜索词中的停止词去掉,最大限度地提高排名的相关性及效率。
· 指令处理。完成分词后,搜索引擎的默认处理方式是在关键词之间使用「与」的逻辑。比如说在搜索「美白产品」时,搜索引擎就会把它分为两个词组来查找,搜索引擎排序时默认为,用户寻找的是既包含「美白」,也包含「产品」的页面。只包含「美白」不包含「产品」或者只包含「产品」不包含「美白」的结果页面,都会被搜索引擎认为是不符合条件的。
· 拼写矫正。用户如果在搜索时,输入了明显的错别字或英文单词拼写错误,搜索引擎会提示用户正确的用字或拼写。例如,在搜索引擎中搜索「临床医学」却输入为「领床医学」,这时搜索引擎就会出现提示,如图 1-7 所示。
图 1-7 拼写矫正
· 整合搜索触发。某些搜索词会触发整合搜索,比如明星姓名就经常触发图片和视频内容,当前的热门话题又容易触发资讯内容。哪些词触发哪些整合搜索,也需要在搜索词处理阶段计算。
(2)文件匹配
搜索引擎蜘蛛时刻都在爬行和抓取,同时还不断对抓取的数据进行整理、归纳和储存。搜索词经过处理后,搜索到的是以词为基础的关键词集合。文件匹配阶段就是找到含有所有搜索关键词的所有文件。在搜索部分提到的倒排索引使得文件匹配能够快速完成,如图 1-8 所示。
图 1-8 倒排索引快速匹配文件表
这个图就是典型的倒排索引快速匹配文件表,假设用户搜索「关键词 1」和「关键词 7」,排名程序只要在倒排索引中找到「关键词 1」和「关键词 7」,就能找到分别含有这两个词的搜索页面。
(3)初始子集筛选
子集就是为了更加快速地满足用户的需要,搜索引擎需要从所有的相关页面中进行选择,只计算权重较高的页面返回给用户,这个过程就是初始子集筛选。
当用户搜索某个关键词时,包含这个关键词的页面有成千上万,甚至几十万、上百万。搜索引擎面对如此海量的数据如果一一进行匹配的话需要耗费很长时间,这样会直接影响用户体验,所以为了更好地满足用户的需求,实际中搜索引擎只会选择那些权重高的页面去匹配。
(4)相关性计算
选出初始子集后,就要对子集页面中关键词的相关性进行计算。计算相关性是排名中最重要的一步。影响相关性的因素主要有以下几个方面。
· 关键词常用度。经过分词后的多个关键词,对整个搜索字符串的意义贡献井不相同。越常用的词对搜索词的意义贡献越小,越不常用的词对搜索词的意义贡献越大。
· 链接的使用和页面权重。做好外部链接对网站的排名、收录、权重有很大的关系,网站的整体权重提高了,被蜘蛛抓取的频率就越快,也就是说网站被收录了更多的页面。
· 关键词出现的位置。如果所优化的关键词出现在标题中,而且位置越靠左越有利于排名,同时在正文中关键词最好在首段的第一句话中,后面的内容中少量出现几次即可。
· 关键词密度和字频。一般情况下,在没有关键词堆积时,搜索词在页面中出现的次数越多,密度越高,说明页面内容与搜索词相关性越高。不过这只是一个大致规律,实际情况未必如此,所以相关性计算还有其他因素。出现频率及密度只是相关性因素的一部分,而且重要程度越来越低。
· 关键词的距离。中文搜索引擎最大的特点就是中文分词,比如「北京网络营销培训」,如果这个词出现几次,搜索引擎就会认为这是一个词,但是若某一篇文章出现「北京」和「网络营销培训」,且这两个词出现的距离较远的话,就被认为相关性不高。
(5)排名过滤及调整
选出匹配文件子集、计算相关性后,网页的排名基本确定。之后,搜索引擎还会有一些过滤算法,对排名进行轻微调整,其中最主要的过滤就是施加惩罚。虽然某些有作弊嫌疑的页面会按照正常的权重和相关性计算被排在前面,但是,这些页面一旦被发现,就会被搜索引擎施加惩罚,将它们的排名调到后面,从而起到警告的作用。
(6)排名显示
所有排名确定后,排名程序会调用原始页面的标题标签、说明标签、快照日期等数据显示在页面上。有时搜索引擎需要动态生成页面摘要,而不是调用页面本身的说明标签。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/262264.html