搜索引擎的工作过程大体上可以分成三个阶段:
1、爬行和抓取:搜索引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。
(1)蜘蛛
搜索引擎用来爬行和访问页面的程序被称为蜘蛛,也称为机器人。
搜索引擎蜘蛛访问网站页面时,类似于普通用户使用的浏览器。蜘蛛程序发出页面访问请求后,服务器返回HTML代码,蜘蛛程序把收到的代码存入原始页面数据库。搜索引擎为了提高爬行和抓取速度,都使用多个蜘蛛并发分布爬行。
蜘蛛访问任何一个网站时,都会先访问网站根目录下的robots.txt文件。如果该文件里禁止搜索引擎抓取某些文件或目录,蜘蛛将遵守协议,不抓取被禁止的网址。
下面是常见的搜索引擎蜘蛛名称:
Baiduspider+(+http://www.baidu.com/search/spider.htm) 百度蜘蛛
Mozilla/5.0(compatible;Yahoo!Slurp China;http://misc.yahoo.com.cn/help.html) 雅虎中国蜘蛛
Mozilla/5.0(compatible;Yahoo!Slurp/3.0;http://help.yahoo.con/help/us/ysearch/slurp) 英文雅虎蜘蛛
Mozilla/5.0(compatible;Googlebot/2.1;+http://www.google.com/bot.html) Google蜘蛛
msnbot/1.1(+http://search.msn.com/msnbot.htm) 微软 Bing 蜘蛛
Sogou+web+robot+(+http://www.sogou.com/docs/help/webmasters.htm#07) 搜狗蜘蛛
Sosospider+(+http://help.soso.com/webspider.htm) 搜搜蜘蛛
Mozilla/5.0(compatible;YodaoBot/1.0;http://www.yodao.com/help/webmaster/spider/;) 有道蜘蛛
(2)跟踪链接
整个互联网是由相互链接的网站及页面组成的。从理论上说,蜘蛛从任何一个页面出发,顺着链接都可以爬行到网上的所有页面。当然,由于网站及页面链接结构异常复杂,蜘蛛需要采取一定的爬行策略才能遍历网上所有页面。
最简单的爬行遍历策略分为两种,一种是深度优先,另一种是广度优先。
所谓深度优先,指的是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其他链接,然后返回到第一个页面,沿着另一个链接再一直往前爬行。
所谓广度优先,指蜘蛛在一个页面上发现多个链接时,不是顺着一个链接一直向前,而是把页面上所有第一层链接都爬一遍,然后再沿着第二层页面上发现的链接爬向第三层页面。
实际操作中,深度优先和广度优先通常是混合使用的,这样既可以照顾到尽量多的网站
(3)吸引蜘蛛
影响被收录的影响因素有:
a、网站和页面权重。
b、页面更新度。
c、导入链接。
d、与首页点击距离。
(4)地址库
为了避免重复爬行和抓取网址,搜索引擎会建立一个地址库,记录已经被发现还没有抓取的页面,以及已经被抓取的页面。
地址库中的URL来源有:
a、人工录入的种子网站。
b、蜘蛛抓取页面后,从HTML中解析出新的链接URL,与地址库中的数据进行对比,如果是地址库中没有的网址,就存入待访问地址库。
c、站长通过搜索引擎网页提交表格提交进来的网址。
(5)文件存储
搜索引擎蜘蛛抓取的数据存入原始页面数据库。每个URL都有一个独特的文件编号。
(6)爬行时的复制内容检测
遇到权重很低的网站上大量转载或抄袭内容时,很可能不再继续爬行。
2、预处理:索引程序对抓取来的页面数据进行文字提取、中文分词、索引等处理,以备排名程序调用。
(1)提取文字
目前搜索引擎仍以文字内容为基础,蜘蛛抓取到的页面中的HTML代码,还包含了大量的HTML格式标签、Javascript程序等,搜索引擎预处理首先要从HTML文件中去除标签、程序,提取出可以用于排名处理的网页面文字内容。
除了可见文字,搜索引擎也会提取出一些特殊的包含文字信息的代码,如meta标签中的文字、图片替代文字、Flash文件的替代文字、链接锚文字等。
(2)中文分词
英文每个词之间有空格,中文一个句子中的所有字或词都是连在一起的。搜索引擎必须首先分辨哪几个字组成一个词,哪些字本身就是一个词。
中文分词方法有两种:一种是基于词典匹配,另一种是基于统计。
基于词典匹配的方法,是指将分析的一段汉字与一个事先造好的词典中的词条进行匹配,在待分析汉字串中扫描到词典中已有的词条则匹配成功,或者说切分出一个单词。其准确度在很大程度上取决于词典的完整性和更新情况。
基于统计的分词方法,是指分析大量文字样本,计算出字与字相邻出现的统计概率,几个字相邻出现越多,就月可能形成一个单词。基于统计的方法的优势是对新出现的词反应更快速,也有利于消除歧义。
实际使用中,分词系统都是混合使用两种方法的,快速高校,又能识别生词、新词,消除歧义。
(3)去停止词
停止词,这里指的是在网页内容中出现频率很高,却没有实际影响的词。如:“的”、“地”、“得”“啊”“但是”等不重要的词。
搜索引擎在索引页面之前会去掉这些停止词,使主题更加突出,减少无谓的计算量。
(4)消除噪声
绝大部分页面还有一部分内容,对页面主题没有贡献,比如版权声明文字、导航条、广告等。这些区块都属于噪声,会分散页面主题。
搜索引擎需要识别并消除这些噪声,排名时不使用噪声内容。
消除噪声的基本方法:根据HTML标签对页面分块,区分出页头、导航、正文、页脚、广告等区域,在网站上大量重复出现的区块往往属于噪声。对页面进行消噪后,剩下的才是页面主体内容。
(5)去重
同一篇文章经常会重复出现在不同网站及同一个网站的不同网址上,搜索引擎并不喜欢这种重复性的内容。虽然都是内容相关的,但用户搜索时,如果在前两页看到的都是来自不同网站的同一篇文章,用户体验就太差了,所以在进行索引前还需要识别和删除重复内容,这个过程就是“去重”。
“去重”的基本方法:对页面特征关键词计算指纹,也就是说从页面主体内容中选取最有代表性的一部分关键词,然后计算这些关键词的数字指纹。通常选取10个特征关键词就可以达到比较高的计算准确性,再选取更多词对去重准确性提高的贡献也就不大了。
典型的指纹计算方法,如MD5算法。这类指纹算法的特点是,输入特征关键词有任何微小的变化,都会导致计算出的指纹有很大差距。
了解了搜索引擎的去重算法,SEO人员就应该清楚,简单的增加“的”、“地”、“得”或挑换段落顺序这种所谓伪原创,并不能逃过搜索引擎的去重算法,因为这样的操作无法改变文章的特征关键词。而且搜索引擎的去重算法很可能不止于页面级别,而是进行到段落级别,混合不同文章、交叉调换段落顺序也不能使转载和抄袭变成原创。
(6)正向索引
经过以上步骤后,搜索引擎得到的就是独特的、能反映页面主体内容的、以词为单位的内容。
接下来搜索引擎索引程序就可以提取关键词,按照分词程序划分好的词,把页面转换为一个关键词组成的集合,同时记录每一个关键词在页面上的出现频率、出现次数、格式(如出现在标题标签、黑体、H标签、锚文字等),位置(如页面第一段文字等)。这样,每一个页面都可以记录为一串关键词集合,其中每个关键词的词频、格式、位置等权重信息也都记录在案。
搜索引擎索引程序将页面及关键词形成词表结构存储进索引库。每个文件都对应一个文件ID,文件内容被表示为一串关键词的集合。其实在搜索引擎索引库中,关键词也已经转换为关键词ID。这样的数据结构就称为正向索引。
(7)倒排索引
(8)链接关系计算
(9)特殊文件处理
3、排名:用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按一定格式生成搜索结果页面。
(1)搜索词处理
(2)文件匹配
(3)初始子集的选择
(4)相关性计算
(5)排名过滤及调整
(6)排名显示
(7)搜索缓存
(8)查询及点击日志