基于Nutch的新闻主题搜索引擎的设计与实现毕业论文_第1页
基于Nutch的新闻主题搜索引擎的设计与实现毕业论文_第2页
基于Nutch的新闻主题搜索引擎的设计与实现毕业论文_第3页
基于Nutch的新闻主题搜索引擎的设计与实现毕业论文_第4页
基于Nutch的新闻主题搜索引擎的设计与实现毕业论文_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE50 / NUMPAGES56毕 业 论 文(设 计)论文(设计)题目: 基于Nutch的新闻主题搜索引擎的设计与实现姓 名学 号学 院专业年 级指导教师2014年 5月20日目 录 TOC o 1-3 h z u HYPERLINK l _Toc388948687 摘要 PAGEREF _Toc388948687 h I HYPERLINK l _Toc388948688 ABSTRACT PAGEREF _Toc388948688 h II HYPERLINK l _Toc388948689 第1章绪论 PAGEREF _Toc388948689 h 1 HYPERLINK l

2、_Toc388948690 1.1 课题研究背景 PAGEREF _Toc388948690 h 1 HYPERLINK l _Toc388948691 1.1.1 搜索引擎发展史 PAGEREF _Toc388948691 h 1 HYPERLINK l _Toc388948692 1.1.2 通用搜索引擎面临的问题 PAGEREF _Toc388948692 h 3 HYPERLINK l _Toc388948693 1.2主题搜索引擎 PAGEREF _Toc388948693 h 3 HYPERLINK l _Toc388948694 1.2.1 什么是主题搜索引擎 PAGEREF _

3、Toc388948694 h 3 HYPERLINK l _Toc388948695 1.2.2 主题搜索引擎研究现状 PAGEREF _Toc388948695 h 4 HYPERLINK l _Toc388948696 1.3 文本组织结构 PAGEREF _Toc388948696 h 5 HYPERLINK l _Toc388948697 第2章主题搜索引擎相关技术介绍 PAGEREF _Toc388948697 h 6 HYPERLINK l _Toc388948698 2.1 JavaCC简介 PAGEREF _Toc388948698 h 6 HYPERLINK l _Toc38

4、8948699 2.2 Tomcat 简介 PAGEREF _Toc388948699 h 8 HYPERLINK l _Toc388948700 2.3 Nutch介绍 PAGEREF _Toc388948700 h 9 HYPERLINK l _Toc388948701 2.3.1 系统架构 PAGEREF _Toc388948701 h 9 HYPERLINK l _Toc388948702 2.3.2 抓取过程详解 PAGEREF _Toc388948702 h 11 HYPERLINK l _Toc388948703 2.4 中文分词技术 PAGEREF _Toc388948703

5、h 13 HYPERLINK l _Toc388948704 2.4.1 基于字典匹配的分词方法 PAGEREF _Toc388948704 h 14 HYPERLINK l _Toc388948705 2.4.2 基于词频统计的分词方法 PAGEREF _Toc388948705 h 14 HYPERLINK l _Toc388948706 2.4.3 基于语义理解的分词方法 PAGEREF _Toc388948706 h 15 HYPERLINK l _Toc388948707 2.4.4 IK分词器简介 PAGEREF _Toc388948707 h 15 HYPERLINK l _To

6、c388948708 2.5 本章小结 PAGEREF _Toc388948708 h 15 HYPERLINK l _Toc388948709 第3章爬虫搜索策略的研究 PAGEREF _Toc388948709 h 16 HYPERLINK l _Toc388948710 3.1 基于结构特征 PAGEREF _Toc388948710 h 16 HYPERLINK l _Toc388948711 3.1.1 PageRank算法 PAGEREF _Toc388948711 h 16 HYPERLINK l _Toc388948712 3.1.2 HITS算法 PAGEREF _Toc38

7、8948712 h 18 HYPERLINK l _Toc388948713 3.1.3 本文实现的算法 PAGEREF _Toc388948713 h 19 HYPERLINK l _Toc388948714 3.2 基于容评价 PAGEREF _Toc388948714 h 20 HYPERLINK l _Toc388948715 3.2.1 Fish Search算法 PAGEREF _Toc388948715 h 20 HYPERLINK l _Toc388948716 3.2.2 Shark Search算法 PAGEREF _Toc388948716 h 21 HYPERLINK

8、l _Toc388948717 3.3 其他相关策略 PAGEREF _Toc388948717 h 23 HYPERLINK l _Toc388948718 3.3.1基于巩固学习的聚焦搜索 PAGEREF _Toc388948718 h 23 HYPERLINK l _Toc388948719 3.3.2 基于语境图的聚焦搜索 PAGEREF _Toc388948719 h 23 HYPERLINK l _Toc388948720 3.4 本章小结 PAGEREF _Toc388948720 h 23 HYPERLINK l _Toc388948721 第4章主题搜索引擎的实现 PAGER

9、EF _Toc388948721 h 24 HYPERLINK l _Toc388948722 4.1 开发环境介绍 PAGEREF _Toc388948722 h 24 HYPERLINK l _Toc388948723 4.2 系统的体系结构 PAGEREF _Toc388948723 h 24 HYPERLINK l _Toc388948724 4.3 主题爬虫的配置 PAGEREF _Toc388948724 h 25 HYPERLINK l _Toc388948725 4.3.1 配置Java环境 PAGEREF _Toc388948725 h 25 HYPERLINK l _Toc

10、388948726 4.3.2 配置Nutch PAGEREF _Toc388948726 h 25 HYPERLINK l _Toc388948727 4.4 Tomcat的配置 PAGEREF _Toc388948727 h 26 HYPERLINK l _Toc388948728 4.5 添加中文分词 PAGEREF _Toc388948728 h 28 HYPERLINK l _Toc388948729 4.6 系统测试 PAGEREF _Toc388948729 h 30 HYPERLINK l _Toc388948730 4.7 本章小结 PAGEREF _Toc388948730

11、 h 31 HYPERLINK l _Toc388948731 第5章总结与体会 PAGEREF _Toc388948731 h 32 HYPERLINK l _Toc388948732 致 PAGEREF _Toc388948732 h 33 HYPERLINK l _Toc388948733 参考文献 PAGEREF _Toc388948733 h 34 HYPERLINK l _Toc388948734 附录: PAGEREF _Toc388948734 h 35摘要互联网上丰富的信息资源给人们的工作和生活带来巨大效益和便利的同时,也带来了巨大的信息冗余。我们在使用传统的通用搜索引擎时,

12、经常会遇到这样的问题,为了搜索到一些专业的基础知识,不得不在众多的中,花费大量的时间去寻找,而主题搜索引擎的出现为解决这类问题提供了很好的方法。另外,由于Nutch具有高透明度,任何单位或个人都可以查看搜索引擎的工作原理并且程序设置灵活,用户可以根据自己需求定制,通过长时间的实际应用,结果表明Nutch运行非常稳定,因此选择Nutch为爱好搜索引擎的人们提供了一个很好的研究平台。本课题的主要容是基于Nutch的新闻主题搜索引擎的设计与实现。现在很多人都喜欢从互联网阅读新闻,但是各大新闻为了获得点击率收录了很多低质量新闻,而报纸很难满足人们对不同地域和不同类型新闻的需求,所以一个新闻主题的搜索引

13、擎是十分有必要的。论文首先介绍了搜索引擎的发展历史、面临的问题,以与主题搜索引擎的的优势和研究现状,并在了解Nutch工作原理的基础上对主题爬虫抓取策略进了详细的讨论,分析了新闻主题搜索引擎的可行方案,接着介绍了Nutch、Tomcat等各组件的安装配置,测试运行结果并与百度做比较。最后对论文进行了总结分析。关键字:Nutch;搜索引擎;Crawler;抓取策略;新闻ABSTRACTAbundant Internet information resources bring enormous benefits and convenience for our work and life; thes

14、e also bring a great deal of redundant information. When we use general Search Engine, weoften encounter this problem; in order to search some basic professional knowledge, we had to spend alot of time to find the knowledge in many websites. While the Vertical Search Engine willsolve this problem. I

15、n addition, Nutch has highly transparent, any unit or individual can view the searchengine work, and the program configuration flexibility, Users can customize according totheir needs. Through a long period of practical application, the results show that Nutch runsvery stable. Therefore, selecting t

16、he Nutch Search Engine can provide a good researchingplatform for the loving people.The object of this project is to set up a News Vertical Search Engine based on Nutch. Nowadays plenty of people read news from the Internet. While the news websites always put some low-quality news to catch readers e

17、yes, and the newspaper websites can hardly feed readers various needs. Thus, it is very necessary to provide a News Vertical Search Engine for them. The paper first introduced the history, present problems of Search Engine, and the advantages, present situation of Topical Search Engine. Then we disc

18、ussed the strategies of Focused Crawler and proposed a solution of News Topical Search Engine with knowledge in the process of Nutch. After that, we talked about setting up and configuring the components we need. Then we ran the engine so we could compare the results with Baidus. At last, we tested

19、the Search Engine and made a summary of this project.Keywords: Nutch; Search Engine; Crawler; Fetching Strategy; News 第1章 绪论1.1 课题研究背景随着社会的进步和科技的发展,人们对信息的需求量越来越大,对质量的要求也越来越高。而互联网已经成为很多人获取信息的主要渠道。怎样从海量的信息和庞大的地址群中找到自己想要的信息呢?搜索引擎的出现很好的解决了这个问题,成为大多数用户的“上网第一站”1。1.1.1搜索引擎发展史所谓搜索引擎,就是一种能够自动对WWW资源建立索引或进行主题分

20、类,并通过查询为用户返回相关资源的系统。在互联网发展初期,相对较少,信息查找比较容易。然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索便应运而生了。 现代意义上的搜索引擎的祖先,是1990年由蒙特利尔大学学生Alan Emtage发明的Archie。虽然当时World Wide Web还未出现,但网络中文件传输还是相当频繁的,而且由于大量的文件散布在各个分散的FTP主机中,查询起来非常不便,因此Alan Emtage想到了开发一个可以以文件名查找文件的系统,于是便有了Archie2。 Archie工作原理与现在的搜索引擎已经很接近,

21、它依靠脚本程序自动搜索网上的文件,然后对有关信息进行索引,供使用者以一定的表达式查询。由于Archie深受用户欢迎,受其启发,美达大学于1993年开发了另一个与之非常相似的搜索工具System Computing Services,不过此时的搜索工具除了索引文件外,已能检索网页。 当时,“机器人”一词在编程者中十分流行。电脑“机器人”(Computer Robot)是指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。由于专门用于检索信息的“机器人”程序象蜘蛛一样在网络间爬来爬去,因此,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。 世界上第一个用于监测互联网发展规模的“机器人”程序是

22、Matthew Gray开发的World wide Web Wanderer。刚开始它只用来统计互联网上的服务器数量,后来则发展为能够检索域名。 与Wanderer相对应,Martin Koster于1993年10月创建了ALIWEB,它是Archie的 版本3。ALIWEB不使用“机器人”程序,而是靠主动提交信息来建立自己的索引,类似于现在我们熟知的Yahoo。 随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此,在Matthew Gray的Wanderer基础上,一些编程者将传统的“蜘蛛”程序工作原理作了些改进。其设想是,既然所有网页都可能有连向其他的,那么从跟踪一个的开始

23、,就有可能检索整个互联网。到1993年底,一些基于此原理的搜索引擎开始纷纷涌现,其中以JumpStation、The World Wide Web Worm(Goto的前身,也就是今天Overture),和Repository-Based Software Engineering (RBSE) spider最负盛名。 然而JumpStation和WWW Worm只是以搜索工具在数据库中找到匹配信息的先后次序排列搜索结果,因此毫无信息关联度可言。而RBSE是第一个在搜索结果排列中引入关键字串匹配程度概念的引擎。 最早现代意义上的搜索引擎出现于1994年7月。当时Michael Mauldin将J

24、ohn Leavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycos4。同年4月,斯坦福(Stanford)大学的两名博士生,David Filo和美籍华人致远(Gerry Yang)共同创办了超级目录索引Yahoo,并成功地使搜索引擎的概念深入人心。从此搜索引擎进入了高速发展时期。目前,互联网上有名有姓的搜索引擎已达数百家,其检索的信息量也与从前不可同日而语。比如最近风头正劲的Google,其数据库中存放的网页已达30亿之巨! 随着互联网规模的急剧膨胀,一家搜索引擎光靠自己单打独斗已无法适应目前的市场状况,因此现在搜索引擎之间开始出现了分工协作,并有了专业的搜索引擎技术和搜索数

25、据库服务提供商。象国外的Inktomi(已被Yahoo收购),它本身并不是直接面向用户的搜索引擎,但向包括Overture(原GoTo,已被Yahoo收购)、LookSmart、MSN、HotBot等在的其他搜索引擎提供全文网页搜索服务。国的百度也属于这一类,搜狐和新浪用的就是它的技术。因此从这个意义上说,它们是搜索引擎的搜索引擎。1.1.2 通用搜索引擎面临的问题通用搜索引擎信息采集的目标就是尽可能多地采集信息、页面,甚至是整个Web上的资源。随着WWW信息的爆炸性增长,信息采集的速度越来越不能满足实际应用的需要。最近的试验表明,即使大型的搜索引擎,它对Web的覆盖率也只有30-40%。解决

26、这一问题的直接办法是升级信息采集器的硬件,采用处理能力更强的计算机系统,然而这种方法的扩展性有限,性价比也不高。一个更好的解决方法是采用分布式方法来提高并行能力,但是并行不但增加了系统的开销和设计的复杂性,并且并行换来的效益也随着并行采集器数目的增加而显著地减小。目前,一般的大型搜索引擎都采用了并行机制,但并行带来的改善效果仍远不能满足人们的需要,人们需要从其它角度改善目前的困境。针对上述情况,另一种形式的搜索引擎悄然出现,它可以在较小的围取得比通用搜索引擎更令人满意的结果,以满足某些特定用户的需要,这就是主题搜索引擎。1.2主题搜索引擎1.2.1 什么是主题搜索引擎所谓主题搜索引擎(Topi

27、cal Search Engine),是针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩。它是与通用搜索引擎截然不同的引擎类型。主题搜索引擎专注具体、深入的纵向服务,致力于某一特定领域信息的全面和容的深入,这个领域外的闲杂信息不收录。从竞争的角度来讲,主题搜索引擎要做通用搜索引擎无法做到的事情,或者说,要做得更胜一筹。通用搜索引擎像一堵大墙,而墙上有很多裂纹,主题搜索引擎就是要去补这些墙上的裂纹5。1.2.2主题搜索引擎研究现状主题搜索引擎的优势,将决定它在互联网的一席之地。那么主题搜索的突破点和创新的东西在哪里?实时性主题

28、搜索引擎需要获取的信息来自于某一特定领域的,这比起通用搜索引擎漫无边际的信息抓取,有一个非常大的优势,那就是信息的实时性。由于互联网上的信息量非常巨大,通用搜索引擎的数据更新周期短则十几天,长则几个月,而主题搜索引擎的数据更新完全可以以秒为单位。酷讯(kooxoo.)的火车票搜索就是典型的实时性主题搜索。数据挖掘分析行业的历史发展、最新动向、趋势都是行业从业人员非常关注的话题。主题搜索引擎集中了行业海量的信息和数据,基于这些信息和数据的商务智能分析,将为行业创造非常有价值的信息增值服务。目前,各个主题搜索引擎开始加强数据分析功能,分析的结果尚未向公众免费开放,毕竟,这也是一个非常好的盈利点。个

29、性化,社会化 查询服务只是主题搜索引擎的一部分,主题搜索引擎在用户的个性化方向的发展非常重要。主题搜索引擎不能只提供一个窗口,它应该是一个用户高度参与交互的社会化平台。这不光是用户粘度,忠诚度的问题,更为重要的是,主题搜索引擎需要能够获取并且分析用户的偏好信息,从而提供更加完善而且准确的数据服务。职友集(.jobui.)可以说走在了前面,其职友圈为找工作的人提供了参与性很高的平台。智能化语义网 语义网(Semantic Web)将有可能成为下一代互联网,这样网络上的数据和信息将被计算机程序所理解。这将为主题搜索引擎提供一个巨大的机会,爬虫程序如果能理解网络上的数据,将对信息的收集和整理更加准确

30、和专业,搜索服务的查全率和查准率将更高。国外的Pluggd(.Pluggd.)正在向这个方向努力。多元化查询目前的搜索引擎,都只局限于关键字搜索,其中主要的原因是,对用户的查询需求无法建模,无法模式化。而关键字搜索带来的问题是,搜索结果过多,并且不准确。互联网信息量越大,这种情况越严重,可以说是灾难。多元化查询服务的提供,将会成为对竞争对手的杀手锏。Riya(.riya.)正在这方面尝试,它提出了可视化查询(Visual Search)的概念6。1.3 文本组织结构本文共分为五章,全文结构安排如下:第一章绪论主要介绍了课题的研究背景以与发展现状;第二章总体介绍了开发主题搜索引擎所用到的各个组件

31、与软件,其中重点介绍了Nutch搜索引擎的系统架构、Crawler的组成和Crawler的工作流程以与中文分词的实现方法;第三章讨论了几种实现主题爬取的爬虫搜索策略,包括本文所使用的爬虫策略;第四章是基于Nutch的主题搜索引擎的具体实现,包括开发环境的搭建、环境变量的设置、主题爬虫和索引的设计;第五章为本论文的结束语,对本次设计做了总结和展望。第2章 主题搜索引擎相关技术介绍因为本文是在Apache的两个开源项目Nutch、Tomcat的基础上进行主题判别,而这两个项目的相关资料很少,只有在了解其工作原理的基础上才能做更好的改进,所以我们通过本章来分析项目中的关键技术。2.1 JavaCC简

32、介JavaCC是一个功能极其强大的“编译器的编译器”工具,可用于编制上下文无关的语法,集分词和语法分析于一身的针对Java语言的文本自动分词软件包,类似于UNIX系统中的LEX和YACC工具。JavaCC把这两者的功能结合,形成了一个功能强大的分析工具。用户只需写出分析脚本,JavaCC就会生成符合用户要求的类,用来进行词法和语法分析。JavaCC使用了自动机的理论,而不是递归下降分析,Nutch正是利用JavaCC这个十分强大的工具,生成系统的分词器。JavaCC的语法定义是由正规式 (RegularExpression)来完成的7。这里指的是上下文无关文法。理解形式文法的定义,才能更好地理

33、解和使用JavaCC。在一种语言中,存在非终结符和终结符两种单词。正规式就定义了一个非终结符怎样被替换为另一个字符串。正规式可以描述一种语言,符合该正规式定义的所有句子都是这个语言的句子。或者,正规式描述了正规文法,又称线性文法,或上下文无关文法。称为线性是因为这种文法可以从前到后顺序的被指定为一个句子。JavaCC的语法定义功能十分强大,可以做几乎所有的限制和指定。JavaCC的长处在于它的简单性和可扩展性。要编译由JavaCC生成的Java代码,无需任何外部JAR文件或目录。仅仅用基本的编译器就可以进行编译。而该语言的布局也使得它易于添加产生式规则和行为。JavacCC的输入文本是一个词法

34、和语法的规文件,其中也包括一些动作的描述,它的后缀应该是jj。一个jj文本由下面几个部分构成:Options部分:这个部分对产生的语法分析器的特性进行说明,例如向前看的token的个数(用来解除冲突)。这一部分是可以省略的,因为每一个选项都有默认值,当我们没有对某个选项进行说明时,它就采用默认值。也可以把这些选项作为JavaCC命令的参数来启动JavaCC,可以达到同样的效果。分析器类的声明:这个部分指定了分析器类的名字,以与其他类中成员的声明。这个部分是必须有的。这个部分的声明如下:PARSER_BEGIN(elassname)ClasselassnamePARSER_END(classna

35、me)8词法部分的声明:这里面有四类:SKIP、TOKEN、SPECIALJOKEN、MORE。其中,SKIP用来说明被忽略的串,TOKEN用来说明在词法层次上识别的token。在词法声明部分,以#开头的token只是在词法分析时使用,不能作为语法分析的输入,也就是说,它相对词法分析是局部的。语法声明和动作代码:这一部分生成的代码会直接插入分析器类声明的结束括号之前。一般而言,语法中的每一个非终结符都对应一个函数。以上说明的是jj文件的组成部分,下面再说明一下jj文件中语法的表示方法。JavaCC中的语法表示吸收了UNIX中正规文法的一些记号:其中的容是可选的。+:前面的容出现一次或多次。-:

36、前后构成的闭区间。 *:前面的容出现0次或多次。?:前面的容出现0次或一次。:后面的容的补。| :前面或后面。():改变运算的优先级,把其中的容作为一个整体9。利用JavaCC构造中文分析模块:JavaCC是根据西方语言的形式文法理论设计的,不能直接解决中文问题。当仔细研究后,发现所谓的“中文问题”实际上就是如何把上下文无关文法转变为上下文相关文法。EBNF当然不能解决这个问题。通过写入Java代码,用各种对象和标志变量制作特殊的“上下文”环境,就可以实现JavaCC的中文分词。Nutch原来的脚本在TOKEN段进行了精细的刻画,对于英文单词、主机地址、电子地址、数字、缩写等各种格式都进行了考

37、虑。只需利用中文分词功能,直接传入中文句子,得到ArrayList类型的返回结果。因此,所做的工作就是事先分出一个全部是中文的字符串,这一点通过下面的定义实现:CHINESE: ()+ (“”)上面的CHINESE的定义为:由汉字开头,包含汉字或空格的最长的字符串,而汉字则定义为CJK。CJK即中国、日本、朝鲜和国使用的中国汉字的总称,全称为 CJK Ideographs(CJK象形文字),这是Unieode标准所定义的10。2.2 Tomcat简介用户一般通过浏览器进行查询,这就需要系统提供Web服务器并且与索引数据库进行连接。用户在浏览器中输入查询条件,Web服务器接收到用户的查询条件后在

38、索引数据库中进行查询、排列然后返回给用户。Web服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。在Web页面处理致可分为三个步骤,第一步,Web浏览器向一个特定的服务器发出Web页面请求;第二步,Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送给Web浏览器;第三步,Web服务器接收到所请求的Web页面,并将它显示出来。我们选择Tomcat的原因是因为它不仅仅是一个Servlet容器,也具有传统的Web服务器的功能,是Apache基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其它一些公司与个人共同开发

39、而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规总能在Tomcat中得到体现。本系统中用到的Tomeat6.0.26完整地实现了Servlet2.4和JavaServer Pages2.0规11。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。与传统的桌面应用程序不同,Tomcat中的应用程序是一个 WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个

40、目录很重要。在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。Tomcat能处理Html页面。在Tomcat中,可以利用Servlet提供的事件监听器功能,对应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集成到一块,实现安全传输。Tomcat与应用服务器的

41、主要区别是:应用服务器提供更多的J2EE特征,如E,JMS,JAAS等,同时也支持Jsp和Servlet。而Tomcat功能则没有那么强大,它不提供E等支持。但如果与oss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用E等技术,Jsp和Servlet己经足够,这时如果用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求。2.3 Nutch介绍2.3.1系统架构总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取部分抓取页面并把抓取回来的

42、数据做成倒排索引,搜索部分则搜索倒排索引以回答用户的请求。抓取部分和搜索部分的接口是索引,两者都使用索引中的字段。抓取部分和搜索部分可以分别位于不同的机器上。下面详细介绍一下抓取部分组成。抓取部分是由Nutch的抓取工具驱动的。这组工具用来建立和维护几个不同的数据结构:WebDB,segment,index。 WebDB。是一个特殊存储数据结构,保存被抓取数据的结构和属性,只被抓取程序使用,搜索程序并不使用它。WebDB存储2种实体:页面和。页面表示网络上的一个网页,这个网页的URL作为标识被索引,同时建立一个对网页容的MDS哈希签名,跟网页相关的其它容也被存储,主要包括:页面中的数量(外)、

43、页面抓取信息(在页面被重复抓取的情况下)、表示页面级别的分数 Score。表示从一个网页的到其它网页的。因此WebDB可以说是一个网络图,页面作为节点,是边。WebDB由以下数据组成:a、爬行数据库(crawdb):包含所有Nutch已知的URL,这个URL是否被爬过,如果被爬过,是什么时候。b、数据库(linkdb):这里面包含的信息是每个URL己知的信息。WebDB里有4个文件,在物理视图上是文件夹:pagesByURL:按URL排序的page对象数组pageSByMDS:按MD5排序的page对象数组linksByURL:按URL排序的Link对象数组linksByMDS:按MD5排序的

44、Link对象数组segment。被索引的网页集合。每个segment由5个文件夹组成,如果建立了索引就是六个文件夹。其中每个文件夹是一个ArrayFile对象。Segment的Fetehlist保存的是从WebDB中生成的抓取程序使用的URL列表。Fetcher文件夹里保存的是抓取状态信息,输出数据是从fetchlist中抓取到的网页。Fetcher的输出数据先被索引,索引后的结果存储在segment中。文件夹Content里保存抓取回来的网页容,包括 头信息和其它元信息。搜索时,如果选查看缓存页面,就从此处读数据。parse_data文件夹里保存的是从网页中解析出来的一些数据,例如元数据。p

45、arse_text文件夹中保存从网页中解析出来的文本数据。Segment的生命周期是有限制的,当下一轮抓取开始后它就没有用了。默认的重新抓取间隔是30天。因此可以删除超过这个时间期限的segment,而且也可以节省不少磁盘空间。Segment的命名是日期加时间,因此很直观的可以看出他们的存活周期。index。索引系统中所有被抓取的页面,它并不直接从页面产生,而是合并很多小的segment的索引。Nuteh使用Lueene来建立索引,但Lucene的segment的概念和Nutch的segment概念是完全不同的。简单来说Lucene的segment是Lucene索引库的一部分,而Nutch的S

46、egment是WebDB中被抓取和索引的一部分。2.3.2 抓取过程详解抓取是一个循环的过程:抓取工具从WebDB中生成了一个fetchlist集合;抽取工具根据fetchlist从Web上下载网页容;根据抽取工具发现的新更新WebDB;然后再生成新的fetchlist,周而复始。这个抓取循环在Nutch中经常指:generate/fetch/update循环12。一般来说同一域名下的URL会被合成到同一个fetchlist。当同时使用方法多个工具抓取的时候,这样做就不会产生重复抓取的现象。Nutch遵循Robots Exclusion协议,可以用robots.txt定义保护私有网页数据不被抓

47、去。此抓取工具的组合是Nutch最外层的,也可以直接使用更底层的工具。上述过程分别详述如下,括号是底层工具的名字:1、 创建一个新的 WebDB (admin db -create)2、 把开始抓取的根URL放入WebDB (inject)3、 从WebDB的新segment中生成fetchlist (generate)4、 根据fetchlist列表抓取网页的容 (fetch)5、 根据抓取回来的网页URL更新WebDB (updatedb)6、 重复上面3-5步直到达到指定抓取层数7、 用计算出来的网页URL权重scores更新segments (updatesegs)8、 对抓取回来的网

48、页建立索引 (index)9、 在索引中消除重复的容和重复的URL (dedup)10、合并多个索引到一个大索引,为搜索提供索引库 (merge)在创建了一个新的WebDB后,抓取循环generate/fetch/update就根据第二步指定的根URL在一定周期下自动循环了。抓取循环结束后,生成一个最终的索引(第7步到第10步)。第8步中每个segment的索引都是单独建立的,之后才消重(第9步)。第10步就大功告成,合并单独的索引到一个大索引库。Dedup工具可以从segment的索引中去除重复的URL。因为WebDB中不允许重复的URL,也就是说fetchlist中不会有重复的URL,所以

49、不需要对fetchlist执行dedup操作。默认的抓取周期是30天,如果已经生成的旧fetch没有删除,而又生成了新的fetch,还是会出现重复的URL的。当只有一个抓取程序运行的时候是不会发生上述情况的。在爬虫中,抓取是最主要的操作,其作用就是抓取网页,但抓取的单位不是单个网页,而是同属于一个segment的网页集合。下面我们仔细分析下这个类。Run()函数逐个实例化抓取线程FetcherThread对象,然后触发各个线程的start()函数,在其初始化threadCount个线程并等待线程结束后或者出现大的异常后,此函数调用close()结束输入输出流。FetcherThread是Fet

50、cher类的一个部类它继承于java.lang, Thread类,只有一个实体方法run()和三个静态函数:handleFetch(),handleNoFetch(),logError()。FetcherThread.run()实例化了一个新的FetchListEntry实例,叫“fle”然后执行以下循环:1、如果出现错误,记录并退出循环2、从FetchList中取得下一个URL集,如果取得结果为空,退出循环3、从FetchListEntry解析出URL4、如果FetchListEntry没有被标记为“fetch”(未抓取此URL的网页),调用this.handleNoFetch()函数,设置

51、status=1。然后逐步执行:取得此URL的MD5摘要建立Fetcheroutput (fle,hash,status)建立空的Content、ParseText和ParseData对象利用这些对象调用FetcherOutputPage()函数5、如果标记为“fetch”(己抓取此URL的网页),调用ProtocolFactory并取得符合此URL的协议和容对象。6、调用Cal1 this.handleFetch(url,fle,content),然后逐步执行:调用符合此容类型的ParserFactory.getParser()执行parser.getParse(content)利用新建立的

52、Fetcheroutput和URL的MD5摘要,产生的容对象和己解析的ParseText调用Feteher.outputPage()函数7、循环100次,在log中记录8、扑捉各种小的异常以与记录写入log文件Nutch 的目标是让每个人都很容易配置世界上一流的 Web 搜索引擎,为了完成这个目标,研发人员做出了不懈的努力,使得 Nutch 必须作到:每个月都需从互联网上取几十亿的网页,并为这几十亿的网页维护作一个索引,同时对建立的索引文件需要进行每秒千万次的搜索,为用户提供高质量、高效率的搜索结果,并且以最小的成本运作。其中Nutch 结构图如图2.1 : 图2.1 Nutch结构图2.4

53、中文分词技术 搜索引擎在处理英文信息和中文信息时有所不同,因为英文信息是通过词、空格以与标点符号组成,所以在切分英文信息的时候只要以空格和标点符号作为分割符,整个过程不需要考虑分词算法。但是对于中文信息来说,由于中文信息与英文信息不同,是以连续的句子组成,在字与字之问没有明显的分割符,所以如何有效分析成了一道难题,例如“我是一名研究生”,如果按照英文这种切分方法的话可能只能分出“我”、“是”、“一”、“名”、“研”、“究”、“生”。事实上需要计算机能够分出“研究生”这个词组,而不是单个切分。中文分词技术对于中文搜索引擎搜索结果的准确性上具有十分重要的作用,好的中文切分技术不仅能够提高分词准确性

54、,而且能够提高分词速度。目前主流的搜索引擎基本上都支持中文分词技术,但由于中文分词有一定的难度,尤其是如何理解基于上下文特殊语境下的词语,所以分词结果还有很大提升的空间。2.4.1 基于字典匹配的分词方法字典匹配分词技术是以字典分词为基础发展起来的,常使用标志切分或者特征扫描将输入的字符串中具有显著特征的词汇识别和切分出来,然后以这些词汇为间隔,将原字符串分割为较小串后再进行字典分词。根据不同长度优先匹配原则,将字典匹配方法分为最长匹配方法和最短匹配方法,根据匹配扫描方式将其分为逆向匹配和正向匹配,实际上,可以结合几种方法,比如正向最长匹配分词,逆向最长匹配分词,以与这两种相结合的分词方法。2

55、.4.2 基于词频统计的分词方法词频统计分词,顾名思义,就是基于词频统计来进行分词,即根据在上下文语境中,相邻字搭配出现的频率越高就越可能成为一个词。具体是通过对中文文本中统计相邻出现的各个字的组合频度,根据两个字的统计信息,计算它们之间相邻出现概率,当出现概率超过某个阈值时,认为这两字是一个词,将其切分出来,否则,不认为这两个字为一个词。这样做会出现一些问题,比如一些不重要或者无意义但是出现频率很高的字词会被切分出来,这就需要对切分词语配备一个词典库,对切分词语进行匹配,过滤不重要词。这种分词方法具有分词速度快、实现简单和效率高的优点。2.4.3 基于语义理解的分词方法基于语义理解的分词方法

56、指通过分词、语法与语义分析模拟人脑对语言的理解能力来对语句进行识别分词,一般包括句法语义模块、控制模块和分词模块。控制模块协调句法语义模块和分词模块,使得分词模块从句法语义模块获得词语、句子的句法和语义,根据当前语境对句子进行分词。这一方法能够理解中文上下文环境,避免分词出现歧义的优点,正成为国外学者的研究热点,目前还没有成熟的系统出现。2.4.4 IK分词器简介IKAnalyzer是一个开源基于JAVA语言的轻量级的中文分词第三方工具包,从2006年推出已经经历了三个较为完整的版本,目前最新版本为3.2.8,它基于lucene为应用主体,但是,它也支持脱离lucene,成为一个独立的面向JA

57、VA的分词工具。其结构图如图2-2:图2-2 IK Analyzer结构图2.5 本章小结 本章主要介绍了Nutch相关技术,包括Nutch的组成部分:抓取和搜索,重点介绍了抓取部分,即Fetcher、Crawler的详细工作过程,以方便将此其修改成主题爬虫。第3章 爬虫搜索策略的研究主题爬行策略是根据某种爬行策略自动保留与特定主题相关网页,过滤与主题不相关网页,爬行策略的好坏直接决定了主题爬虫器爬行效率和网页的质量,因此主题爬行策略已成为研究热点,目前很多学者提出了主题爬行策略,各有优劣,主要可以分为基于的爬行策略、基于容的爬行策略以与其他相关爬行策略,下面介绍这几种策略。3.1 基于结构特

58、征3.1.1 PageRank算法搜索引擎的性能和处理速度取决于信息抓取系统性能的好坏。通用搜索引擎以提高Web 的覆盖率和尽可能多的下载网页为主要目的,它的网络爬虫采用了数据结构中图的遍历算法(广度或深度优先策略)。主题搜索引擎具有较强的针对性,面向某一专业行业或者某一特定主题,因此在搜索过程就可以有选择检索互联网上的信息,无需将整个互联网资源检索一次,只需要检索与主题相关的页面或者某一专业行业,比通用搜索引擎更注重检索到页面的正确性。主题信息的搜索策略是整个主题搜索引擎系统的关键和核心,目前启发式搜索策略是主题搜索引擎主要采用的策略。启发式搜索策略即先通过查询领域的知识相关对网页中超进行价

59、值评定,并用来判断网络信息资源的分布情况,然后按照优先选择原则对价值评定值最大的页面进行更深一步的搜索。目前,主题搜索引擎主要采用基于结构的搜索策略和基于容价值评定的搜索策略。PageRank 算法是根据网页之间的超来确定页面的等级。它的计算过程可以比喻成“投票”的过程。的 PageRank值的高低取决于其它给它“投票”的总和。由于重要投的票应该有较大的分量。于是需要用 PageRank值来衡量一个的重要性13。事实上,PageRank就是一个概率,它反映了一个人在网络中不同的页面上随机点击会到达某个特定的概率。我们假设考虑的所有的 PageRank是均匀分布的,就是说如果互联网上有N个,那么

60、每个的PageRank 都是 1/N。虽然 Web 页面的重要性需要人来判断,判断结果取决于人的主观判断、人的知识、兴趣、意见等,但是人们还是可以利用一些页面的重要性和客观性来判断其它页面。在传统情报检索理论中的分析方法,当一个页面 T 可以到另个页面 A 时,我就认为 A 的重要性也非常高,也就是说 A 得到一个很高的分值,也就是说 T 的越重要,网页A 得到的分值就会越高。PageRank算法的基本思路:PageRank是一个值,它用来衡量一个页面的重要性。当一个页面被其他许多页面引用,那么这个页面很有可能是重要页面,尽管一个页面不曾被其它页面多次应用,但是只要被重要页面引用过,那么这个页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论