/** *本人亦初学者,如有不正确的地方请多多指教。谢谢! javacc NutchAnalysis.jj *部分内容参考自互联网,如有冒犯,请见谅。 **/
基本信息
本文介绍了如果为Nutch添加中文分词,详细描述了添加中文分词的步骤和应该注意的问题。
准备工作
1.Nutch,到http://nutch.apache.org/ 下载nutch-1.0.tar.gz,下载后直接解压缩即可。
2.javacc,到https://javacc.dev.java.net/ 下载javacc-5.0.zip,下载后同样解压缩,将“javacc路径/bin”添加到环境变量path,在windows命令窗口中输入javacc,未提示错误表示javacc安装成功。
3.ant,到http://ant.apache.org/ 下载ant,下载后解压缩,将"ant路径/bin"添加到环境变量path,在windows命令窗口输入ant,未提示错误表示ant安装成功。
4.IKAnalyzer,到http://code.google.com/p/ik-analyzer/downloads/list 下载IKAnalyzer,本例使用版本是3.1.1GA。
为Nutch添加中文分词
1.让Nutch支持中文分词。
在Nutch目录下,找到src\java\org\apache\nutch\analysis\NutchAnalysis.jj文件,复制到其他的一个目录下,最好该目录下没有java文件,修改NutchAnalysis.jj文件,修改如下:
line 130: | <SIGRAM: <CJK> > change to: | <SIGRAM: (<CJK>)+ >
将windows命令环境切换到改目录下,执行如下命令:
javacc NutchAnalysis.jj
生成了7个java文件,其中NutchAnalysis.java 58行抛出异常,捕获异常即可。将这7个java文件替换掉src\java\org\apache\nutch\analysis目录下相同名称的文件。
2.添加IKAnalyzer。
将下载好的IKAnalyzer3.1.1Stable.jar复制到Nutch目录下的lib文件夹中,修改src\java\org\apache\nutch\analysis目录下NutchDocumentAnalyzer.java文件,添加import语句,修改tokenStream方法。代码如下:
import org.wltea.analyzer.lucene.IKAnalyzer;
public TokenStream tokenStream(String fieldName, Reader reader) { Analyzer analyzer; analyzer = new IKAnalyzer(); return analyzer.tokenStream(fieldName, reader); }
3.重新编译Nutch。
修改Nutch目录下build.xml文件,在195行后加入如下代码:
<include name="IKAnalyzer3.1.1Stable.jar"/>
将命令环境切换到Nutch目录下,执行ant命令。出现如下错误:
Buildfile: build.xml init: BUILD FAILED D:\nutch\nutch-1.0\build.xml:62: Specify at least one source--a file or resource collection. Total time: 0 seconds
解决办法有两个:
(1). 从SVN下载缺失的 config/*.template文件。
(2).修改 build.xml,去掉62-64行,让它不再需要template文件。
将编译生成的build文件夹下的nutch-1.0.job文件替换掉Nutch目录下的nutch-1.0.job文件。
将编译生成的build\classes下文件打包成nutch-1.0.jar,替换掉Nutch目录下的nutch-1.0.jar文件。打包命令如下:
jar cvf nutch-1.0.jar org
将nutch-1.0.war包中的nutch-1.0.jar替换为刚刚生成的nutch-1.0.jar,并且加入IKAnalyzer3.1.1Stable.jar.
至此,全部工作都已经完成。接下来爬行和搜索工作可以参考我的其他两篇入门文章: