査询结果如图8-113所示。图中査找结果下面的第一行表示网页的标题,第二行表示对应的URL,第三行中突出的文字是用户査找的关键字。

页
约有14.686场符台北京林业大学的5询绾果,以下是第1-10项(?索用时0.016ms)北京林业大学博士生网上招生
北京林业大笨溥士生两上招生
graduatel^fu.sdir.cn/bsbm/index.asp-509.0Bytes-2.009-03-25F?苋快照:北京林业大学人文素质论北亨朴业大学人文聚质论坛lenwei,bjfufiducn/ienwwisuzlii/lndexasp20K-2009-03^-25网页快城[MS-Exc?q学院性名毕业学校本科专业軸名园
竿味名毕业学校本科,业撙名8林学陕>12人)范芬:北早林;ik:t:学1胡可北苹林业大学1辛》希东甫大学膊新北尕林此大*M赛南京农业大学??北京林业大学3干番北京材业大竿3曹华雯北苹林业大学4PR爽兰北京林业大学累北亨材;学S王惠礼节林业大牮5王冰北京林业*竽5人文学昧0十莉graduatebjfu.e^ucn/uploadfilo/20S)592g181253337xls2003-03-25脈卿。
欢仰来到北京林业大宇人文半院
炊油来到北市林北力学人文学陕
renwenbj(ueducn/defaultasp?20K2009-03-26図页快喊北車林业大学博士生网上招生系统
北京林业大衆博士生网上招生系统2009
graduate.bjfu.edu.cn/bsbnVbshzhsMeft.asp-3.0K-2009-03-25H页快照北京林业大学精品课程一一荒樓化
北京林业’华摘品廉8―充滇化坊泊工程学
|wc.b|fuodu.cn/jpkch/2004/3fnhfzgcxZindex/huoiianghint-20K-2005'03-2S阿苗1图8-113实例查询结果页面
网页快照实现
由于搜索引擎在对用户输入关键词检索,返回给用户的是相关网页的内容摘要、标题和URL。如果该网站出现异常,用户访问原始地址,则以通过网页快照来进行访问。其主要实现代码如下:
req.setCharacterEncoding{MGB2312”);resp.setContentType(ntext/html;charset^GB2312“);intid=工nteger.parselnt(req.getParameter(”c“));StringkeyWords=String.valueOf(req.getParameter(”q**));Stringkeyword:java.net.URLDecoder.decode(newString(keywords.getBytes(*'ISO8859_1M),“UTF_8”),“UTF-8”);
QueryParserqueryParser=newQueryParser(Msngn,newMMAnalyzer());Queryquery83null;try{
query=queryParser.parse,;}catch{
//TODO:handleexception}
//添加髙亮显示
SimpleHTMLFormattersFormatter=newSimpleHTMLFormatter(‘?
#ffff66;color:black;font-weight:bold
>'’,nM);Highlighterhighlighter=newHighlighter(sFormatter,newQueryScorer);SimpleFragmentersf——newSimpleFragmenter;highlighter.setTextFragmenter;Stringstitle=*' #ddd;font:13pxarial,sans-serif;color:#000;font-weight:normal;text-align:left
>H+n这是林业大学搜索引擎对n+resultBean.getUrl()+”的缓存。这是该网页在‘?+resultBean.getDate<)+“的快照o”
+n”

+“在此期间可能已经更改。”
+n
n+?n
+''
突出显示以下搜索字词:“+keyWord+”“+''
PrintWriterout=resp.getWriter();
out.print;out.print(,?
'’);out.print;out.print(”
,‘);}

部署到Tomcat
现在整个应用已经全部完成,还要部署到Tomcat中运行才行。在图8-114所示的窗口中,选择search-engine工程,并单击右键,在弹出菜单中选择Export|WARfile。
图8-114导出WAR文件
如图8-115所示,在Destination中,指定路径并且起一个名字,如search-bl.war,然后单击Finish按钮就生成了一个如图8-116所示的。war文件。将生成的这个文件直接放到Tomcat下的webapps文件夹下,然后直接启动Tomcat,它会自动部署这个项目。

WARExport
ExportW?bprojecttothelocalfilesystem.

Webmodule;;search-engjneDestination.Cseai-ch-blwarPl^xportsoorce£il F^lOverwriteexistingfile
⑦
finish
图8-118运行画面
館
本章用实例构建了一个非常简单的搜索引擎,它包含了搜索引擎最主要的3个部分,并且能提供基本的搜索服务,对于初学者来说有一定的帮助。目前,实际中应用的搜索引擎,例如Google或者Baidu,除了算法先进以外,还采用了分布式的结构,这样不仅可以很大程度上提髙搜索引擎的工作效率,还能提髙稳定性。但这种分布式实现起来是需要一定的技术实力。本实例作为一个示例性程序,只实现了基本的功能,与实际应用还有相当的差距,并且,由于作者能力有限,示例程序的运行效率、算法实现和健壮性等方面还做得不够完善,希望大家多提宝贵意见。
实验1:网页搜集练习。
主要内容:下载网络爬虫Heritrix的源程序、学会配置网络爬虫,创建一个新的抓取任务并运行和完成抓取。
实验2:网页预处理练习。
主要内容:过滤原始网页,网页重要度计算,生成摘要。
实验3:建立索引。
主要内容:学会使用IndexWriter建立索引,熟悉建立索引的过程,了解Lucene中形成索引的几个关键组件。
实验4:建立搜索?
主要内容:学会使用ImfcxSearcher进行搜索,了解对搜索结果的评分。构建各种类型的搜索,如词条捜索、布尔搜索、前缀搜索、短语搜索、模糊搜索、通配符捜索等。
实验5:构建一个简单的搜索引擎。
主要内容:根据前4个球验构建一?个简单的搜索引擎,熟悉Lucene和Heritrix的使用,对捜索引擎的工作过程有一个整体的了解。
手咖wh醐翻擎
本章是在Windows环境下,讲解用Nutch构建一个北京林业大学校内网络的搜索引擎的具体步骤和过程。用户登录到这个搭建好的网站上,输人所期望获取的信息的关键字之后,搜索引擎会返回给用户一系列包含用户所输人的关键字的网页地址、网页标题以及摘要。
H謝I細S]阎命
Nutch是一个开放源代码的Web搜索引擎。Nutch主要分为两个部分:爬虫Crawler和査询Searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的査找关键词来产生查拽结果。两者之@的接口是索引,所以除去索引部分,两者之间的耦合度很低。
Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能、9.1.1爬虫Crawler简介
Crawler的重点在两个方面,Crawler的工作流程和涉及的数据文件的格式和含义。数据文件主要包括3类,分别是WebDatabase,—系列的Segment加上Index,三者的物理文件分别存储在爬行结果目录下的DB目录下Webdb子文件夹内,Segments文件夹和Index文件夹。那么三者分别存储的信息是什么呢?
WebDatabase,也叫WebDB,其中存储的是爬虫所抓取的网页之间的链接结构信息,它只在爬虫Crawler工作中使用而和Searcher的工作没有任何关系。WebDB内存储了两种实体的信息:Page和Link。Page实体通过描述网络上一个网页的特征信息来表征一个实际的网页,因为网页有很多个需要描述,WebDB中通过网页的URL和网页内容的MD5两种索引方法对这些网页实体进行了索引。Page实体描述的网页特征主要包括网页内的Link数目,抓取此网页的时间等相关抓取信息,对此网页的重要度评分等。同样,Liyk实体描述的是两个Page实体之间的链接关系。WebDB构成了一个所抓取网页的链接士构图,这个图中Page实体是图的结点,而Link实体则代表图的边。

一次爬行会产生很多个Segment,每个Segment内存储的是爬虫Crawler在单独一次81捜衆引擎基础教程
抓取循环中抓到的网页以及这些网页的索引。Crawler爬行时会根据WebDB中的Link关系按照一定的爬行策略生成每次抓取循环所需的Fetchlist,然后Fetcher通过Fetchlist中的URLs抓取这些网页并索引,然后将其存人SegmentoSegment的生命周期是有限的,当这些网页被Crawler重新抓取后,先前抓取产生的Segment就作废了。存储的Segment文件夹是以产生时间命名的,以便能及时删除作废的Segments以节省存储空间。
Index是Crawler抓取的所有网页的索引,它是通过对所有单个Segment中的索引进行合并处理所得的。Nutch利用Lucene技术进行索引,所以Lucene中对索引进行操作的接口对Nutch中的Index同样有效。但是需要注意的是,Lucene中的Segment和Nutch中的不同,Lucene中的Segment是索引Index的一部分,但是Nutch中的Segment只是WebDB中各个部分网页的内容和索引,最后通过其生成的Index跟这些Segment已经毫无关系了。
Crawler工作流程
在分析了Crawler工作中设计的文件之后,接下来研究一下Crawler的抓取流程以及这些文件在抓取中扮演的角色。Crawler的工作原理主要是:首先Crawler根据WebDB生成一个待抓取网页的URL集合叫做Fetchlist,接着下载线程Fetcher开始根据Fetchlist将网页抓取回来,Nutch默认使用的就是多线程下载,默认的线程数是10,通常是同一域名下的URL被合到一个fetchlist中。Crawler根据抓取回来的网页WebDB进行更新,根据更新后的WebDB生成新的Fetchlist,里面是未抓取的和新发现的URL,然后下一轮抓取循环重新开始。这个循环过程可以叫做“产生、抓取、更新”循环。
指向同一个主机上Web资源的URLs通常裣分配到同一个Fetchlist中,这样做可以防止多个Fetcher访问同一主机时重复抓取。另外Nutch遵守Robots协议,网站可以通过自定义Robots,txt控制Crawler的抓取。
在Nutch中,Crawler操作的实现是通过一系列子操作的实现来完成的,这些子操作Nutch都提供了子命令行可以单独进行调用。下面就是这些子操作的功能描述以及命令行,命令行在括号中。
创建一个新的WebDb(admindb-create)。
将抓取起始URL写人WebDB中。
根据WebDB生成Fetchlist并写入相应的segment。
根据fetchlist中的URL抓取网页。
根据抓取网页更新WebDb。
步直至预先设定的抓取深度。
根据WebDB得到的网页评分和Links更新Segments。
对所抓取的网页进行索引。
在索引中丢弃有重复内容的网页和重复的URL。
将Segments中的索引进行合并生成用于检索的最终Index。
Crawler详细工作流程是:在创建一个WebDB之后,“产生、抓取、更新”的循环根据一些种子URL开始启动。当这个循环彻底结束,Crawler根据抓取中生成的Segments创建索引。在进行重复URL清除之前,每个Segment的索引都是独立的。最终,各个独立的289
iegment索引被合并为一个最终的索引Index。
有关搜索引擎的体系结构、网页的搜集原理、预处理原理以及査询服务原理的概念在第章已经介绍,宁波seo优化这里就不再重复。
邴糧潛?每醌量
开发工具简介
为了构建一个简单的搜索引擎,在本实例中采用的开发语言为Java,其中用到的爬虫、t引工具和开发工具等及其下载地址如下。
JOK1.6
下载地址为http://java.sun.com/。JDKCJavaDevelopmentKit)包括Java开发包和iva开发工具,是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系£层之上的运行环境还有开发者编译、调试和运行用Java语言写的applet和应用程序所需3工具组成。

EdipseGanymede
下载地址为http://www.eclipse.org/oEclipse是一种可扩展的开放源代码IDE。)01年11月,IBM公司捐出价值4000万美元的源代码组建了Eclipse联盟,并由该联盟负?这种工具的后续开发。Eclipse中正在开发的项目超过90个,而Ganymede发行版只是-个缩影。Ganymede发行系列旨在展示Eclipse技术,还帮助采用者把tclipse技术集成1他们的产品中。
Tomcat6.0.18'
下载地址为http://tomcat,apache,org/。Tomcat服务器是一个免费的开放源代码的eb应用服务器,它是Apache软件基金会的Jakarta项目1的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。
Nutch0.9
下载地址为http://lucene.apache,org/nutch/。Nutch是一个开放源代碑的Web搜’引擎。Nutch主要分为两个部分:爬虫Crawler和查询Searcher。Crawler主要用于从网上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的査找关键词产生査找结果。
Cygwin
下载地址为http://www.cygwin.com/,,Cygwin最初是由CygnusSolutions公碑开的,它是自由软件的集合,用于模拟运行UNIX类环境。Nutch是在Linux系统下开发,所以在Windows环境下需要用Cygwin软件协助开发。
篥9章搭連基于NU+oh的搜帟甲擎
JavoCC4.2
下载地址为http://javacc.net.java,net/。JavaCCCJavaCompilerCompiler)是一个用ava开发的最受欢迎的语法分析生成器。这个分析生成器工具可以读取上下文无关且有豪特殊意义的语法并把它转换成可以识别且匹配该语法的Java程序。JavaCC起源于;un公司的Jack。Jack后来辗转了几家拥有者,最后变成了JavaCC,然后又回到了Sun。5un公司最后将它作为开放源代码的代码发布。JavaCC的长处在于它的简单性和可扩展生。要编译由JavaCC生成的Java代码,无须任何外部JAR文件或目录。仅仅用基本的aval.2版编译器就可以进行编译。而该语言的布局也使得它易于添加产生式规则和行々。该Web站点甚至描述了如何编制异常以便给出用户合适的语法提示。
Luke0.9J
本文转载自
宁波seo优化www.leseo.net 补充词条:
宁波seo优化公司
宁波网络seo
宁波seo推广公司
宁波网站优化推广
宁波网站seo优化