首先作以下几点说明,以方便理解:
(1)目前,Nutch中文分词方式大致有两种方式:
一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。
二是编写分词插件。这种方式是按照Nutch定义的插件编写规则重新编写或者添加中文分词插件。
以上两种方式都是可取的。目前,由于开源社区的活跃,已经有很多种分词组件的出现,无论是修改源代码的方式还是编写分词插件的方式,都是依赖于这些分词组件的。如IK、JE、庖丁等。
(2)NutchAnalysis.jj文件用于搜索时;NutchDocumentAnalyzer.java
(3)用到了javacc、ant两种工具。javacc用于编译NutchAnalysis.jj文件,该文件最好拷贝到其它目录编译,编译后再把生成的7个文件拷贝回原目录,如果在原目录下编译的话只会生成4个文件。
(4)build.xml文件是ant的配置文件
(5)ant、javacc工具的使用方法类似,解压后把bin目录的路径加到系统目录(path)中,重启计算机即可。详看: Ant、Javacc
好了,下面是具体过程:
把IKAnalyzer3.2.8.jar文件拷入nutch/lib目录下
在nutch/src/java/org/apache/nutch/analysis目录
在该文件里找到
用javacc工具生成NutchAnalysis.jj的源代码,将生成的所有java源代码(7个文件)全部覆盖到
javacc的使用方法:cmd进入命令行,切换到NutchAnalysis.jj所在目录(最后把它拷贝到其它目录进行编译,如D盘),D:,输入命令
javacc
就会生成7个文件了。
在nutch/src/java/org/apache/nutch/analysis目录
(1)在import区域加入下面的代码(不确定需不需要这步)
import
(2)在两个位置加入ParseException异常捕捉命令,否则ant时会提示。下面的代码已经添加
view
- public
static Query parseQuery(String queryString, Configuration conf) throws IOException,ParseException { -
return parseQuery(queryString, null, conf); -
}
- public
static Query parseQuery(String queryString, Analyzer analyzer, Configuration conf) -
throws IOException,ParseException { -
NutchAnalysis parser = new NutchAnalysis( -
queryString, (analyzer != null) ? analyzer : new NutchDocumentAnalyzer(conf)); -
parser.queryString = queryString; -
parser.queryFilters = new QueryFilters(conf); -
return parser.parse(conf); -
}
(1)引入IK包
import
import
(2)修改public
view
- public
TokenStream tokenStream(String fieldName, Reader reader) { -
-
Analyzer analyzer = new org.wltea.analyzer.lucene.IKAnalyzer(); -
return analyzer.tokenStream(fieldName, reader); -
}
(1)在
<include
(2)修改<targe
cmd进入命令行,切换到nutch所在目录,执行ant命令,就会开始ant工作。完成后会在nutch目录下生成build目录
(1)将build/nutch-1.2.job替换nutch目录下文件
(2)将build/nutch-1.2.jar替换nutch目录下文件
(3)将build/nutch-1.2.war替换nutch目录下文件,这步不需要的
注:如果ant后没有在build目录下生成nutch-1.2.jar和nutch-1.2.war文件,则命令行执行命令
注意需要配置好环境(conf/nutch-site.xml,crawl-urlfilter.txt,urls目录等,详看 环境配置
bin/nutch
bin/nutch
用Luke查看索引,如果已变成词组,则索引成功;也可以直接用Nutch自带的NutchBean命令检索网页中含有的词组,如果有结果说明成功,如
bin/nutch
注:需要在conf/nutch-site.xml文件中如下配置,E:/nutch/csdn为搜索结果目录
<property>
<name>searcher.dir</name>
<value>E:/nutch/csdn</value>
<description></description>
</property>
(1)将新生成的nutch-1.2.war拷贝到Tomcat
(2)将新生成的nutch-1.2.jar文件和分词包(IKAnalyzer3.2.8.jar)拷贝到tomcat中WEB-INF/lib下面
(3) http://localhost:8080/nutch
注意:Tomcat/webapps/nutch/WEB-INF/classes/nutch-site.xml
(1)关于NutchDocumentAnalyzer的修改,网上有分成多步骤的,一开始我也没搞清楚哪个对,仔细看了下,发现是一样的,只是把变量定义等单独成一行命令而已。 http://blog.csdn.net/laigood12345/archive/2010/12/12/6071046.aspx
以下参考自:
讓
已不能访问,可以到我的百度文库查看
网上略显麻烦的或错误的资讯:
(1)将build/classes打包成nutch-1.2.jar
cd
jar
或者(jar
麻烦,可以直接用ant
(2)即使用原始的nutch所crawl下來的資料,將
(3)將
参考资料:
1.
http://trac.nchc.org.tw/cloud/wiki/waue/2010/0715
2.Nutch1.2增加IKAnalyzer中文分词
http://blog.csdn.net/laigood12345/archive/2010/12/12/6071046.aspx
3.
http://blog.csdn.net/oprah_7/archive/2011/03/09/6234296.aspx
4.
http://blog.csdn.net/mutou12456/archive/2010/04/01/5439935.aspx
5.
http://yjiezhao.blog.163.com/blog/static/115232239200910198383717
Nutch中文分词IK-Analyzer搜索修改问题在创建index
Java
而在搜索时,在创建
Java