Web上的信息具有异质性和动态性,由于受时间和存储空间的限制,即使是最大的搜索引擎也不可能将全球所有的网页全部搜集过来[Lawrence and Giles,1998],一个好的搜集策略是优先搜集重要的网页,以便能够在最短的时间内把最重要的网页抓取过来。在此要求下,一方面要采用分布并行的体系结构来协同工作,一方面要优先搜集重要的网页。
对于网页重要程度的评定,要依据搜集信息所针对的不同应用而定。从而信息的搜集可以采用不同的策略。对于信息量相对较小的应用,如为发现专业信息而设计的主题Web信息搜集系统,可以依据定制的关键词,优先搜集网页中包含或部分包含这些关键词的网页,通过提高该网页URL及包含的URL的权值来达到目的。对于为处理海量数据而设计的可扩展Web信息搜集系统,如何评定一个网页的“重要度”,目前还是一个值得研究探讨的问题。
根据搜集经验,体现网页重要度的特征有:
1) 网页的入度大,表明被其他网页引用的次数多;
2) 某网页的父网页入度大;
3) 网页的镜像度高,说明网页内容比较热门,从而显得重要;
4) 网页的目录深度小,易于用户浏览到。
这里定义“URL目录深度”为:网页URL中除去域名部分的目录层次,即URL=schema://host/localpath中的localpath部分。如:URL为http://www.25yi.com,则目录深度为0;如果是http://www.25yi.com/cs,则目录深度为1。
这样的特征并非臆断,而是从长期从事搜索引擎工作中得来的,从天网搜索引擎多年的工作及用户行为日志中,可以反映出这种一般性规律,这样的例子如:重要的学术论文网页,因为经常被引用,就表现为入度大;如果被重要的网页引用或多次被其他站点镜像,也可被认为有价值、重要;如网页URL目录深度浅,说明位于网站“浅层”,通常是被编辑网页的人认为重要而放在易于访问到的地方,网站的主页或各板块的首页一般被经常浏览而显得重要。
需要说明的是,URL目录深度小的网页并非总是重要的,目录深度大的网页也并非全不重要,有些学术论文的网页URL就有很长的目录深度。多数重要度高的网页会同时具有上述4个特征,即上述表示重要度特征的因素并非独立无关的。
网页的权重可以形式化表示为
weight(p)=f(indegree(p),indegree(father_p),mirror(p),directorydepth(p))
其中weight(p)表示网页p的权重,indegree(p)表示网页p的入度函数, indegree(father p)表示网页p的父网页的入度函数,mirror(p)表示网页p的镜像度函数,directorydepth(p)表示网页p的目录深度函数。
如果能够综合利用或部分利用上述特征,可以认为是重要的。但是如何确定每一个特征量的影响因子却很困难。如果定义的不好,反倒会影响重要网页的发现。是否有简单的方法来确定重要的网页呢?不妨先来分析一下网页的分布情况。
整个Web就象一个深不见底的海洋。把这个海洋分成两个层次,表层和底层[Bergman,2000]。表层包含的主要是“静态网页”(不通过提交查询信息即可获得的页面),底层包含的主要是“动态网页”(需要通过提交查询信息获得含有内容的网页)。目前搜索引擎的工作主要集中在表层工作。在表层中重要网页的分布或者更接近于海面,或者更接近于底层。对于网页的搜集工作,就象一条捕鱼的船行驶在海面上,目的是撒网捕捉尽可能多而且重要的网页。对于重要网页的获取,人为的策略干预难免会有疏漏,因此不妨考虑如何尽可能多的获得包含重要URL的网页问题。实际搜集网页经验说明,网站的首页是飘浮在海面上的,网站数目远小于网页数,并且重要的网页也必然是从这些网站首页链接过去的,因此搜集工作应当优先获得尽可能多的网站首页。由此不难想象宽度优先搜集是尽快获得重要网页最好的办法。采用宽度优先搜集最直接有效的方法就是根据网页URL的目录深度确定优先级,这是一个既客观又容易获得的信息。
搜索引擎开始工作时,既不知道要搜的网页入度大小(即不知道要访问的网页URL被哪些其他网页指向),也不知道网页内容是什么,所以对于表征网页重要性的第1、2、3项特征在搜集工作开始时无法确定。这些因素只能在获得网页或几乎所有的Web 链接结构之后才能够知道。只有特征4是不需要知道网页的内容(没有抓取网页之前)就可以确定某个URL是否符合“重要”的标准,而且网页URL目录深度的计算就是对字符串的处理,统计结果表明一般的URL长度都小于256个字符,这使得URL目录深度的判别易于实现。所以对于搜集策略的确定,特征4是最值得考虑的指导因素。
如前面所述,特征4具有局限性,所以首先探讨它对于决定网页重要度到底有多大的影响,采取什么样的措施能够尽量避免这种局限性带来的片面搜集,从而对搜集策略做出有效的调整。
由于搜集网页是由多台机器分布式协同工作的,所以搜集策略的制定是在系统的调度层就开始了,从系统的角度考虑,天网2.0搜集部分2由18台+2台机器冗余构成,采用了两阶段映射模型[Yan, et al.,2001a],[Yan, et al.,2001b]确保分配不同的URL给spider抓取,使不同的机器搜集回来的网页无重复。
对负责搜集的单个节点而言,根据网页URL的目录深度和链接关系设定权值,以决定网页重要度,并优先搜集权值大的网页。实现类似于宽度优先搜索的启发式搜集策略。这种搜集策略在实际系统运行中证明有很好的效果。以下主要阐述单个节点上的搜集策略。
以目录深度评估网页重要度,辅以下述的修正方法,在天网实际系统中应用,实际测试表明,可以达到比较好的搜集效果。
1) URL权值的设定:根据URL的目录深度来定,深度是多少,权值就减少多少,权值最小为零。
2) 设定URL初始权值为10(此值设定的越小,从未访问URL集合中排序输出就越快。但是也不能太小,否则URL的权值意义就不大了,导致搜集策略不明显);
3) URL中出现字符”/”,”?”,或”&” 1次,则权值减1,出现”search”,”proxy”,或”gate” 1次,则权值减2;最多减到零。(包含”?”,或”&”的URL是带参数的形式,需要经过被请求方程序服务获得网页,不是搜索引擎系统侧重的静态网页,因此权值相应降低。包含”search”,”proxy”,或”gate”,说明该网页极大可能是搜索引擎中检索的结果页面,代理页面,因此要降低权值)。
4) 选择未访问URL的策略。因为权值小不一定说明不重要,所以有必要给一定的机会搜集权值小的未访问URL。选择未访问URL的策略可以采用轮流的方法进行, 一次按照权值排序取,一次随机取;或者N次按照权值排序取,M次随机取(N1,M1)。N,M 的选择可以根据系统实际运行情况获得。 ≥≥
这种方法可以在搜到国内网页总量1/10的时候,已经覆盖了国内绝大多数站点。保证“重点突出、覆盖全面”。在具体实现中采用两次轮流充满待访问URL队列,可以保证不漏掉其他重要网页,做到兼顾。