最近在研究nutch,我根据网上教程用插件方法把中文分词集成到nutch1.2中,运行爬虫可以,但把项目ant成war后,在网页中搜索索引里没有的词时能显示页面,但如果搜索索引里有的词语就会出现一个空白页,什么也没有,tomcat的控制台能显示出搜索结果,也没报错。于是我就一点一点地把新增代码移除,结果发现是替换了nutch原本分词的问题。网上的有些教程说要修改NutchDocumentAnalyzer.java把nutch原来的分词替换成自己的分词,代码是
public NutchDocumentAnalyzer(Configuration conf) {
this.conf = conf;
CONTENT_ANALYZER = new ContentAnalyzer(conf);
ANCHOR_ANALYZER = new AnchorAnalyzer();
//Paoding paoding = PaodingMaker.make(); 加入自己的分词器,我的是庖丁
//PAODING_ANALYZER = new PaodingAnalyzer().queryMode(paoding);
}
public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer;
if ("anchor".equals(fieldName))
analyzer = ANCHOR_ANALYZER;
else
analyzer = CONTENT_ANALYZER;
//analyzer = PAODING_ANALYZER; 这句替换了nutch的分词器
return analyzer.tokenStream(fieldName, reader);
}
我注释掉了我的中文分词器。
把分词词换为原来的就不会出现空白页了,不知道是什么原因,还没深入研读源码,还有一个问题是如果只用插件中的分词不替换nutch的分词的话,执行爬虫时得到的分词结果很怪,有时一整句都分出来了。
2010-10-4