基于Nutch1.2搜索引擎二次开发与实现

上传人:付** 文档编号:88541607 上传时间:2019-04-30 格式:PPT 页数:25 大小:355.50KB
返回 下载 相关 举报
基于Nutch1.2搜索引擎二次开发与实现_第1页
第1页 / 共25页
基于Nutch1.2搜索引擎二次开发与实现_第2页
第2页 / 共25页
基于Nutch1.2搜索引擎二次开发与实现_第3页
第3页 / 共25页
基于Nutch1.2搜索引擎二次开发与实现_第4页
第4页 / 共25页
基于Nutch1.2搜索引擎二次开发与实现_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于Nutch1.2搜索引擎二次开发与实现》由会员分享,可在线阅读,更多相关《基于Nutch1.2搜索引擎二次开发与实现(25页珍藏版)》请在金锄头文库上搜索。

1、基于Nutch1.2搜索引擎二次开发与实现,开发意义,随着信息化的迅速发展,网络上的信息早已如同茫茫大海,为了使人们能够更便捷的获取自己需要的信息,搜索引擎应运而生。搜索引擎是一款特别的软件系统,它能够从互联网上自动搜集信息,并为用户提供查询服务。搜索引擎对原始文档进行了一系列的整理和处理。用户的查询结果是搜索引擎按照某种规则计算获得的,搜索引擎为网民提供了资源查找和导航的有效手段。 为了提高资源查找的效率,提升搜索的用户体验,本课题基于Nutch1.2进行二次开发的搜索引擎将主要研究如何更准确帮助用户查找信息和资源,并且使得在搜索结果中更合理的展示搜索结果信息。,开发目标,为能够开发出实用的

2、搜索引擎,确定了以下几个系统目标: 搭建Nutch1.2开源框架,提供基本搜索功能 对Nutch1.2中的中文分词方法进行改进 对Nutch1.2进行二次开发,对信息处理进行优化 设计漂亮的界面,提升用户体验,开发工具,1.JDK6.0 2.Cygwin(Linux模拟环境) 3.MyEclipse8.6 4.Tomcat6.0 5.Nutch1.2 6.Adobe Photoshop CS5,开发工具,Nutch1.2简介 如果要介绍Nutch,那么首先的说说Lucene,Lucene是目前广泛流行的全文检索系统。它最初的作者是Doug Cutting,后来改项目成为了Apache的一个子项

3、目。 由于Lucene不是完整的应用程序,而是一个用于实现全文检索的软件库,很多开发者希望能有一套完整的开源搜索引擎系统,加快目标应用系统的开发进度。2004年Nutch应运而生,使得的普通的程序员也能进行搜索引擎开发。 Nutch是基于Lucene的,Lucene为Nutch提供了文本索引和搜索的API。,开发工具,Nutch1.2搜索引擎工作流程,获取原始文档,处理文档并建立索引,执行搜索,(1)建立初始URL集 (2)将URL集注入crawldb数据库 (3)根据crawldb数据库创建抓取列表。 (4)执行抓取,获取网页信息 (5)更新数据库 (6)重复进行(3)(5)步骤,直到预设的

4、抓取深度,这个循环过程被称为“产生,抓取,更新”循环。 (7)根据segments内容更新linkdb数据库 (8)建立索引。 (9)用户通过用户接口进行查询操作 (10)返回结果,开发工具,Nutch1.2主要的类: (1)Injector:通过将种子url与crawDb(爬行数据库)中的原有url合并来更新crawlDb。 (2)Generator:根据crawlDb中的url状态来产生新的url队列 (3)Fetcher:对上述url队列中的url进行抓取,即下载相关网页。 (4)ParseSegment:对上述爬行结果(即网页)进行解析。 (5)CrawlDb:更新crawlDb数据库

5、信息。 (6)LinkDb:计算反向链接,反向链接可以用于计算url的PR值。 (7)Indexer:用于建立索引。,中文分词,中文分词简介 中文分词技术属于自然语言处理技术范畴,如何让计算机能够像人类那样理解哪些是词,哪些不是词,这个处理过程就是分词算法,现有的分词方法可以分为三种类型:机械分词方法、基于理解的分词方法和基于统计的分词方法。,中文分词,1.机械分词方法 机械分词方法有称为字符串匹配的分词方法,它是按照策略将待分析的汉字字符串与一个“充分大的”机械词典的词条进行匹配,如果在词典中找到某个字符串,则匹配成功。按照优先匹配的词长和扫描方向的不同,有四种常见方案:正向最大匹配、正向最

6、小匹配、逆向最大匹配和逆向最小匹配。,中文分词,2.基于理解的分词方法 这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。基本思想就是在分词的同时进行句法、语义分析,利用语法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得搜索引擎技术的研究与实现有关词、句等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识。但是由于汉语语言知识的复杂性,难以将各种语言信息组成机器可以直接读取的形式,所以目前基于理解的分词系统还处于试验阶段。,中文分词,3.基于统计的分

7、词方法 基于统计的分词方法又称为是无词典分词,该方法是通过大规模真实文本的统计,让计算机自己判断什么是词,它的主要思想为:“词”是稳定的字的组合。该方法有一定的局限性,会经常抽出出现频度高,但不是词的常用字组。,Nutch自带分词,1.StandardAnalyzer分词方法 该分词方法为Nutch自带的分词方法,该方法中又包含有三种分词:StandardAnalyzer、ChineseAnalyzer、CJKAnalyzer。 (1)StandardAnalyzer:标准分词,属于一元分词。 (2)ChineseAnalyzer:同StandardAnalyzer几乎一致。 (3)CJKAn

8、alyzer:二分法分词。属于二元分词。 例:“中国人民从此站起来了!” (1)中 国 人 民 从 此 站 起 来 了 (2)中 国 人 民 从 此 站 起 来 了 (3)中国 国人 人民 民从 从此 此站 站起 起来 来了,JE-Analyzer(正向最大匹配算法分词),JE-Analyzer JE-Analyzer采用正向最大匹配算法,该方法要比单个汉字切分法和二元切分法效果更好,更加实用。最大匹配算法的核心是“长词优先”原则。这一原则在绝大多数情况下是符合人们的日常阅读与写作习惯的。正向最大匹配算法的形式定义为对于文本中的字符串ABC,A在W中,AB也在W中,W为字典,那么该字符串就切分

9、为AB/C。例如句子:“中华人民共和国成立的时候”采用正向最大匹配算法时,其切分结果为“中华人民共和国/成立/的/时候”。根据字符串的最大匹配算法,来设计基于所建词语树的分词算法,该算法分词的过程类似于输入法的联想功能。,StandardAnalyzer分词 VS JE-Analyzer分词,1.对于例句:“中华人民共和国在1949年建立,从此开始了新中国的伟大篇章“,两种分词方法对比图如下:,Nutch实现JE-Analzyzer分词,1.修改Nutch分词 (1)下载JE-Analyzer.jar (2)将JE-Analyzer.jar导入Nutch1.2工程的lib目录中。 (3)修改o

10、rg.apache.nutch.analysis.NutchAnalysis.java (4)使用JavaCC工具编译NutchAnalysis.jj文件,将生成的源代码覆盖org.apache.nutch.analysis中已存在的类。 (5)使用MyEclispe自带的Ant工具重新build下Nutch1.2 (6)将生成的nutch1.2.job和nutch1.2.jar拷贝至Nutch1.2目录覆盖原来的。(生成的nutch1.2.war可用于二次开发) (7)重新设置Crwal参数进行抓取。,Nutch1.2二次开发,1.修改内容 (1)首页logo设计 (2)结果显示乱码处理 (

11、3)设置主页与收藏夹的功能 (4)搜索关键词高亮显示 (5)结果列表分页处理,(1)logo设计,该课题的LOGO设计理念来源于一个童话故事“咕咚来了”。 LOGO图片通过使用Adobe Photoshop CS5制作。,(2)结果乱码处理,将项目部署至Tomcat服务器后,直接访问搜索页面不会出现异常,但是,当我们在搜索框数据中文关键字并点击搜索按钮时,在搜索结果页面会出现乱码的情况。出现这种情况是因为Tomcat服务器默认的配置中并没有进行中文编码格式显示的设置,那么在这里可以通过修改Tomcat服务器安装目录中的server.xml文件来解决。 具体的修改方法为:在server.xml文

12、件中的Connector标签添加:URIEncoding=“UTF-8“和useBodyEncodingForURI=“true“。修改完后,重启Tomcat服务器即可生效。,(3)设置主页与收藏夹,1.设置主页 使用JavaScript脚本实现,JS脚本代码为如下: this.style.behavior=url(#default#homepage); this.setHomePage(http:/localhost:8080/AnyFinding/); 2.收藏夹实现 加入收藏夹的功能也是通过JavaScript脚本来实现的,该JS脚本代码如下: function bookmarkit()

13、 window.external.addFavorite(http:/localhost:8080/AnyFinding/,咕咚一下-让搜索更有趣) ,(4)关键词高亮显示,默认的Nutch1.2并没有提供关键字高亮显示效果,那么为了使搜索结果显示效果更佳明显从而提高用户体验,该课题通过修改页面的CSS属性来实现搜索关键字的高亮显示。 具体操作: 将D:Tomcat 6.0webappsAnyFindingincludestyle.html文件中的.highlight的样式属性进行更改。修改参考如下: .highlight font-weight: bold; color:#ff0000; ,

14、(5-1)结果列表分页处理,= hitsPerPage) / more hits to show % . . =5) startnum=(int)(start/hitsPerPage)-4; for(int i=(hitsPerPage+10)*(startnum-1),j=0;i,(5-2)结果列表分页处理, “ ,系统效果图-首页,系统效果图-结果列表,致谢,时光荏苒,大学四年即将结束。在这里我首先要感谢我这四年中的所有授课老师,在我的学习上给予了很大的帮助,给我提供了良好的学习环境。历时两个多月,我终于完成了毕业设计和毕业论文。在这期间我的指导老师的悉心教导。严格审核我的设计和论文,使我对这项工作重视起来。老师深厚的理论素养、渊博的知识、严谨的治学态度让我受益匪浅。从论文的选题到最后的答辩,无不凝聚着老师的心血。这些对我今后的工作、学习都有很深的启发。我只有在今后的学习、工作中以契而不舍的精神,努力做出点成绩来回报老师的教导。另外,论文的完成过程中也得到了一些同学和朋友的帮助,没有他们我是不可能在短短的几个月时间完成论文。同时,也要感谢各位评委老师给出的意见!我会继续完善该课题!,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 计算机应用/办公自动化

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号