最近在研究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