Nutch插件开发

 

首先说明的是这个文章只是我实现一个Nutch插件的过程,至于Nutch插件机制的介绍就不在此说明,网上有很多关于Nutch插件机制的文章,可以自己查找。

实现Nutch插件,可以参考Nutch中自带的插件的配置方法,我这里实现的插件是index-field,是主要功能是在索引中加入几个字段,以满足我们业务的需求。下面介绍实现过程:

1. 插件src的目录结构

插件的源码文件一般放在src/plugin下,目录名通常与插件的id同名,以避免在增加插件时搞错插件的id。本例中中文分词插件的idanalysis-zh,为保持与nutch其它插件目录结构统一,则目录结构安排如下:

index-field

├─src/plugin/index-field/src/java 

│ └─FieldIndexFilter.java

├─plugin.xml

├─build.xml

这里plugin.xml为插件的配置文件,用于指定插件所依附的扩展点。

实现过程:

A.在Nutch的工程根目录下添加一个文件夹命名问src/plugin/index-field/src/java ,然后将上面已经实现的插件index-basic的文件下的build.xmlplugin.xml文件赋值到index-field目录下。如图1

2. Eclipse工程设置

创建上述文件后,需要通过Eclipse中的Java Build Path Source Add Folder,把index-fieldsrc目录加进来,这里是index-field/src/java

添加完成之后,在nutch的插件中会看到

这说明你的工程设置正确,然后在这个目录下面创建我的org.apache.nutch.indexer.field. FieldIndexingFilter插件类。这个类实现IndexingFilter接口。(至于为什么,可以查阅插件扩展点extensionpoints的说明)

3. 需要修改的配置文件

1中的两个xml文件 要修改

build.xml修改

<proje ctname="index-field" default="jar-core">//只需要将name值改为index-field

  <import file="../build-plugin.xml"/>

</project>

plugin.xml修改

 

<plugin

   id="index-field"   //插件ID

   name="Field Indexing Filter" //插件的名字

   version="1.0.0"

   provider-name="nutch.org">

   <runtime>

      <library name="index-field.jar"> //打包后的包名

         <export name="*"/>

      </library>

   </runtime>

   <requires>

      <import plugin="nutch-extensionpoints"/> 

   </requires>

   <extension id="org.apache.nutch.indexer.field"  //插件的包名

              name="Nutch Field Indexing Filter"

              point="org.apache.nutch.indexer.IndexingFilter"> //扩展点

      <implementation id="FieldIndexingFilter"  //实现扩展点的类 名           class="org.apache.nutch.indexer.field.FieldIndexingFilter"/> //实现扩展点的类

   </extension>

</plugin>

还需要修改另外两个配置文件

文件路径:src/plugin/build.xml

<target name="deploy">标签下面增加<ant dir=" index-field

" target="deploy"/>

<target name="clean">标签下面增加<ant dir=" index-field

" target="clean"/>

文件路径:conf/nutch-default.xml

搜索<name>plugin.includes</name>,在<value>部分增加:index-field

这样配置文件就修改完成,只需要给FieldIndexingFilter这个类中添加代码即可,完成之后要用ant编译一下工程目录下的build.xml,原因是文件中<name>plugin.folders</name>标签定义了nutch加载插件的根目录,默认值为plugins,需要用ant编译,用eclipse编译路径不正确,无法把插件导出到plugins下。

 这次这个插件开发完成,在执行index的时候,截图如下,可以看到FieldIndexingFilter已被加载。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值