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

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)查询及点击日志