2.4 搜索引擎对网页的收录
2.4.1 页面收录的流程
在互联网中,URL是每个页面的入口地址,蜘蛛程序就是通过这些URL列表抓取到页面的,蜘蛛不断的从这些页面中获取URL资源及存储页面,并加入URL列表,如此不断的循环,搜索引擎就可以从互联网中获取到足够的页面,如图2-5所示。
图2-5 搜索引擎抓取页面简单流程
URL是页面的入口,域名则是网站的入口。搜索引擎就是通过域名进入网站,挖掘URL资源。换而言之,搜索引擎在互联网中抓取页面的首要任务就是要有庞大的域名列表,再不断地通过域名,进入网站抓取网站中的页面。
而对于SEO而言,想被搜索引擎收录,首要条件就是加入搜索引擎的域名列表,常见加入搜索引擎的域名列表的有以下两种方式。
(1)利用搜索引擎提供的网站登录入口,向搜索引擎提交网站域名,如百度的:http://www.baidu.com/search/url_submit.html,可在此提交自己的网站域名,不过用此方法搜索引擎只会定期进行抓取并更新,这种做法比较被动,从域名提交到网站被收录所花费的时间也比较长。
(2)通过与有质量的“外链”,使搜索引擎在抓取“别人”的网站页面时发现我们的网站,从而实现对网站的收录,这种方法主动权在我们手上(只要有足够多的“外链”)且收录速度比第一种方法快,根据外部链接的数量、质量相关性,一般2~7天就会被搜索引擎收录。
2.4.2 页面收录的原理
通过前面的介绍,读者大致了解了搜索引擎的工作方式,下面我们来介绍页面收录的原理。页面收录原理经过修改“页面收录流程”能够把握放慢网站被收录的办法,从而改善搜索引擎收录的数目。假设把一个网站页面组成的页面看作是一个有向图,沿着页面中的链接,依照某种特定的战略对网站中的页面停止遍历。不停地从URL列表中移出曾经拜访的URL,同时提取原始页面中的URL的消息,再将URL分为域名及外部URL两大类,同时判定URL能否被拜访过,递归地扫描URL列表,直至耗尽一切URL资源为止,如图2-6所示。
图2-6 搜索引擎收录页面的工作原理
在搜索引擎中要获取相对重要的页面,就涉及到了搜索引擎的页面收录方式。页面收录方式是指搜索引擎抓取页面时所使用的战略,目的是为了能在互联网中挑选出绝对主要的消息。假设使用相同的抓取战略,搜索引擎在异样的工夫内能够在某一网站中抓取到更多的页面资源,则会在该网站停止更长的工夫,收录的页面数自然也就多了。因而,加强对搜索引擎页面收录方式的熟悉,有益于为网站树立敌对的构造,进步被收录的数目。
搜索引擎收录页面的方式主要有“广度优先”、“深度优先”及“用户提交”(用户提交暂时不讲)三种。
1.广度优先
如果把整个网站看做一棵树,首页就是根,每个页面就是叶子。广度优先是一种横向的页面抓取方式,先从树的较浅层开始抓取页面,直接抓完同层次的所有页面后才进入下一层。因此,在对网站进行优化时,应该把网站相对重要的信息展示在层次比较浅的页面上(如在首页推荐一些热门的内容)。反过来,通过广度优先的抓取方式,搜索引擎就可以首先抓取到网站中相对重要的页面。
首先,蜘蛛从网站的首页出发,抓取首页上所有连接指向的页面,形成页面集合A,并分析出A中所有页面中的链接,再跟踪这些链接抓取下一层的页面,形成页面集合B。就这样递归地从浅层页面中解析出链接,再延伸到深层页面,直到满足某个设定的条件才停止抓取进程,如图2-7所示。
图2-7 广度优先抓取流程
2.深度优先
与广度优先的抓取方式相反,深度优先首先跟踪浅层页面中的某一连接后逐步抓取深层页面,直到抓完最深层的页面才返回浅层页面再跟踪另一链接,继续向深层页面抓取,这是一种纵向的页面抓取方式。使用深度优先的抓取方式,搜索引擎可以抓取到网站中较为隐蔽、冷门的页面,这样就能满足更多用户的需求。
首先,搜索引擎会抓取网站的首页,并提取首页中的链接,再沿着其中的一个连接抓取到页面A-1,同时获取A-1中的链接并抓取页面B-1,获取B-1中的来链接并抓取页面C-1,如此不断地重复,满足到某个条件后,再从A-2抓取页面及链接,如图2-8所示。
图2-8 深度优先抓取流程
2.4.3 搜索引擎页面排名原理
在Google诞生以前,传统搜索引擎主要依靠页面内容中的关键词匹配搜索词进行排名。这种排名方式的短处现在看来显而易见,那就是很容易被刻意操纵。黑帽SEO在页面上堆积关键词,或加入与主题无关的热门关键词,都能提高排名,使搜索引擎排名结果质量大为下降。现在的搜索引擎都使用链接分析技术、减少垃圾,提高用户体验。本节将简要介绍链接在搜索引擎排名中的应用原理。
在排名中计入链接因素,不仅有助于减少垃圾,提高结果相关性,也使传统关键词匹配无法排名的文件能够被处理。如图片、视频文件无法进行关键词匹配,但是却可能有外部链接,通过链接信息,搜索引擎就可以了解图片和视频的内容从而排名。
不同文字的页面排名也成为可能。如在百度或google.cn搜索SEO,都可以看到英文和其他文字的SEO网站。甚至搜索“搜索引擎优化”,也可以看到非中文页面,原因就在于有的链接可能使用“搜索引擎优化”为锚文字指向英文页面。
链接因素现在已经超过页面内容的重要性。链接关系比较抽象,不容易理解。但页面上的因素对排名的影响能看得到,容易直观理解。举个简单的例子,搜索一个特定关键词,SEO人员只要观察前几页结果,就能看到。关键词在标题标签中出现有什么影响,出现在最前面又有什么影响,有技术资源的还可以大规模地统计,计算出关键词出现在标题标签中不同位置与排名之间的关系。虽然这种关系不一定是因果关系,但至少是统计上的联系,使SEO人员大致了解该如何优化。
链接对排名的影响就无法直观了解了,也很难进行统计,因为没有人能获得搜索引擎的链接数据库。我们能做的只是定性观察和分析。
下面介绍一些关于链接的专利,从而了解链接在搜索引擎排名中的使用方法和地位。
1.李彦宏超链分析专利
百度创始人李彦宏在回国创建百度之前就是美国顶级的搜索引擎工程师之一。据说李彦宏在寻找风险投资时,投资人询问其他三个搜索引擎业界的技术高人一个问题:要了解搜索引擎技术应该问谁。这三个被问到的高人中有两个回答:搜索引擎的事就问李彦宏。由此投资人断定李彦宏是最了解搜索引擎的人之一。
这其实就是现实生活中类似于链接关系的应用。要判断哪个页面最具权威性,不能光看页面自己怎么说,还要看其他页面怎么评价。
李彦宏1997年就提交了一份名为“超链文件检索系统和方法”的专利申请,这比Google创始人发明PR要早得多,不得不说这是非常具有前瞻性的研究工作。在这份专利中,李彦宏提出了与传统信息检索系统不同的基于链接的排名方法。
这个系统除了索引页面之外,还建立一个链接词库,记录链接锚文字的相关信息,如锚文字中包含哪些关键词,发出链接的页面索引,包含特定锚文字的链接总数,包含特定关键词的链接都指向哪些页面。词库不仅包含关键词原型,也包含同一个词的其他衍生关键词。
根据这些链接数据,尤其是锚文字,计算出基于链接的文件相关性。在用户搜索时,将得到的基于链接的相关性与基于关键词匹配的传统相关性综合使用,得到更准确的排名。
在今天看来,这种基于链接的相关性计算是搜索引擎的常态,每个SEO人员都知道。但是在十三四年前,这无疑是非常创新的概念。当然现在的搜索引擎算法对链接的考虑,已经不仅仅是锚文字,实际上要复杂得多。
2.HITS算法
HITS是英文Hyperlink-Induced Topic Search的缩写,意译为“超链诱导主题搜索”。HITS算法由Jon Kleinberg于1997年提出,并申请了专利。
按照HITS算法,用户输入关键词后,算法对返回的匹配页面计算两种值,一种是枢纽值(Hub Scores),另一种是权威值(Authority Scores),这两种值是相互依存、相互影响。所谓枢纽值,是指页面上所有导出链接指向页面的权威值之和。权威值是指所有导入链接所在页面的枢纽值之和。
上面的定义比较拗口,简单地说,HITS算法会提炼出两种比较重要的页面,也就是枢纽页面和权威页面。枢纽页面本身可能没有多少导入链接,但是有很多导出链接指向权威页面。权威页面本身可能导出链接不多,但是有很多来自枢纽页面的导入链接。
典型的枢纽页面有雅虎目录、开放目录或好123等网站目录。这种高质量的网站目录作用就在于指向其他权威网站,所以称为枢纽。而权威页面有很多导入链接,其中包含很多来自枢纽页面的链接。权威页面通常是提供真正相关内容的页面。
HITS算法是针对特定的查询词,所以称为主题搜索。
HITS算法的最大缺点是,它在查询阶段进行计算,而不是在抓取或预处理阶段。所以HITS算法是以牺牲查询排名响应时间为代价的。也正因为如此,原始HITS算法在搜索引擎中并不常用。不过HITS算法的思想很可能融入到搜索引擎的索引阶段,也就是根据链接关系找出具有枢纽特征或权威特征的页面。
成为权威页面是第一优先的,不过难度比较大,唯一的方法就是获得高质量链接。当你的网站不能成为权威页面时,就让它成为枢纽页面。所以导出链接也是当前搜索引擎排名因素之一。绝不链接到其他网站的做法,并不是好的SEO方法。
3.TrustRank算法
TrustRank是近年来比较受关注的基于链接关系的排名算法。TrustRank可以翻译为“信任指数”。
TrustRank算法最初来自于2004年斯坦福大学和雅虎的一项联合研究,用来检测垃圾网站,并且于2006年申请专利。TrustRank算法发明人还发表了一份专门的PDF文件,说明TrustRank算法的应用。
TrustRank算法并不是由Google提出的,不过由于Google所占市场份额最大,而且TrustRank在Google排名中也是一个非常重要的因素,所以有些人误以为TrustRank是Google提出的。更让人糊涂的是,Google曾经把TrustRank申请为商标,但是TrustRank商标中的TrustRank指的是Google检测含有恶意代码网站的方法,而不是指排名算法中的信任指数。
TrustRank算法基于一个基本假设:好的网站很少会链接到坏的网站。反之则不成立,也就是说,坏的网站很少链接到好网站这句话并不成立。正相反,很多垃圾网站会链接到高权威、高信任指数的网站,试图提高自己的信任指数。
基于这个假设,如果能挑选出可以百分之百信任的网站,这些网站的TrustRank评为最高,这些TrustRank最高的网站所链接到的网站信任指数稍微降低,但也会很高。与此类似,第二层被信任的网站链接出去的第三层网站,信任度继续下降,由于种种原因,好的网站也不可避免地会链接到一些垃圾网站。不过离第一层网站点击距离越近,所传递的信任指数越高,离第一级网站点击距离就越远,信任指数将依次下降。这样,通过TrustRank算法,就能给所有网站计算出相应的信任指数,离第一层网站越远,成为垃圾网站的可能性就越大。
计算TrustRank值首先要选择一批种子网站,然后人工查看网站,设定一个初始TrustRank值。挑选种子网站有两种方式,一种是选择导出链接最多的网站,因为TrustRank算法就是计算指数随着导出链接衰减。导出链接多的网站,在某种意义上可以理解为“逆向PR值”比较高。
另一种挑选种子网站的方法是选PR值高的网站,因为PR值越高,在搜索结果页面出现的概率就越大。这些网站才正是TrustRank算法最关注的、需要调整排名的网站。那些PR值很低的页面,在没有TrustRank算法时排名也很靠后,计算TrustRank意义就不大了。
根据测算,挑选出大概两百个网站作为种子,就可以比较精确地计算出所有网站的TrustRank值。
计算TrustRank随链接关系减少的公式有两种方式。一种是随链接次数衰减,也就是说如果第一层页面TrustRank指数是100,第二层页面衰减为90,第三层衰减为80。第二种计算方法是按导出链接数目分配TrustRank值,也就是说,如果一个页面的TrustRank值是100页面上有5个导出链接,每个链接将传递20%的TrustRank值。衰减和分配这两种计算方法通常综合使用,整体效果都是随着链接层次的增加,TrustRank值逐步降低。
得出网站和页面的TrustRank值后,可以通过两种方式影响排名。一种是把传统排名算法挑选出的多个页面,根据TrustRank值比较,重新做排名调整。另一种是设定一个最低的TrustRank值门槛,只有超过这个门槛的页面,才被认为有足够的质量进入排名,低于门槛的页面将被认为是垃圾页面,从搜索结果中过滤出去。
虽然TrustRank算法最初是作为检测垃圾的方法,但在现在的搜索引擎排名算法中,TrustRank概念使用更为广泛,常常影响大部分网站的整体排名。TrustRank算法最初针对的是页面级别,现在在搜索引擎算法中,TrustRank值也通常表现在域名级别,整个域名的信任指数越高,整体排名能力就越强。
4.Google PR
PR是PageRank的缩写。Google PR理论是所有基于链接的搜索引擎理论中最有名的。SEO人员可能不清楚本节介绍的其他链接理论,但不可能不知道PR。
PR是Google创始人之一拉里佩奇发明的,用于表示页面重要性的概念。用最简单的话说就是,反向链接越多的页面就是越重要的页面,因此PR值也就越高。
Google PR有点类似于科技文献中互相引用的概念,被其他文献引用较多的文献,很可能是比较重要的文献。
(1)PR的概念和计算
把互联网理解为由结点及链接组成的有向图,页面就是一个个结点,页面之间的有向链接传递着页面的重要性。一个链接传递的PR值决定于导入链接所在页面的PR值,发出链接的页面本身PR值越高,所能传递出去的PR也越高。传递的PR数值也取决于页面上的导出链接数目。对于给定PR值的页面来说,假设能传递到下级页面100份PR,页面上有10个导出链接,每个链接能传递10份PR,页面上有20个导出链接的话,每个链接只能传递5份PR。所以一个页面的PR值取决于导入链接总数,发出链接页面的PR值,以及发出链接页面上的导出链接数目。
PR值计算公式如下:
PR(A)=(1-d)+d(PR(t1)/C(t1)+ … +PR(tn)/C(tn))
A代表页面A。
PR(A)则代表页面A的PR值。
d为阻尼指数。通常认为d=0.85。
t1...tn代表链接向页面A的页面从t1到tn。
C代表页面上的导出链接数目。C(t1)即为页面t1上的导出链接数目。
从概念及计算公式都可以看到,计算PR值必须使用迭代计算。页面A的PR值取决于链接向A的页面t1~tn页面的PR值,而t1~tn页面的PR值又取决于其他页面的PR值,其中很可能还包含页面A。所以PR需要多次迭代才能得到。计算时先给所有页面设定一个初始值,经过一定次数的迭代计算后,各个页面的PR值将趋于稳定。研究证明,无论初始值怎么选取,经过迭代计算的最终PR值都不会受到影响。
外部页面Y向循环注入PR值,循环中的页面不停迭代传递PR,如果没有阻尼系数,循环中的页面PR将达到无穷大。引入阻尼系数,使PR在传递时自然衰减,才能将PR计算稳定在一个值上。
(2)PR的两个比喻模型
关于PR有两个著名的比喻。
● 一个比喻是投票。链接就像民主投票一样,A页面链接到B页面,就意味着A页面对B页面投了一票,使得B页面的重要性提高。同时,A页面本身的PR值决定了A所能投出去的投票力,PR值越高的页面,投出的票也更重要。在这个意义上,传统基于关键词匹配的算法是看页面自己说页面内容是什么,基于链接的PR则是看别人怎么评价一个页面。
● 另一个比喻是随机冲浪。假设一个访问者从一个页面开始,不停地随机点击链接,访问下一个页面。有时候这个用户感到无聊了,不再点击链接,就随机跳到了另外一个网址,再次开始不停地向下点击。所谓PR值,也就是一个页面在这种随机冲浪访问中被访问到的概率。一个页面导入链接越多,被访问到的概率也越高,因此PR值也越高。
阻尼系数也与随机冲浪模型有关。(1-d)=0.15实际上就是用户感到无聊,停止点击,随机跳到新URL的概率。
5.Hilltop算法
Hilltop算法是由Krishna Baharat在2000年左右所研究的,于2001年申请了专利,并且把专利授权给Google使用,后来Krishna Baharat本人也加入了Google。
Hilltop算法可以简单地理解为与主题相关的PR值。传统PR值与特定关键词或主题没有关联,只计算链接关系。这就有可能出现某种漏洞。如一个PR值极高的关于环保内容的大学页面,上面有一个链接连向一个儿童用品网站,这个链接出现的原因可能仅仅是因为这个大学页面维护人是个教授,他的太太在那个卖儿童用品的公司工作。这种与主题无关、却有着极高PR值的链接,有可能使一些网站获得很好的排名,但其实相关性并不高。
Hilltop算法就尝试矫正这种可能出现的疏漏。Hilltop算法同样是计算链接关系,不过它更关注来自主题相关页面的链接权重。在Hilltop算法中把这种主题相关页面称为专家文件。显然,针对不同主题或搜索词有不同的专家文件。
根据Hilltop算法,用户搜索关键词后,Google先按正常排名算法找到一系列相关页面并排名,然后计算这些页面有多少来自专家文件的、与主题相关的链接,来自专家文件的链接越多,页面的排名分值越高。按Hilltop算法的最初构想,一个页面至少要有两个来自专家文件的链接,才能返回一定的Hilltop值,不然返回的Hilltop值将为零。
根据专家文件链接计算的分值被称为LocalRank。排名程序根据LocalRank值,对原本传统排名算法计算的排名做重新调整,给出最后排名。这就是前面介绍的搜索引擎排名阶段最后的过滤和调整步骤。
Hilltop算法最初写论文和申请专利时对专家文件的选择有不同描述。在最初的研究中,Krishna Baharat把专家文件定义为包含特定主题内容,并且有较多的导出链接到第三方网站的页面,这有点类似于HITS算法中的枢纽页面。专家文件链接指向的页面与专家文件本身没有关联,但是它们来自同一个主域名下的子域名,来自相同或相似IP地址的页面等。最常见的专家文件经常来自于学校、政府及行业组织网站。
在最初的Hilltop算法中,专家文件是预先挑选的。搜索引擎可以根据最常见的搜索词,预先计算出一套专家文件,用户搜索时,排名算法从事先计算的专家文件集合中选出与搜索词相关的专家文件子集,再从这个子集中的链接计算LocalRank值。
不过在2001年所申请的专利中,Krishna Baharat描述了另外一个挑选专家文件的方法,专家文件并不预先选择,用户搜索特定查询词后,搜索引擎按传统算法挑出一系列初始相关页面,这些页面就是专家文件。Hilltop算法在这个页面集合中再次计算哪些网页有来自于集合中其他页面的链接,赋予比较高的LocalRank值。由于传统算法得到的页面集合已经具备了相关性,这些页面再提供链接给某一个特定页面,这些链接的权重自然应该很高。这种挑选专家文件的方法是实时进行的。
通常认为Hilltop算法对2003年底的佛罗里达更新有重大影响,不过Hilltop算法是否真的已经被融入进Google排名算法中,没有人能够确定。Google从来没有承认、也没有否认自己的排名算法中是否使用了某项专利。不过从排名结果观察及招揽Krishna Baharat至麾下等迹象看,Hilltop算法的思想得到了Google的极大重视。
Hilltop算法提示SEO,建设外部链接时更应该关注主题相关的网站。最简单的方法是搜索某个关键词,目前排在前面的页面就是最好的链接来源,甚至可能有一个来自竞争对手网站的链接,这种效果是最好的。当然,获得这样的链接难度最大。
2.4.4 搜索引擎模块组成
一个典型的网络信息检索系统的架构由信息收集、查询服务和信息处理三个模块组成。
从具体运行方式上说,系统根据站点,网页的URL信息和网页之间的链接关系,利用网络蜘蛛在互联网上收集数据。收集的数据分别通过链接信息分析器和文本信息分析器处理,保存在链接数据库和文本索引数据库中,同时,网页质量评估器依据网页的链接关系和页面结构特征对页面质量进行评估,并将评估的结果保存在索引数据库中。查询服务器负责与用户的交互,它根据用户的检索需求,从索引数据库中读取对应的索引,并综合考虑查询相关性与页面质量评估结果之间的关系,给出查询结果列表反馈给用户。
1.信息收集模块
搜索器的信息收集模块包括“蜘蛛控制”和“网络蜘蛛”两部分,“蜘蛛”这个称呼形象的描述出了信息收集模块在网络数据形成的Web上进行信息获取的功能。总体而言,网络蜘蛛从种子网页出发,通过反复下载网页并从文档中寻找未曾见过的URL,达到访问其他网页得以遍历Web的目的。而其工作策略一般则可以分为累积式抓取(cumulative crawling)和增量式抓取(incremental crawling)两种。
累积式抓取是指从某一个时间点开始,通过遍历的方式抓取系统所能允许存储和处理的所有网页。在理想的软硬件环境下,经过足够的运行时间,可以抓取到相当规模的网页集合。但由于Web数据的动态特性,集合中网页的被抓取时间点是不同的,页面被更新的情况也不同,因此累积式抓取到的网页集合事实上无法与真实环境中的网络数据保持一致。
与累积式抓取不同,增量式抓取是指在具有一定量规模的网络页面集合的基础上,采用更新数据的方式对已有集合中的过时网页进行抓取,以保证所抓取到的数据与真实网络数据足够接近。进行增量式抓取的前提是,系统已经抓取了足够数量的网络页面,并具有这些页面被抓取的时间信息。
面向实际应用环境的网络蜘蛛设计中,通常既包括累积式抓取,也包括增量式抓取的策略。累积式抓取一般用于数据集合的整体建立或大规模更新阶段;而增量式抓取则主要针对数据集合的日常维护与即时更新。
在确定了抓取策略之后,如何充分利用网络带宽,并合理确定网页数据更新的时间点就成了网络蜘蛛运行策略中的核心问题。
总体而言,在合理利用软硬件资源进行针对网络数据的即时抓取方面,已经形成了比较成熟的技术和实用性解决方案,这方面目前所需解决的主要问题,是如何更好地处理动态网络数据问题(如数量越来越庞大的Web 2.0数据等),以及更好地根据网页质量修正抓取策略的问题。
2.查询服务模块
查询服务模块是指网络信息检索系统中,直接与用户查询需求交互的组成部分。从功能上讲,这个模块主要完成两方面的任务:首先是用户交互,即收集用户查询并用符合用户行为习惯的方式对查询结果进行反馈;其次是信息查询和检索,使用收集到的用户查询在由信息收集模块抓取,并由信息处理模块建立索引的网络数据进行检索。这其中涉及到的核心技术包括:检索系统网络服务的建立和维护、面向网络信息的检索模型建立等。
网络信息检索系统严格意义上说也在提供一种网络服务(Web Service),因此它的建立和运行、维护机制符合网络服务系统的一般规律。但由于网络信息检索用户行为习惯存在宏观上的统计特性,系统的网络服务也应进行优化以更好地适应这种行为习惯。针对搜索引擎日志分析的工作说明,尽管网络信息检索用户所提出的查询数目异常繁杂,但搜索需求中的大多数是重复的,重复的比例超过用户所提交查询需求的70%以上乃至更多。因此在检索系统的网络服务部分加入某种类型的缓存机制就是非常必要的,对检索结果序列或检索结果页面本身的缓存都有助于大大减轻网络数据检索的负担。
面向网络信息的检索模型研究一直是网络信息相关研究的重点,研究的主要方法一般集中在以下两点:改进传统文本信息检索技术以适应网络信息需求;不对传统检索技术进行改动,而尝试对传统检索结果与网络信息质量评估结果进行融合。前者主要的研究工作包括对网络半结构化文本检索方式的研究和对链接文本检索方式的研究等;而后一方面主要的研究工作则集中在将网络链接关系分析算法(如PageRank)的结果融合到传统文本检索结果模型的尝试。而这方面最重要的研究平台之一是TREC的网络信息检索(Web Track)和超大规模文本检索(Terabyte Track)论坛。上述不少研究所基于的实验数据都来自于这两个论坛从2001年以来的积累,我们研究中涉及到的一部分实验结果也是基于这个研究领域比较公认的平台得出的。
总体而言,面向用户的查询服务技术是网络信息检索技术研究的热点之一,而主要的研究方向,则是基于传统文本信息检索技术,融入网络信息检索的应用需求元素,借以建立新的检索模型或对原有模型进行改进。当前,这方面研究集中在对用户信息需求的挖掘与发现、改进网络信息检索系统的用户交互方式等方面上。
3.信息处理模块
除了上述两个模块之外的部分,都可以归入信息处理模块的范畴,将纷繁复杂的网页数据整理成可以被检索系统高效、可靠、方便使用的格式是这一模块的工作。具体来讲,信息处理包括对传统内容信息的处理和对非内容信息(主要是链接结构信息和文本结构信息等)进行处理两个方面的内容。
对文本内容信息的处理与传统文本信息检索系统的信息处理模块功能类似,最主要的目的是建立以词项(term)为中心的文本倒排索引,以便于在检索系统中使用检索功能模块进行内容相似度的计算,提高系统检索效率。这方面的主要研究工作集中在对倒排索引结构合理设计上,如是否记录文字位置信息以及记录的形式等。对中文信息检索系统而言,在这一部分还研究其特殊的预处理过程,即分词并建立词项的过程。由于这方面的研究有很多涉及到实际工程层面的实现原理与技术细节,因此相关研究工作的介绍并不多,仅有部分工程技术报告涉及,如863信息检索评测的相关工作等。
与纯文本数据相比,网络数据不仅包括非结构化的内容信息,也包括一定程度的结构化信息,这些结构化信息在网络信息检索工具评价数据质量、挖掘数据相关性等方面发挥着十分重要的作用。
因此,网络信息检索中对非内容信息的处理是其与传统文本信息检索系统最大的区别所在,而其中应用最广泛的是利用超链接结构分析方法的网络数据质量评价技术,因此在下面的介绍中将对这方面技术的主要发展情况进行讲解。
2.4.5 搜索引擎页面分析
对SEO(搜索引擎优化)而言,让网站内的页面能够及时、全面地被搜索引擎索引、收录应该说是其的首要任务,这是实施其他SEO策略的最基本保证。不过,这也往往是容易被高估的一个环节,如我们时常可以看到某些人宣称自己的网站被Google收录了多少页面有几KB甚至几十KB等以证明SEO工作的成功。但客观地说,网页仅仅被搜索引擎索引、收录是没有太大的实际意义,往往只能沦为浩如烟海的互联网世界中的殉葬品,更重要的是如何让网页出现在针对特定搜索项的SERP(搜索结果页面)前几页。大部分人认为,让网站内尽可能多的页面被收录进搜索引擎索引数据库终归不是一件坏事,网页越多,曝光的机会也便越大,虽然最终效果存在疑问。
无论如何如果在对网站实施SEO时将重点放在网页被索引、收录的速度与效率,当然也无可厚非,而要想实现这一点,需要我们对搜索引擎如何收录、索引网页的机制有所了解。下面以Google为例,来介绍搜索引擎收录、索引网页的过程,希望能对读者能有所帮助。对其他搜索引擎如Yahoo! 、Live搜索及百度而言,尽管在具体细节上存在差别,不过,基本策略都是类似的。
1.收集待索引网页的URL
在互联网上存在的网页数量绝对是个天文数字,每天新增的网页也不计其数,搜索引擎需要首先找到要索引收录的对象。
具体到Google而言,虽然对GoogleBot是否存在DeepBot与FreshBot的区别存在争议,至于是否叫这么两个名字更是众说纷纭,当然,名字本身并不重要至少到目前为止,主流的看法是,在Google的robots中,的确存在着部分专门为真正的索引收录页准备“素材”的robots,这里我们姑且仍称之为FreshBot。
它们的任务便是每天不停地扫描Internet,以发现并维护一个庞大的URL列表供DeepBot使用,换而言之,当其访问、读取其一个网页时,目的并不在于索引这个网页,而是找出这个网页中的所有链接。
当然,这样似乎在效率上存在矛盾,有点不太可信。不过,我们可以简单地通过以下方式判断:FreshBot在扫描网页时不具备“排它性”,也即是说,位于Google不同的数据中心的多个robots可能在某个很短的时间周期,如一天甚至是一个小时,访问同一个页面,而DeepBot在索引、缓存页面时则不会出现类似的情况,即Google会限制由某个数据中心的robots来完成这项工作的,而不会出现两个数据中心同时索引网页同一个版本的情况,如果这种说法没有破绽的话,则似乎可以从服务器访问日志中时常可以看到源自不同IP的GoogleBot在很短的时间内多次访问同一个网页以证明FreshBot的存在。因此,有时候发现GoogleBot频繁访问网站也不要高兴得太早,也许其根本不是在索引网页而只是在扫描URL。
FreshBot记录的信息包括网页的URL、Time Stamp(网页创建或更新的时间戳),以及网页的Head信息(注:这一点存在争议,也有不少人相信FreshBot不会去读取目标网页信息的,而是将这部分工作交由DeepBot完成。不过,笔者倾向于前一种说法,因为在FreshBot向DeepBot提交的URL列表中,会将网站设置禁止索引、收录的页面排除在外,以提高效率,而网站进行此类设置时除使用robots.txt外还有相当部分是通过<mata>标签中的“noindex”实现的,不读取目标网页的head似乎是无法实现这一点的),如果网页不可访问,如网络中断或服务器故障,FreshBot则会记下该URL并择机重试,但在该URL可访问之前,不会将其加入向DeepBot提交的URL列表。
总的来说,FreshBot对服务器带宽、资源的占用比较少。最后,FreshBot对记录信息按不同的优先级进行分类,向DeepBot提交,根据优先级不同,主要有以下几种。
A:新建网页。
B:旧网页/新的Time Stamp,即存在更新的网页。
C:使用301/302重定向的网页。
D:复杂的动态URL,如使用多个参数的动态URL, Google可能需要附加的工作才能正确分析其内容。(随着Google对动态网页支持能力的提高,这一分类可能已经取消)。
E:其他类型的文件,如指向PDF、DOC文件的链接,对这些文件的索引,也可能需要附加的工作。
F:旧网页/旧的Time Stamp,即未更新的网页。注意,这里的时间戳不是以Google搜索结果中显示的日期为准,而是与Google索引数据库中的日期比对。
G:错误的URL,即访问时返回404回应的页面。
优先级按A~G的顺序排列,依次降低。需要强调的是,这里所说的优先级是相对的,如同样是新建网页,根据指向其的链接质量、数量的不同,优先级也有着很大的区别,具有源自相关的权威网站链接的网页具有较高的优先级。此外,这里所指的优先级仅针对同一网站内部的页面,事实上,不同网站也有着不同的优先级,换而言之,对权威网站中的网页而言,即使其最低优先级的404URL,也可能比许多其他网站优先级最高的新建网页更具优势。
2.网页的索引与收录
接下来才进入真正的索引与收录网页过程。从上面的介绍可以看出,FreshBot提交的URL列表是相当庞大的,根据语言、网站位置等不同,对特定网站的索引工作将分配至不同的数据中心完成。整个索引过程,由于庞大的数据量,可能需要几周甚至更长时间才能完成。
正如上文所言,DeepBot会首先索引优先级较高的网站/网页,优先级越高,出现在Google索引数据库及至最终出现在Google搜索结果页面中的速度便越快。对新建网页而言,只要进入到这个阶段,即使整个索引过程没有完成,相应的网页便已具备出现在Google索引库中的可能,相信许多朋友在Google中使用site:somedomain.com搜索时常常看到标注为补充结果只显示网页URL或只显示网页标题与URL但没有描述的页面,此即是处于这一阶段网页的正常结果。当Google真正读取、分析、缓存了这个页面后,其便会从补充结果中逃出而显示正常的信息。当然,前提是该网页具有足够的链接,特别是来自权威网站的链接,并且,索引库中没有与该网页内容相同或近似的记录(Duplicate Content过滤)。
对动态URL而言,虽然如今Google宣称在对其处理方面已不存在障碍,不过,可以观察到的事实仍然显示动态URL出现在补充结果中的几率远大于使用静态URL的网页,往往需要更多、更有价值的链接才能从补充结果中逸出。
而对于上文中所提及到的“F”类,即未更新的网页,DeepBot会将其时间戳与Google索引数据库中的日期比对,确认尽管可能搜索结果中相应页面信息未来得及更新但只要索引了最新版本即可考虑网页多次更新、修改的情况;至于“G”类即404 URL,则会查找索引库中是否存在相应的记录,如果有,将其删除。
3.数据中心间的同步
之前介绍过,DeepBot索引某个网页时会由特定的数据中心完成,而不会出现多个数据中心同时读取该网页,分别获得网页最近版本的情况,这样,在索引过程完成后,便需要一个数据同步过程,将网页的最新版本在多个数据中心得到更新。
这就是之前著名的Google Dance。不过,在BigDaddy更新后,数据中心间的同步不再集中在特定的时间段,而是以一种连续的、时效性更强的方式进行。尽管不同数据中心间仍存在一定的差异,但差异已经不大,而且,维持的时间也很短。
提高搜索引擎索引收录网页的效率,根据上面的介绍,可以看出,要想让你的网页尽可能快、尽可能多地被搜索引擎收录,至少应从如下几方面进行优化。
(1)提高网站反相链接的数量与质量,源自权威网站的链接可以让你的网站/网页在第一时间内被搜索引擎“看到”。
当然,这也是老生常谈了。从上面的介绍可以看出,要提高网页被搜索引擎收录的效率,首先要让搜索引擎找到你的网页,链接是搜索引擎找到网页的唯一途径,“唯一”一词存在些许争议,见下面的SiteMaps部分从这个角度看,向搜索引擎提交网站之类的作法没有必要且没有意义,相对而言,要想让你的网站被收录,获得外部网站的链接才是根本,同时,高质量的链接也是让网页步出补充结果的关键因素。
(2)网页设计要秉持“搜索引擎友好”的原则。
从搜索引擎spider的视角设计与优化网页出发,确保网站的内部链接对搜索引擎“可见”,相对于获得外部网站链接的难度,合理规划的内部链接是提高搜索引擎索引与收录效率更经济、有效的途径,除非网站根本未被搜索引擎收录。
(3)如果你的网站使用动态URL,或者导航菜单使用JavaScript,则在网页收录方面遇到障碍时,应首先从这里着手。
(4)使用SiteMaps。
事实上,许多人认为Google取消了FreshBot的一个主要原因便是SiteMaps(xml)协议的广泛应用,认为这样只须读取网站提供的SiteMaps便可得到网页的更新信息,而不须FreshBot耗时费力地扫描。这种说法还是有一定道理的,虽然目前不能确定Google究竟直接使用SiteMaps作为DeepBot的索引列表还是用做FreshBot的扫描路标,但SiteMaps能够提高网站索引收录的效率则是不争的事实。如SEO探索曾做过如下的测试。
● 两个网页,获得的链接情况相同,一个加入SiteMaps而另一未加入,出现在SiteMaps中的网页很快被收录,而另一个页面则在过了很长时间后才被收录。
● 某个孤岛页面,没有任何指向其的链接,但将其加入SiteMaps一段时间后,同样被Google索引,只不过,出现在补充结果中。
当然,尽管网页未出现在SiteMaps中但仍能被Google索引也可以看出,Google仍然使用FreshBot或类似FreshBot的机制,当然这也容易理解,毕竟仍然有那么多未使用SiteMaps的网站,Google不可能将其拒之门外。
4.如何避免重复性收录
在互联网中,信息的重复性是在所难免的。然而,搜索引擎怎样识别重复信息?怎样判断哪些网页的信息是原创的?哪些是复制的?怎样认为哪些重复的信息是有价值的?哪些又是可以舍弃的呢?
在网站中,重复信息主要包括转载和镜像内容两大类。搜索引擎对页面分析的时候,必须具备识别重复信息的能力。因为大量的重复信息不但占用巨大的服务器资源,而且还增加了用户寻找信息的时间,降低了用户体验。但这并不意味着所有重复信息都是没有用的。搜索引擎会认为转载内容没有原创重要,赋予原创内容更高的权重,而镜像内容则几乎忽略。
转载页面时指与原创内容相同或相近的页面。然而,搜索引擎如何识别转载页面呢?首先,它把网页正文内容分为n个区域进行比较,如果其中有m个区域是相同或相似的,则认为这些页面是互为转载页面。
在确定页面的转载关系后,接下来,搜索引擎在结合页面的最后修改时间,页面权重等因素判断原创页面与转载页面。
镜像页面是指内容完全相同的两个页面。和上述一样,把内容分出n个区域,比对后n个区域完全一样则互为镜像页面。
镜像网站。狭义上是完全相同的网站,形成镜像网站主要有两种情况。一是多个域名或IP指向同一服务器的物理目录。另外就是整个网站内容被复制到使用不同域名或者不同IP的服务器上。
为了识别站点间是否互为镜像网站搜索引擎首先判断这些网站的首页是否互为镜像。然后综合页面权重,建立时间等诸多因素识别源网站。这也是为什么搜索引擎对于镜像网站收录极少,甚至不收录的原因。