`

今天来用一个例子来详细讲解下nutch当中到底是如何自定义插件的

阅读更多

接上面一篇,今天来用一个例子来详细讲解下nutch当中到底是如何自定义插件的。


1.首先在src/plugin/,新建一个文件夹,这个文件夹我们姑且就叫(urlfilter-urllength ),从名字就可以看出我们这个自定义的插件的作用是什么了。
   1.我们这个类实现了URLFilter.当然要实现其没有实现的方法了。public class UrlLengthFilter implements URLFilter。
   2.下面贴出详细的源码看下:
   public class UrlLengthFilter implements URLFilter {
    private static final Log LOG = LogFactory.getLog(UrlLengthFilter.class);
    private Configuration conf;
    @Override
    public String filter(String inUrl) {
        LOG.info("begin UrlLengthFilter is .....");
        String urlFilter = "";
        if (inUrl == null || inUrl == "") return urlFilter;
        String url = inUrl.toLowerCase();
        // from first character after 'http://' or first character
        int start = url.indexOf("http://");
        start = start < 0 ? (url.indexOf("https://") == 0 ? 8 : 0) : 7;
        url = url.substring(start);
        int end = url.indexOf("/");
        end = end < 0 ? url.length() : end;
        // return the first character to the first or end
        urlFilter = url.substring(0, end);
        LOG.info("urlFilter is " + urlFilter);
        return urlFilter;
    }

    @Override
    public Configuration getConf() {
        return conf;
    }

    @Override
    public void setConf(Configuration conf) {
        this.conf = conf;
    }
   }   

2.当然要有plugin.xml这个.xml的作用就不用说了不吧!很明显就是加载我们所写的类(实现某一个功能)。代码还是贴出来分析下:
<?xml version="1.0" encoding="UTF-8"?>
<plugin
   id="urlfilter-urllength"
   name="Suffix URL Filter"
   version="1.0.0"
   provider-name="xp.com">
   <requires>
      <import plugin="nutch-extensionpoints"/>
   </requires>
   <extension id="com.xp.se.test.urllength"
              name="Nutch URL Length Filter"
              point="org.apache.nutch.net.URLFilter ">
      <implementation id="UrlLengthFilter" class="com.xp.se.urllength.UrlLengthFilter"/>
   </extension>
</plugin>

分析:
    a、第一句就知道吧,xml声明的编码格式和所使用的版本。
    b、id : 这个插件的id。
       name : 插件的的作用是什么。
      version : 插件的版本。
      provider-name : 是谁提供的(源)。
    c、nutch-extensionpoints : 这里面是ntuch自带的几个插件。我们在这里是把它现引进来。
    d、extension : 扩展,顾名思义就是说:把我们自己写好的插件交给nutch来用。相信读过nutch源码的都很清楚还有一个extension-point.它们之间有什么关系。不过不知道也没关系,跟着来做就行了。回头从网上google下就可以明白的。
    e、id : 是所定义一个名称
      name: 这个扩展的作用是什么。功能是什么。看了这个后可以一目了然啊。
      point : 是从nutch那个扩展点集成的。这个point是要和nutch-extensionpoints/plugin.xml中的某个id相一致 的。
      implementation : 我们自己写的类。
3.通常还有一个build.xml.这个是用来编译的。
4.在nutch-site中加上我们写的这个插件吧,跑下试试。
<property>
  <name>plugin.includes</name>
  <value>protocol-http|urlfilter-(regex|urllength )|parse-(text|html|js)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
  <description>Regular expression naming plugin directory names to
  include.  Any plugin not matching this expression is excluded.
  In any case you need at least include the nutch-extensionpoints plugin. By
  default Nutch includes crawling just HTML and plain text via HTTP,
  and basic indexing and search plugins. In order to use HTTPS please enable
  protocol-httpclient, but be aware of possible intermittent problems with the
  underlying commons-httpclient library.
  </description>
</property>
细心的朋友已经发现我们在上面已经加上了。没有发现的话,再细致看下....
总结 :
自己可以跟踪下。肯定进来。比如我们在url中写一个url : http://www.163.com/ 通过我们写的这个会变成 : www.163.com 。程序就会终止了。写这个目的是现理清这个nutch的插件的加载流程和学习如何
自定义一个自己的插件。我们可以写很多的plugin,都可以通过上面所讲的这种方法来实现。

分享到:
评论
1 楼 ximinjie 2010-03-04  
能提供源码吗?
我按你的方法加载了,但是没有执行
ximinjie@gmail.com
QQ:146277

相关推荐

    nutch的插件机制

    举例来说,如果我们想要创建一个插件,用于根据搜索词推荐相关网页,我们需要定义一个新的扩展点,可能是一个QueryEnhancer接口,然后实现这个接口,提供推荐算法。这样,在查询处理阶段,Nutch会调用我们的插件,...

    Nutch_插件深入研究

    通过具体实例,读者可以更好地理解Nutch插件是如何在实际场景中发挥作用的,以及如何根据自身需求开发和集成插件。 #### 五、在Eclipse中使用Ant构建插件 虽然Nutch插件可以通过命令行工具构建,但在Eclipse中使用...

    Nutch插件机制

    本文将详细介绍Nutch插件机制的核心概念、工作原理以及如何开发和使用插件。 #### 二、Nutch插件机制的重要性 Nutch之所以采用插件机制,主要有以下三个原因: 1. **可扩展性**:通过插件,Nutch允许用户根据自己...

    Nutch插件开发文档

    接下来,我们将详细介绍如何创建一个新的Nutch插件。 1. **使用Eclipse创建Maven项目**:首先,需要在Eclipse环境中创建一个新的Maven项目。Maven是一个项目管理和综合工具,可以帮助管理项目的构建过程。 2. **...

    windows下安装nutch

    4. **Nutch版本**:在例子中使用的是Nutch 0.8版本,但你应该从Apache Nutch的官方网站下载最新的稳定版本,以获取最新的特性和修复。 5. **Tomcat**:Nutch可能需要与Tomcat集成,特别是如果你想使用Nutch的Web...

    Nutch执行单步执行、中间结果文件分析和插件开发基础

    资源中urls.txt是我nutch单步执行过程的种子文件,里面的ppt主要讲解nutch单步执行流程,并获取每次单步执行的结果文件,对文件进行分析,同时ppt还讲解了nutch的插件的基础知识,不是很详细,但是可以作为参考。...

    基于Nutch 的插件系统的原理分析

    为了更好地理解Nutch插件系统的实际应用,我们可以考虑一个具体的例子——添加一个新的文档解析器。 假设我们需要为Nutch添加一个用于解析PDF文档的插件。首先,我们定义一个扩展点`PdfParser`,然后创建一个实现了...

    Nutch中文分词插件的编写与配置

    Nutch中文分词插件的编写与配置,由于Internet的迅猛发展,使得用户查找信息犹如大海捞针,而搜索引擎则能帮用户很好的解决这个问题。 Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行...

    分享一个Nutch入门学习的资料

    “工具”标签则暗示这份资料可能包含了一些辅助工具或者插件的使用,比如如何使用Nutch与Solr或Elasticsearch集成来构建搜索引擎,或者如何使用Nutch的命令行工具进行数据处理。 压缩包中的“Nutch.pdf”可能是...

    nutch1.2 java project

    总的来说,Nutch 1.2 是一个功能强大的网络爬虫框架,这个预配置的项目可以帮助开发者快速启动自己的网络数据采集任务,只需要补充缺失的插件即可开始你的网络爬虫之旅。通过深入学习和实践,你将能够掌握如何高效地...

    nutch

    通过阅读此教程,你可以了解如何搭建 Nutch 爬虫环境,编写自定义插件,以及进行定制化抓取和索引。 总结来说,Nutch 是一个强大的开源网络爬虫工具,借助 Hadoop 实现了大规模的网页抓取和搜索功能。学习和使用 ...

    nutch根据URL来查找快照

    Nutch 是一个开源的搜索引擎项目,它主要用于抓取和索引网页内容,为用户提供搜索功能。在Nutch的工作流程中,"快照"扮演着重要角色。快照是指在某个时间点对网页内容的捕获,它记录了网页当时的原始信息,这对于...

    Nutch插件开发和服务器发布流程

    - 在`nutch/plugin`目录下创建一个名为`index-self`的新目录,用于存放即将创建的插件文件。 - 该目录将包含`build.xml`和`plugin.xml`两个文件,它们分别用于构建和描述插件的基本信息。 **4. 配置构建脚本** - ...

    nutch入门.pdf

    Nutch是一个开源的、用Java编写的搜索引擎工具,它允许用户构建和部署自己的搜索引擎。通过学习和应用Nutch,用户可以理解搜索引擎的工作原理,透明度较高,因为其源代码是开放的,任何人都可以查看其排序算法是如何...

    nutch09版本亲测好用

    Nutch 0.9 提供了一个灵活的抓取框架,允许用户自定义抓取策略。它使用 URL管理器来跟踪已抓取和待抓取的URL,并且能够根据抓取策略决定何时以及如何抓取新页面。 4. **链接分析**: Nutch 使用了 PageRank 算法...

    Nutch入门教程 高清 带书签

    总结来说,Nutch是一款强大的开源搜索引擎工具,适用于大数据环境下的Web抓取和索引。学习Nutch不仅能够了解搜索引擎的工作原理,还能提升在分布式计算领域的实践能力。这份高清带书签的教程,将是你学习Nutch的最佳...

    nutch使用&Nutch;入门教程

    总结,Nutch是一个强大且灵活的网络爬虫工具,对于需要进行大规模网页抓取和搜索的项目来说,是一个理想的解决方案。通过学习和实践这个入门教程,你将能够熟练地运用Nutch进行数据采集和分析。

Global site tag (gtag.js) - Google Analytics