nutch-1.0添加JE中文分词-修改源码…_导入je分词包-程序员宅基地

技术标签: 搜索引擎技术  

这几天一直在搞nutch中文分词,也转载了好几篇文章,但是都写的比较简单而且有错误,估计原作者肯定也是实现了,今天终于搞定了,介绍一下我实现的方法。
1 nutch有两种方式可以实现自定义的分词:
1>,直接修改源代码,对默认的分词器代码进行修改使其使用自定义中文分词程序。
2> ,插件机制,可以在不修改源代码基础上,以插件形式集成自定义中文分词功能。这中法可以参考nutch已经集成的德语和法语分词插件,只需作相应修改便可以完成。
2 我主要介绍一下直接修改源代码方式
关于修改原理可以参考前面的几篇文章,这里不再详述,我直接介绍添加JE分词方法
工具:eclipse  javacc ant 
2.1 首先下载JE分词包和nutch源代码,解压,导入eclisep工程,同时将JE分词包添加到Nutch的lib目录下,并导入到工程中,在eclisep下调试通过,注意需要2个包,
下载地址:

http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-mp3/lib/

http://nutch.cvs.sourceforge.net/nutch/nutch/src/plugin/parse-rtf/lib/

这部分可以参考nutch wiki站点:http://wiki.apache.org/nutch/RunNutchInEclipse1.0

2.2 对建立索引所用分词工具的修改
将下载的中文分词包放到lib目录下,改名为analysis-zh.jar(当然,你也可以不用改)。找到下面文件
src\java\org\apache\nutch\analysis\NutchDocumentAnalyzer.java
加入信息的分析类,你需要将该类导入。使用如下语句。
import jeasy.analysis.*;
修改tokenStream方法如下
public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer;
analyzer= new MMAnalyzer();
return analyzer.tokenStream(fieldName, reader);

2.3 对查询所用分析部分的修改
src\java\org\apache\nutch\analysis\中的NutchAnalysis.jj文件
将 <SIGRAM: <CJK> >
改为:| <SIGRAM: (<CJK>)+ >
使用javacc工具将NutchAnalysis.jj生成java文件,共会生成7个java文件,将他们拷贝到下面的文件夹中替 换原有文件。
同时需要修改ParseException.java,把Exception改为IOException
2.4 重新编译工程文件
修改nutch根目录下的文件build.xml文件
在build.xml添加一条指令(在第195行的下面加入一行),使的编译war文件的时候加入je-analysis的jar文件。 build.xml
<include name="lucene*.jar"/>
<include name="taglibs-*.jar"/>
<include name="hadoop-*.jar"/>
<include name="dom4j-*.jar"/>
<include name="xerces-*.jar"/>
<include name="tika-*.jar"/>
<include name="apache-solr-*.jar"/>
<include name="commons-httpclient-*.jar"/>
<include name="commons-codec-*.jar"/>
<include name="commons-collections-*.jar"/>
<include name="commons-beanutils-*.jar"/>
<include name="commons-cli-*.jar"/>
<include name="commons-lang-*.jar"/>
<include name="commons-logging-*.jar"/>
<include name="log4j-*.jar"/>
<include name="je-analysis-*.jar"/> <!-- add this line -->
</lib>
然后重新用ant编译
命令:进入nutch根目录执行 ant  会在build目录下生成nutch-1.0.job文件
然后执行:ant war  会在build目录下生成nutch-1.0.war web发布包
最后执行:  ant jar  会在buil目录下生成nutch-1.0.jar包
将这三个包拷贝出来替换原来的相应的包,或者重新解压一个nutch包拷贝到nutch目录下替换相应的包(注意把那个je-analysis-1.*.jar包要拷贝到lib目录下)
至此加入je分词完成
3 实验验证
配置nutch,执行crawl命令抓取网页,然后 部署刚才产生的nutch-1.0.war包到web服务器下,注意要配置nutch-site.xml文件
打开浏览器输入:http://localhost:8080/nutch-1.0
查查看,分词效果不错~~!!!
下一步研究重点:利用hadoop实现分布式抓取和分布式检索同时改进分词性能

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nuoline/article/details/8610590

智能推荐

详解音视频直播平台软件开发中的低延时-程序员宅基地

文章浏览阅读427次。详解音视频直播平台软件开发中的低延时音视频实时通讯的应用场景已经随处可见,从“吃鸡”的语音对讲、直播连麦、直播答题组队开黑,再到银行视频开户等。对于开发者来讲,除了关注如何能快速实现不同应用场景重点额音视频通讯,另一个更需要关注的可能就是“低延时”。但是,到底实时音视频传输延时应该如何“低”,才能满足你的应用场景呢?延时的产生与优化在聊低延时之前,我们先要讲清延时是如何产生的。由于音视频的传输路径一样,我们可以通过一张图来说明延时的产生:在音视频传输过程中,在不同阶段都...

网络精英赛模拟练习(5)_在企业网络安全应急响应过程中,对当前网络安全情况进行评估时,可以使用()等方法。-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏18次。1、作为全方位的、整体的信息安全防范体系是分层次的,以下关于企业信息系统层次划分的描述,错误的是_________(单选题,1分)A.越接近内部的网络安全要求等级越低,越接近外部的网络安全要求等级越高B.业务专用网是企业为了特殊工作需要而建造的专用网络C.互联网区域用于日常的互联网业务,安全防护等级要求最低D.企业内网是企业的核心网络,拥有最高的安全防护等级回答正确(得分: 1分)正确答案A解析暂无解析2、信息安全风险评估是信息系统安全工程的重要组成部分,以下数据的操作与安_在企业网络安全应急响应过程中,对当前网络安全情况进行评估时,可以使用()等方法。

无敌破坏王2之大闹互联网观后感_拉尔夫网络观后感-程序员宅基地

文章浏览阅读5.4k次。因为同事要离职的缘故,而且我们平时又玩的很好,所以决定今天晚上请去看电影,电影院中毒液和无名之辈又都看过,而无敌破坏王的口碑还不错,所以就问是否想看这部电影,结果一拍即合,我和高工两个人陪他去看了这场动画电影。依然是美轮美奂的电影,拉尔夫这个无敌破坏王依然有着第一季中的个性,云泥洛普依然调皮可爱,生动活泼。第一季中由于拉尔夫总是不断的破坏城堡导致自己不能受到同伴们的喜爱而悲伤低落,想要像阿修一样..._拉尔夫网络观后感

c++ 学习中遇到的问题: error C2065: 'ifstream' : undeclared identifier_ifstream undeclared-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏4次。出现这个错误有两种可能:1. 没有包含文件流类的头文件 #include2. 没有使用命名空间 using namespace std 或者 std::ifstream#include #include using namespace std;int main(){ifstream infile("C:\\Users\\Administrat_ifstream undeclared

Python中的eval函数_real signature unknown-程序员宅基地

文章浏览阅读1.1w次,点赞9次,收藏12次。代码版本:3.6.3 文档:3.6.6eval() eval()是Python内置函数,点进去是这样的def eval(*args, **kwargs): # real signature unknown """ Evaluate the given source in the context of globals and locals. Th..._real signature unknown

Ubuntu Samba Server_2019 server wsllaunchinteractive /usr/sbin/adduser-程序员宅基地

文章浏览阅读979次。## Sample configuration file for the Samba suite for Debian GNU/Linux.### This is the main Samba configuration file. You should read the# smb.conf(5) manual page in order to understand the option_2019 server wsllaunchinteractive /usr/sbin/adduser --quiet --gecos failed wi

随便推点

iptables防火墙_iptables -t nat-程序员宅基地

文章浏览阅读1.1k次。IP信息包过滤系统,它实际上由两个组件 netfilter_和 iptables组成。主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则。iptables采用了表和链的分层结构,所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机。_iptables -t nat

sql级联删除_plsql 两表 级联删除-程序员宅基地

文章浏览阅读905次。sql级联删除功能:在删除主表时,自动删除副表(外键约束)相应内容删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。如:create database tempgouse tempgocreate table UserInfo(UserId int id_plsql 两表 级联删除

c语言常用的运行速度优化方法,嵌入式C语言性能优化方法-程序员宅基地

文章浏览阅读1.2k次。嵌入式C语言性能优化方法嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域.嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要.嵌入式C语言性能优化方法有哪些?下面是相关的知识,欢迎阅读。使用宏定义在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达..._c语言编程之运行速度优化方法汇总

复活的 C4C Linux 发行版_linux版本复活-程序员宅基地

文章浏览阅读97次。导读 Computers4Christians 项目以定制发行版的形式进行了改革,该发行版为有基督教信仰的人提供了软件。当我刚开始在这里写作时,我介绍了一个 基督徒的Linux发行版,距离现在已经有 6 个年头了,让我们来速览一下这个项目在 6 年的时间里都有哪些变化吧。 Computers4Christians 项目以定制发行版的形式进行了改革,该发行版为有基督教信仰的人提供了软件。当我刚开始在这里写作时,我介绍了一个 基督徒的 Linux 发行版,距离现在已经有 6 个年头了,让.._linux版本复活

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程-程序员宅基地

文章浏览阅读57次。有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件。3.2版本我们在框架底层新增了记录框架运行的所有SQl过程保存到用户指定的地方以便分析查看,只需要在配置文件把配置项”LogSQL”设置为True即可。框架会自动记录各常用数据库如:Oracle、SqlServer..._rdi指令 执行sql

如何查看主板的型号和名称-程序员宅基地

文章浏览阅读1.9k次。 电脑刚开机时第一屏,找到HOME键右上角的Pause Break键按下,电脑屏幕会暂停 ,找到屏幕最下边显示的一行就有主板的型号和名称。 下面我讲讲主板选购四大盲点: 对于电脑来说,主板上承载着电脑中最重要的元件,它的重要性是不言而喻的,同时,主板也是各大厂商竞争的舞台——放眼当今主板市场,各大厂商竞相登台,各种型号相继亮相。面对如此热闹的市场,你是否对主板的选购感觉到有一些说不出来的盲..._怎么查看主板型号和品牌

推荐文章

热门文章

相关标签