为Nutch 1.0添加JE中文分词

阅读更多

先下载Nutch 1.0的源文件:

svn co http://svn.apache.org/repos/asf/lucene/nutch/tags/release-1.0 ./nutch-1.0

更改查询语法解析部分:

改变tokenize的方式(原来为中文单字识别)

modify “src/java/org/apache/nutch/analysis/NutchAnalysis.jj”line 130:

| >

change to:

| )+ >

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:

NutchAnalysis.java

NutchAnalysisTokenManager.java

NutchAnalysisConstants.java

中文分析部分(查询和索引):

将analyzer更换为JE中文分析器

a). copy “je-analysis-1.5.3.jar” to lib/b). modify NutchDocumentAnalyzer.java

$ svn diff src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java

Index: src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java

===================================================================

--- src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java (revision 764668)

+++ src/java/org/apache/nutch/analysis/NutchDocumentAnalyzer.java (working copy)

@@ -27,6 +27,8 @@

import org.apache.lucene.analysis.Token;

import org.apache.hadoop.conf.Configuration;

+import jeasy.analysis.*;

+

/**

* The analyzer used for Nutch documents. Uses the JavaCC-defined lexical

* analyzer {@link NutchDocumentTokenizer}, with no stop list. This keeps it

@@ -65,8 +67,14 @@

/** Constructs a {@link NutchDocumentTokenizer}. */

public TokenStream tokenStream(String field, Reader reader) {

- return this.commonGrams.getFilter(new NutchDocumentTokenizer(reader),

- field);

+ if ("content".equals(field) || "title".equals(field) || "DEFAULT".equals(field)) {

+ MMAnalyzer analyzer=new MMAnalyzer();

+ return analyzer.tokenStream(field, reader);

+ }

+ else {

+ return this.commonGrams.getFilter(new NutchDocumentTokenizer(reader),

+ field);

+ }

}

}

重新编译Nutch:

在build.xml添加一条指令(在第195行的下面加入一行),使的编译war文件的时候加入je-analysis的jar文件。build.xml

compile:

cd nutch-1.0

export ANT_HOME=/usr/local/apache-ant-1.7.1

/usr/local/apache-ant-1.7.1/bin/ant

/usr/local/apache-ant-1.7.1/bin/ant war

使用新生成的含中文分词功能的模块:只用到刚才编译生成的下面三个文件,替换Nutch 1.0的tarball解压后的对应文件

build/nutch-1.0.jar

build/nutch-1.0.job

build/nutch-1.0.war

别忘了把“je-analysis-1.5.3.jar” 拷贝到解压后的Nutch 1.0 tarball中的lib/

That’s it.

=============================

搞了好几天的nutch中文分词,今天终于搞定了,网上的文章有两种方式,其中一种是直接修改源码的方式,另外一种是使用插件的方式。应该说这些资料的思路都是正确的,作者想必也一定弄出来过。不过,过程略显简单,对后来者的学习帮助不是很大。

下面就将中文分词的实现方法予以介绍,请注意,本文的基础是你的电脑上已经成功配置好nutch并实现了中文的单字分词。这里只是实现更为合理的非单字分词。

你需要用到的工具有:javacc 、ant、JE分词包。

1.对建立索引所用分词工具的修改

将下载的中文分词包放到lib目录下,改名为analysis-zh.jar(当然,你也可以不用改)。找到下面文件

src\java\org\apache\nutch\analysis\NutchDocumentAnalyzer.java

修改tokenStream方法如下

public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer;
analyzer= new MMAnalyzer();
return analyzer.tokenStream(fieldName, reader);
}

注意:由于加入信息的分析类,你需要将该类导入。使用如下语句。

import jeasy.analysis.*;

2.对查询所用分析部分的修改

src\java\org\apache\nutch\analysis\中的NutchAnalysis.jj文件

>

改为:| )+ >

使用javacc工具将NutchAnalysis.jj生成java文件,共会生成7个java文件,将他们拷贝到下面的文件夹中替 换原有文件。

src\java\org\apache\nutch\analysis

如何安装与使用javacc?

下载javacc并解压,然后将javacc的主目录添加到环境变量下。进入命令行,输入javacc,如果不出现不能识别该命令之类的说法,证明安装成功。

进入NutchAnalysis.jj文件所在的目录,输入javacc NutchAnalysis.jj命令就会生成7个java文件了。

3.重新编译工程文件

这里你需要用到ant工具了,那么ant工具怎么安装呢?

ant的安装与配置与 javacc类似,下载后解压,然后在path环境变量中加如指向ant下的bin文件夹的路径。

使用:从命令行进入nutch目录中,输入ant命令,它会自动根据当前目录下的build.xml进行重建。重建完毕后会在改目录下产生一个build文件夹。

4.重建后的文件替换

一、将nutch-0.x.x.job文件拷贝出来替换nutch目录下的同名文件。

二、将\build\classes\org\apache\nutch\analysis目录下的所有文件拷贝替换nutch-0.x.x.jar中org\apache\nutch\analysis目录下的文件。

三、将nutch-0.x.x.jar文件和你的分词包(我的是analysis-zh.jar)拷贝到tomcat中WEB-INF\lib下面。

5.重新爬行与建立索引,重新启动tomcat即可。

你可能感兴趣的:(Ant,Java,Apache,lucene,SVN)