nutch 0.9二次开发--添加JE中文分词

luceneorg.apache.lucene.analysis中,它的分词模块抽象出来了一个抽象类—Analyzer.java。这个类包含这个抽象方法

     public abstract TokenStream tokenStream(String fieldName, Reader reader);

     用户自定义的Analyzer主要就是实现这个方法。这个方法要返回一个token流。而要返回一个分词的完整的token流,又要写另一个类的子类,它就是——Tokenizer.java,而它又是继承自TokenStream.java的。用户自定义的Tokenizer类要写的一个关键方法是next()(在TokenStream类中定义).这个方法就是返回一个个的中文词语。

0.按照windows下安装nutch步骤,配置好nutch,使其能够进行抓取网页。

1.下载lucene的中文分词jarje-analysis-1.5.1.jar. (非开源软件)  http://download.csdn.net/source/637846 并将je-analysis-1.5.1.jar拷到${nutch}\lib目录下

2、修改${nutch}\src\java目录下的源代码

   1)修改org.apache.nutch.analysis.NutchDocumentAnalyzer.java文件

 public TokenStream tokenStream(String fieldName, Reader reader) { // line 100

          MMAnalyzer analyzer=new MMAnalyzer();

          return analyzer.tokenStream(fieldName, reader);

}

     需要导入import jeasy.analysis.*;否则编译不能通过。

2)修改org.apache.nutch.analysis.NutchAnalysis.java文件

     导入import jeasy.analysis.*;

     替换其parse()方法如下:

final public Query parse(Configuration conf) throws ParseException,IOException {
Query query = new Query(conf);
StringReader input;
input=new java.io.StringReader(queryString);
org.apache.lucene.analysis.TokenStream
tokenizer=new MMAnalyzer().tokenStream(queryString,input);
for(org.apache.lucene.analysis.Token t=
tokenizer.next();t!=null;t=tokenizer.next()){
   String[] array={t.termText()};
   query.addRequiredPhrase(array);
}
{if (true) return query;}
    throw new Error("Missing return statement in function");
}

 

org.apache.nutch.searcher.Query 修改为:

  public static Query parse(String queryString, String queryLang, Configuration conf)

  throws IOException {

    try {

       return fixup(NutchAnalysis.parseQuery(

               queryString, AnalyzerFactory.get(conf).get(queryLang), conf), conf);

    } catch (ParseException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

    }

    return null;

  }

3、使用ant工具重新构建nutch-0.9,进入nutch-0.9安装目录,输入ant命令。进行构建。

4、将${nutch}\build\classes文件夹下的文件打成jar文件.命令如下:

   jar cvf nutch-0.9.jar org

   拷贝nutch-0.9.jar文件到nutch的根目录下,替换原有的nutch-0.9.jar文件。

  拷贝build目录下的nutch-0.9.job文件到nutch根目录下,替换原有的nutch-0.9.job文件。

5、在cygwin下输入命令 bin/nutch crawl url.txt -dir mydir -depth 3 -threads 5,开始抓取网页。

6、爬虫完毕后用lukehttp://download.csdn.net/source/634007 )查看:file>open lucene index,定位到${nutch}\${抓取网页目录}\index目录。建立的索引已有单字变为词组了。

  注意:luke运行的前提是安装jdk1.6版本。

7、将nutch-0.9.jarje-analysis-1.5.1.jar文件放到web应用的lib下,打开nutch-0.9Web应用目录下的 WEB-INF\classesnutch-site.xml文件,将

<configuration></configuration>

改为

D:\\nutch-0.9\\mydir:表示搜索结果存放的目录

<configuration>

<property>

     <name>searcher.dir</name>

     <value>D:\\nutch-0.9\\mydir</value>

</property>

</configuration>

value属性的值为从网站抓取的文件存放的路径,也就是上文中mydir的完整路径。

重启tomcat这时搜索都是按照词搜索了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值