网络教育学院
本 科 生 毕 业 论 文(设 计)
题 目: 使用Nutch实现本地检索功能
学习中心:
层 次: 专科起点本科
专 业: 计算机科学与技术
年 级: 年 季
学 号:
学 生:
指导教师:
完成日期: 2021 年02月22日
内容摘要
随着web2.0的发展,搜索引擎的发展是近年互联网发展的热点之一,google的发展带动了一些列搜索引擎的发展。日益增多并且成熟的互联网用户对搜索引擎的要求也越来越高,其功能也在不断的丰富和完善。Nutch搜索引擎系统就是一个优秀的开源搜索项目,本文正是在Nutch的基础上,探讨了搜索引擎的分布式实现。
本文对搜索引擎的一般架构、原理、组成、工作流程作了较为细致的研究。搜索引擎一般由数据抓取模块、索引模块、检索模块组成。本文在对Nutch系统的各组成部分进行深入研究的基础上,提出了基于Nutch的搜索引擎平台的具体设计方案。
关键词:Nutch;功能;测试;安装
目 录
引 言
随着计算机与互联网的日益普及与应用, 在10 年左右的时间里互联网上至少产生了50 亿的网页, 浩如烟海的互联网信息极大地促进了搜索引擎技术的蓬勃发展, 诞生了我们熟知的Google、Yahoo、百度等一大批搜索引擎。据CNNIC 统计, 搜索引擎已成为继电子邮件之后的第二大Web 应用。虽然说使用搜索引擎的网民数目越来越多, 但Web 搜索引擎数目却在下降, 并且很有可能进一步演变为被少数公司垄断, 这显然不利于广大网民用户的利益。Nutch 的诞生为我们提供了不同的选择, 它具备现代商业搜索引擎的基本功能, 并采用依据网页本身的价值进行排序的算法, 而不是商业引擎的竞价排名算法, 努力为用户提供最合理的搜索结果。
在互联网蓬勃发展的今天,互联网上的信息更是浩如烟海。人们在享受互连网带来的便利的同时,却面临着一个如何在如此海量的内容中准确、快捷地找到自己所需要的信息的问题,由此互联网搜索引擎应运而生。
搜索引擎特指互联网上提供内容查询服务的网站,根据人们输入的查询内容查找索引数据库将找到的相关页面的链接提供给用户。从最初的搜索引擎的出现到现在已有20余年的时间,随着信息技术的不断发展,特别是互联网应用的迅速普及,电子信息爆炸式地丰富起来。目前仅Google收录的网页就超过80亿〔:3],并且每天全球互联网网页数目以千万级的数量增加。
要在浩瀚的网络信息海洋中自如冲浪,搜索引擎已成为必不可少的利器。自1994年起至今,伴随着因特网的日益发展壮大以及Web信息量的迅速膨胀,Web搜索引擎技术为了不断满足人们对web信息检索的需求,已经经历了三代发展阶段:第一代搜索引擎出现于1994年,以集中式检索为主要特征。这类搜索引擎一般都索引少于100万个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上也基本沿用较为成熟的IR(Information Retrieval)、网络、数据库等技术,相当于利用一些己有技术实现的一个W料上的应用。
第二代搜索引擎系统大约出现在1996年,大多采用分布式检索方案,即多个微型计算机协同工作来提高数据规模、响应速度和用户数量。它们一般都保持一个大约5千万网页的索引数据库,每天能够响应1000万次用户检索请求。
第三代搜索引擎系统出现在1998年到2000年期间,这一时期是搜索引擎空前繁荣的时期。第三代搜索引擎的发展有如下凡个特点:
(1)索引数据库的规模继续增大,一般的商业搜索引擎都保持在几千万甚至上亿个网页。
(2)除了一般意义上的搜索以外,开始出现主题搜索和地域搜索。很多小型
的垂直门户站点开始使用该技术。
(3)由于搜索返回数据量过大,检索结果相关度评价成为研究的焦点。相关的研究又可以分为两类:一类是对超文本链的分析,在这方面始于Stanford大学的Google系统作出了很大的贡献;另一类是用户信息的反馈,DirectHit系统采用的就是这种方法。
(4)开始使用自动分类技术。Northern Light和Inktomi的Direetory Engine都在一定程度上使用该技术。
进入21新世纪以后,随着信息多元化的增长,千篇一律的给所有用户同一个入口显然已经不能满足特定用户更深入的查询需求。同时,这样的通用搜索引擎在目前的硬件条件下,要及时更新以得到互联网上较全面的信息是不太可能的。针对这种情况,分类细致、精确、数据全面深入、更新及时的面向主题的搜索引擎出现了。由于主题搜索运用了人工分类以及特征提取等智能化策略,因此它比上面提到的前三代的搜索引擎将更加有效和准确,我们将这类完善的主题搜索引擎称为第四代搜索引擎。
1 概述
1.1 背景
网络时代,技术发展日新月异,各种新技术层出不穷,信息容量急剧膨胀,极大程度的加强了人们对各种信息的需求。面对浩如烟海的互联网数据,人们日益所关心的问题是,如何能迅速、便捷地从海量数据中获取到对自己有价值的信息,从而能满足个性化的需求。搜索引擎的出现极大的缓解了这种矛盾,它是一款特别的基于web之上的软件系统,能够从互联网自动搜寻信息,并未用户提供查询服务。搜索殷勤对原始文档进行一系列的整理和处理。用户的查询结果是搜索引擎按照某种规则计算的。搜索引擎为网民提供了资源查找和导航的有效手段。
Google在全场市场突飞猛进,搜索引擎得到前所未有的关注。据中国互联网信息中心统计,截至2009年6月底,中国网民已经达到3.38亿人,搜索引擎用户已经达到2.35亿人,在网民中的使用率达到69.4%,成为网民重要的网络应用之一。
搜索引擎技术是互联网资源导航和访问的重要手段。但是对于一般开发者而言,搜索引擎的底层开发技术过于复杂,加上各大搜索引擎厂商对核心技术严格保密,使搜索引擎开发有很高的门槛。Nutch为我们提供了这样一个不同的选择。相对于那些商用的搜索引擎,Nutch作为开放源代码搜索引擎将会更加透明,从而更值得大家信赖。Nutch将尽自己最大的努力为用户提供最好的搜索结果,使我们可以搭建出单机的搜索服务系统,满足基本的检索需求。
研究搜索引擎的最终目标是,以使用搜索服务的用户为中心,以满足用户检索需求为目标,以提高搜索服务质量为宗旨,以强有力的分布式计算技术为后盾支持,辅以各种其他技术,像中文分词、并行计算等,通过精心设计改进搜索引擎系统,提高其处理海量数据的速度和质量,提供优质的数据检索服务。
搜索引擎在普通系统中的普及,开源项目的推动作用功不可没。进行全文检索系统研发或者搜索引擎研发的开发者都用过或者借鉴过开源搜索引擎的代码和设计思路。
Nutch系统
Nutch是一个完整的开放源码的搜索引擎,是一个完备的应用程序。内部实现以Lucene为基础实现搜索引擎应用。利用Nutch经过简单的设计就可以建立自己内部网的搜索引擎,也可以针对互联网建立搜索引擎,还可以与数据库结合建立索引。
1.2 本文的主要内容及组织结构
本文首先对搜索引擎的基本原理以及关键技术进行了深入的研究和分析,然后围绕Nutch这一开源搜索引擎,构建了完整的Nutch系统,并对Nutch系统引入了中文分词功能。最终实现了一个基本自己本地检索的搜索引擎。
本文的组织结构:
全文共分5章。
第一章,主要介绍搜索引擎的发展背景以及目前搜索引擎发展的状况,引出开源的Nutch框架。
第二章,介绍了搭建Nutch框架所需要的配置环境以及安装工具,并对这些工具进行技术上的分析 。
第三章,主要介绍搭建整个框架的基本流程和所需要做的工作,包括主机环境的配置、Nutch的安装配置、Nutch的调整测试、在Tomcat下运行Nutch、将Nutch导入eclipse中等实现环节。
第四章,主要是对搭建完成的检索框架进行测试的过程,包括搜索引擎的抓取功能等。另外,引入JE分词包,实现中文检索的功能。最后通过加载浏览器运行整个检索框架。
第五章,对文章做出整体的总结,阐述文章的整体意义,并指出还存在的不足之处。
2 相关环境工具介绍
2.1 Nutch的介绍
Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
尽管Web搜索是漫游Internet的基本要求,但是现有web搜索引擎的数目却在下降。并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益。这显然不利于广大Internet用户。
Nutch为我们提供了这样一个不同的选择。相对于那些商用的搜索引擎,Nutch作为开放源代码搜索引擎将会更加透明,从而更值得大家信赖。现在所有主要的搜索引擎都采用私有的排序算法,而不会解释为什么一个网页会排在一个特定的位置。除此之外,有的搜索引擎依照网站所付的费用,而不是根据它们本身的价值进行排序。与它们不同,Nucth没有什么需要隐瞒,也没有动机去扭曲搜索的结果。Nutch将尽自己最大的努力为用户提供最好的搜索结果。
爬虫crawler和查询searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。
Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
2.2 Tomcat和Eclipse的简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。目前最新版本是7.0。
Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置Apache服务器,可利用它响应HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你Apache Tomcat运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse通常都是用于Java和Php等开发的居多。用于做Asp开发工具的,应该是少之又少啦,嘿嘿。
不过,Eclipse确实是个非常不错的源码编辑器,这里,我分享一个Eclipse编辑ASP程序的插件给大家。
2.3 工具版本信息
Nutch是一个开放源代码、建立在Lucene基础上的完整的Web搜索引擎系统,他提供了我们运行自己的搜索引擎所需的全部工具。NutCh致力于让每个人能很容易,同事花费很少就可以配置世界一流的Web搜索引擎。为了完成这一宏伟的目标,Nutch能够做到:每个月抓取几十亿网页;为这些网页维护一个索引;对索引文件进行每天上千次的搜索;提供高质量的搜索结果:以最小的成本运作。目前Tomcat最新版本为7.0.22 Released。EclipseColorer,是专门为Eclipse开发的语法高亮和源码编辑插件,支持200多种语言。
3 配置实现框架功能
3.1 配置主机工作环境
硬件环境:
CPU:Pentium4CPU2.以兄hz,lePu
RAM:1GBMemory
软件环境:
JavaVersion:1.5
JavaVM:JDK
操作系统版本:windowsXP
开发工具:Eelipse3.2