如何跟换nutch1.0中文分词,我在网上基本把所有的办法都是试了一遍但是没有一个是可行的,真是怀疑这些人是纯转载别人的文章还是自己确实有试过,
这里把步骤详细给大家说一下下边是别人的文章,但是其中跟真实的情况有出入,我这里有所修改
前提nutch-1.0配置正常能正常的爬取
找到 src/java/org/apache/nutch/analysis/NutchAnalysis.jj 文件
line 130:
| <SIGRAM: <CJK> >
change to:
| <SIGRAM: (<CJK>)+ >
run “javacc”
cd nutch
-1.0
/src
/java
/org
/apache
/nutch
/analysis
/usr
/
local
/javacc
-3.2
/bin
/javacc NutchAnalysis.jj
3 files will be regenerated:
这里会生成7个文件,这里列举3个
NutchAnalysis.java
NutchAnalysisTokenManager.java
NutchAnalysisConstants.java
把生成的7个文件全部替换/src/java/org/apache/nutch/analysis下的七个文件
其中会抛出一个异常,捕获一下就ok了
中文分析部分(查询和索引):
将analyzer更换为ik中文分析器
a 把 IKAnalyzer3.1.5GA.jar 放到lib文件夹
b org.apache.nutch.analysis.NutchDocumentAnalyzer
修改TokenStream tokenStream(String fieldName, Reader reader)
修改后的代码 Analyzer analyzer;
analyzer=new IKAnalyzer();
return analyzer.tokenStream(fieldName, reader);
重新编译Nutch:
在build.xml添加一条指令(在第195行的下面加入一行),使的编译war文件的时候加入ik分词器的jar文件。
build.xml
<lib dir="${lib.dir}">
<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="IKAnalyzer3.1.5GA.jar"/> <!-- add this line -->
</lib>
用ant重新编译build.xml文件
使用新生成的含中文分词功能的模块:
只用到刚才编译生成build文件夹下面一个文件,
build/nutch-1.0.job
把这个.job文件拿出来替换原来的nutch-1.0包里的.job文件
然后用把build下的classes文件夹打成nutch-1.0.jar文件 指令:jar cvf nutch-0.9.jar org
最后把nutch-1.0.war重新生成的文件夹下lib中的nutch-1.0.jar跟换成你新生成的nutch-1.0.jar文件,还要放入ik分词器的jar文件
最后爬取,搜索的结果就是按ik分过的中文词