6搜-高效的专用IPv6搜索引擎

2011-03-28 01:52黄皓凌张凡
电子设计工程 2011年23期
关键词:分词搜索引擎网页

黄皓凌,张凡

(深圳大学信息中心,广东深圳518060)

随着IPv4地址用尽,IPv6的推广正在加快步伐。中国从教育网开始建立IPv6网络,现在愈来愈多的网站支持IPv6。本文描述我们研制的专用IPv6搜索引擎[1]“6搜”。6搜只搜索支持IPv6协议的网站,即搜索只支持IPv6的网站也搜索既支持IPv6又支持IPv4的网站,如果一个网站仅支持IPv4则不在6搜搜索范围之内,不管这个网站的内容与IPv6主题有关与否。

其他IPv6搜索引擎包括CERNET网络中心自主开发的网络指南针[2],上海交通大学的IPv6网站搜索引擎Search6[3],华南理工大学广东省网络重点实验室和华中科技大学、北京大学、清华大学联合研制的下一代互联网分布式搜索引擎Se6[4]。

另一个与IPv6有关的搜索引擎是谷歌IPv6。但它不是一个“IPv6搜索引擎”,也不是“专用IPv6搜索引擎”。谷歌IPv6搜索的回复内容和谷歌IPv4网站搜索回复的内容是完全一样的。谷歌IPv6没有提供功能以区分网站支持IPv6还是IPv4,或两者都支持。谷歌IPv6的搜索回复内容既包含IPv4网站的网页也包含IPv6网站的网页。用户无法区分,除非用户只有IPv4或IPv6而导致点击仅支持所缺协议的网站会无法连接。ipv6.google.com是www.google.com在IPv6上的镜像,用户可以通过IPv6访问谷歌原有的的搜索引擎。所以称ipv6.google.com为IPv6搜索引擎是不合适的。它是一个“支持IPv6的搜索引擎”。这里支持有两个方面,一是支持用户通过IPv6访问,二是搜索内容包括支持IPv6的网站。如果从第二方面讲,www.google.com也是“支持IPv6的搜索引擎”,因为其搜索内容中也包含支持IPv6的网站。但用户不能通过IPv6访问www.google.com。所以通常不认为它是“支持IPv6的搜索引擎”。

6搜现在收集有近2000万IPv6网页,而且网页在不断更新,包括中国和国外的网页。查询回复时间在一秒以内。相比之下,网络指南针使用的是wget程序采集网页,而非使用专用的网页采集程序。Se6网页数比较多但搜索回复时间比较长,并且不是专用的IPv6搜索引擎,也搜索IPv4网页。Search6没有中文分词功能,没有搜索网站功能,网页数量少。

1 6搜的设计和结构

在研制6搜的过程中,在开源搜索引擎Nutch[5]的基础上进行了修改、调整和创新。6搜网页采集速度在每秒100页以上,可以迅速判断网站是否支持IPv6,跳过只支持IPv4的网站,专搜支持IPv6的网站。6搜显示搜索结果时同时提供“搜索”和“搜索网站”功能,此为6搜的创新点之一。搜索是搜索网页,在所有含关键字的网页被找到后进行排序。因为IPv6网站的数目少于IPv4网站的数目,排序之后时常会发生搜索结果中一部分或者相当多的网页是来自相同的网站。“搜索”功能不对这样的结果进行修改。而6搜的“搜索网站”功能对搜索结果进行合并,按照每个网站排名最高的网页对网站进行排名。

描述“搜索网站”结果的算法如下:

Algorithm 1搜索网站

Require:排序后的网页URL字符串数组pages(索引范围从1到n)

建立包含两个字符串域site,top_page结构的数组sites

j←1

for i=1 to n do

site_of_page←pages[i]所在的网站

if(site_of_page∈sites[1 to j-1].site)=false then

sites[j].site←site_of_page

sites[j].top_page←pages[i]

j←j+1

end if

end for

{按顺序逐个输出sites内的网站和网页,在每个网页的下方建立一个链接指向此

网站的更多网页}

for j=1 to j-1 do

print site[j].top_page

print摘要

print超链接含有anchor文本:site[j].site+“网站内更多搜索结果”

end for

实现这个算法的方法是把Nutch提供的搜索结果处理程序进行修改。

以下以实例描述搜索网站和搜索的区别以及搜索网站功能的特点。在6搜按搜索键搜索“传感器”关键字的结果是:

第1-10项(共有3,738项查询结果):

2010无线传感器网络及物联网技术国际研讨会-教育信息化-中国教育和科研计算机网CERNET

...交流阶段,紧密围绕无线传感器网络应用关键技术和工业界...传感器网络产业技术开发、无线传感器...117亿会议信息2010无线...

http://www.edu.cn/xs_hui_yi_5674/20101125/t20101125_544371.shtml cached explain anchors

物联网传感器芯片三年后30%国产化-教育信息化-中国教育和科研计算机网CERNET

...普通轿车约安装一百多只传感器,豪华轿车传感器甚至多达二百余只。(文章...IPv6如何大显身手?物联网传感器...

http://www.edu.cn/gjjs_7951/20100914/t20100914_521589.shtm l cached explain anchors

三大技术推进物联网的实现:IPv6传感器云-教育信息化-中国教育和科研计算机网CERNET

...技术推进物联网的实现:IPv6传感器云-教育信息化-中国教育...技术推进物联网的实现:IPv6传感器云http://www.edu.cn 2011-01-05作者...

http://www.edu.cn/pl_9660/20110105/t20110105_566637.shtm l cached explain anchors

注意到排名前三位的网页均出自www.edu.cn。相比之下,在6搜按“搜索网站”键搜索“传感器”关键字的结果是:

第1-10项(共有3,738项查询结果):

2010无线传感器网络及物联网技术国际研讨会-教育信息化-中国教育和科研计算机网CERNET

...交流阶段,紧密围绕无线传感器网络应用关键技术和工业界...传感器网络产业技术开发、无线传感器...117亿会议信息2010无线...

http://www.edu.cn/xs_hui_yi_5674/20101125/t20101125_544371.shtm l cached explain anchors

www.edu.cn网站内更多搜索结果

清华大学-Tsinghua University

...基于频率变化的数字量传感器

http://www.tsinghua.edu.cn/publish/th/6176/index.htm l cached explain anchors

www.tsinghua.edu.cn网站内更多搜索结果

开放课题指南

...异构性强、数量庞大的无线传感器网络,研究无线传感器网络的管理架构、管理信息...效率分析。课题2:无线...

http://www.int.bupt.cn/topic/2009-08-13-17-26-21.htm l cached explain anchors

www.int.bupt.cn网站内更多搜索结果

搜索网站结果中,除了www.edu.cn网站排第一位的网页被保留以外,其它所有出自www.edu.cn网站的网页都不再显示,取而代之的是www.edu.cn网站内更多搜索结果的链接。其他网页下面也有各自的…网站内更多搜索结果的链接。

Google搜索的网站因含纯IPv4网站,所以数量多,出现搜索结果中含有多个网页出于同一个网站并且排名连续的情况比较少,但这个问题有时会出现,比如在Google搜索关键词“Java”有以下结果:

1)Download Free Java Software

This page is your source to download or update your existing Java Runtime Environment,also known as the Java Virtual Machine(JVM,VM,and Java VM),...

www.java.com/getjava/-Cached

2)java.com:Java+You

Get the latest Java Software and explore how Java technology provides a...

www.java.com/-Cached-Similar

3)What is Java and why do I need it?

Java is a programming language and computing platform first released by Sun...

www.java.com/en/download/faq/whatis_java.xm l-Cached-Similar

Show more results from java.com

4)Java(programming language)-Wikipedia,the free encyclopedia

Java is a programming language originally developed by James Gosling at Sun Microsystems(which is now a subsidiary of Oracle Corporation)and released in...

en.wikipedia.org/wiki/Java_(programming_language)-Cached-Similar

注意到第3项有Show more results from java.com而第4项却没有Show more results from en.wikipedia.org。给人印象是java.com网站里有多个含有java关键字的网页而维基百科没有,实际上维基百科(en.wikipedia.org)里含有Java词条也不止一个,比如http://en.wikipedia.org/wiki/Java就是一个维基百科里Java的搜索结果,但是谷歌并没有提供“显示更多维基百科的Java搜索结果”链接使得用户可以通过点击这个链接而同时看到Java编程语言和Java(爪哇)岛的条目。6搜的“搜索网页”功能会在维基百科的结果下列出Show more results from en.wikipedia.org。原Nutch的搜索结果呈现方法是每个网站只列出排名最高的前两个网页,而在每个网站第一个网页的下方列出其网站(more from http://...)提示用户点击以列出网站中的其它搜索结果。网页下方换页的键是next page。在显示了几页后,显示页面下方的键从next page换为show all hits,用户点击show all hits以后,Nutch转入网页列出模式,列出所有网页而不列出网站。这样就常会出现多个网页出自同一个网站,而且这些网页往往在排名上是连续的,在屏幕上连在一起。Nutch这种中途转换显示方式的方法虽然提供了两种不同的结果显示方法,但却使不少用户感到迷惑,因为这种结果显示方式和其他搜索引擎的显示方式不同。

6搜的创新解决方法是提供前面提到的“搜索网站”功能。在实现过程中,对Nutch源代码进行修改。在Nutch源码中每个网站列出的网页数是可以选择的,6搜设置每个网站列出的网页数为1而且提供在这个参数下的搜索结果为搜索网站的搜索结果(再加上网站链接)。所以6搜的搜索网站的搜索结果是网站和这些网站排名最前的网页。网站的排名是由网站内排名最前的网页的排名决定的。6搜直接提供“搜索”和“搜索网站”的功能而不是象Nutch那样在显示了几页结果之后转入另一种模式。用户从开始有了选择搜索方式的选项。

谷歌使用的是一种既含有搜索又含有搜索网站的搜索结果呈现方式。谷歌根据算法列出有些网页所在的网站,而对有些网页则不列出其网站,即使在同一网站有其他网页有相同的关键字。百度搜索结果似乎全部是网页。以Java的搜索结果为例,在第1页里百度并没有列出www.java.com更多搜索的结果的链接,而仅在tieba.baidu.com的一个网页下显示“更多贴吧相关讨论”。

6搜是基于开源搜索引擎Nutch 1.1版。Nutch是基于Lucene搜索引擎。Nutch和Lucene都使用Java语言,可以支持分布式,几亿或更多网页的搜索。Nutch网络爬虫的原理是从种子网站出发,一层一层采集由超链接连接起来的网页。每遍历一层把收取的网页进行分析,筛选出排名最高的网页进行下一次的采集。总的来说,采集IPv6网页的方法有两种,一是从IPv6的网站种子出发,跟随IPv6的超链接进行采集,这样收集到的网页从种子到网页都是经过IPv6网站的超链接。另一种方法是从种子出发收集IPv6和IPv4网页,并对每个网页进行标记(IPv6和∕或IPv4),搜索时根据需要提供IPv6、IPv4的网页。如果不使用超链接遍历,采取IP地址的全范围采集,在IPv6地址域上是难以进行的,因为IPv6地址数量巨大,有3.4×1038个地址,不可能在较短时间内遍历地址。

6搜采取的是IPv6超链接遍历法。以网上收集到的IPv6网站做种子作为采集的开始。以下介绍为了进行IPv6网页采集对Nutch爬虫的修改。Nutch的爬虫有一个队列填充器,多个队列,(其中每个队列对应一个网站,即是同一个网站在本次将被收集的所有网页都在一个队列里),多个采集网页的线程。在采集网页线程中做如下判断,如果进行IPv6网页采集(这个功能在程序运行时用一个开关-ipv6控制,如果没有这个选项,网页爬虫不进行IPv6过滤),对每个网站主机名做一次IP地址查询。因为一个网站可能有IPv4地址或IPv6地址,或既有IPv4地址又有IPv6地址,6搜把查询结果的返回顺序设为先返回IPv6地址,后返回IPv4地址。如果返回的地址是IPv4在先,就说明这个网站没有IPv6地址,是一个纯IPv4网站,6搜采集网页线程即跳过这个网站不进行采集。如果先返回的地址是IPv6,说明这是一个支持IPv6的网站,6搜不管下一个地址是不是IPv4地址,采集网页线程会开始采集这个网页。

提高网页采集速度可以在同样的时间内采集更多的网页,还可以加快网页更新的速度。采集网页线程进行多线程地址查询的时候需要进行高速、并行的地址解析。Java的地址解析函数InetAddress.getHostAddress自带缓存[6],如果有查询到已经查询过的网站,InetAddress会在缓存中查找地址,速度很快。缓存项的保留时间需要被改得长一些,比如两个星期。但是这个缓存在JVM运行之后就会消失,下次运行爬虫的时候又要进行缓存的建立过程,而这个建立过程是比较缓慢的,通常要等一段时间以后大部分的域名才被加入缓存。进一步的方法是同时使用建立在服务器上的专用缓存DNS服务器。6搜使用BIND,在Recursive DNS Cache模式上实现。缓存项保存时间设为三个星期。这样,缓存项就长期保存在专用DNS服务器里面。

6搜爬虫有时会遇到截短的zip文件,它们会导致zip解析/解压器进入无限循环而降低网页采集速度并加重服务器的负载。解决这个问题需要下载apache-commons-compres-1.1.jar替换原先在plugins/parse-tika目录里的1.0版本。

能处理中文的搜索引擎需要有中文分词功能,中文分词就是把一个中文的句子分成词,如果没有特制的中文分词功能,最简单的方法就是每个字被分作一个词。如果这样搜索“互联网”会把含有“互”、“联”、“网”单字的网页也搜索出来。Nutch自带的中文分词即是把每个字分做一个词。6搜整合了极易中文分词JEAnalysis[7]以实现中文分词功能。

2 6搜采集的数据

6搜自从2010年11月上线以来到2011年6月,采集了54195个IPv6网站的网页。其中IPv6网站最多的顶级域名如表1和图1所示。

图1 世界IPv6网站分布Fig.1 World IPv6 web site distribution

根据IPv6论坛发布,截止2011年6月8日,全球共有1 206个网站获得IPv6 Enabled WWW Logo,其中中国大陆有276个网站获得Logo,占全球总量的25%左右,居世界首位[8]。相比之下,6搜记录的是网络爬虫采集过网页的网站,其中一些是使用虚拟主机(Virtual Hosting)共享IP地址的网站,包括博客网站等,与IPv6论坛手工登记的网站不完全相同。

3 与IPv6有关的搜索引擎

6搜与其它与IPv6有关的搜索引擎在表2中比较。6搜自2011年11月上线两个月后在多个主流搜索引擎(百度,谷歌,搜狗,搜搜)“IPv6搜索”关键字搜索下均排名领先。

4 结束语

6搜是已知目前国内领先的专用IPv6搜索引擎。6搜协助推广IPv6网络,为用户提供IPv6内容详细搜索。并且,对已采集IPv6网站的统计也展示了IPv6的快速发展状况。由于IPv6上的一项重要应用是物联网,IPv6物联网搜索是今后研究的一个课题。另外随着IPv6的普及,IPv6网站内容越来越多,6搜的采集规模也将逐步扩大。

表1 世界IPv6网站分布Tab.1 World IPv6 web site distribution

表2 与IPv6有关的搜索引擎比较Tab.2 IPv6 related search engine comparison

[1] 黄皓凌,张凡.6搜[EB/OL].(2011-07-05).http://6sou.szu.edu.cn.

[2]叶绍志,刘辉,李粤,等.从搜索引擎看IPv6网络增长[J].中兴通讯技术,2002,8(3):1-3.YE Shao-zhi,LIU Hui,LI Yue,et al.Viewing the growth of IPv6 networks through search engine[J].ZTE Technology Journal,2002,8(3):1-3.

[3] 上海交通大学网络信息中心.Search6[EB/OL].(2011-07-05).http://search6.sjtu.edu.cn

[4] 华南理工大学广东省网络重点实验室.下一代互联网分布式搜索引擎[EB/OL].华南理工大学,(2011-07-05).http://www.se6.edu.cn

[5] Apache Nutch.Nutch[EB/OL].(2011-07-05).http://nutch.apache.org

[6] Heydon A,Najork M.Mercator:A scalable,extensible Web crawler[J].World Wide Web,1999,2(4):219-229.

[7] 极易软件.极易中文分词[EB/OL].(2010-11-01).http://jesoft.cn:9080.

[8] IPv6论坛.全球支持IPv6网站破千中国大陆位居第一[EB/OL].(2011-07-05).http://www.ipv6day.cn/ipv6day.aspArticleID=563

[9] 李明.百度将于今年三季度正式提供IPv6访问服务.[EB/OL].(2011-07-5)http://www.cnbeta.com/articles/139543.htm.

猜你喜欢
分词搜索引擎网页
分词在英语教学中的妙用
结巴分词在词云中的应用
结巴分词在词云中的应用
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
网页制作在英语教学中的应用
网络搜索引擎亟待规范
基于Nutch的医疗搜索引擎的研究与开发
基于Lucene搜索引擎的研究