- 浏览: 1183382 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (350)
- Ajax研究 (2)
- javascript (22)
- struts (15)
- hibernate (12)
- spring (8)
- 我的生活 (28)
- jsp (2)
- 我的随笔 (84)
- 脑筋急转弯 (1)
- struts2 (2)
- ibatis (1)
- groovy (1)
- json (4)
- flex (20)
- Html Css (5)
- lucene (11)
- solr研究 (2)
- nutch (25)
- ExtJs (3)
- linux (6)
- 正则表达式 (2)
- xml (1)
- jetty (0)
- 多线程 (1)
- hadoop (40)
- mapreduce (5)
- webservice (2)
- 云计算 (8)
- 创业计划 (1)
- android (8)
- jvm内存研究 (1)
- 新闻 (2)
- JPA (1)
- 搜索技术研究 (2)
- perl (1)
- awk (1)
- hive (7)
- jvm (1)
最新评论
-
pandaball:
支持一下,心如大海
做有气质的男人 -
recall992:
山东分公司的风格[color=brown]岁的法国电视[/co ...
solr是如何存储索引的 -
zhangsasa:
-services "services-config ...
flex中endpoint的作用是什么? -
来利强:
非常感谢
java使用json所需要的几个包 -
zhanglian520:
有参考价值。
hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS
PluginRepository 是plugin的入口,保存了所有的Plugins,加载流程如下:
1. 解析plugin.folder下面的所有plugin的plugin.xml文件:
几个主要的解析函数如下:
(1) parseExtension(rootElement, pluginDescriptor);
解析extension element:
<extension id="org.apache.nutch.net.urlfilter.urllength"
name="Nutch URL Length Filter"
point="org.apache.nutch.net.urlfilter">
<implementation id="UrlLengthFilter"
class="org.apache.nutch.net.urlfilter.urllength.UrlLengthFilter">
</implementation>
</extension>
解析后加载到PluginDescriptor:
pPluginDescriptor.addExtension(extension);
(2)parseLibraries(rootElement, pluginDescriptor);
解析下列的lib element:
<runtime>
<library name="lib-http.jar">
<export name="*"/>
</library>
</runtime>
解析后加载到PluginDescriptor:
pDescriptor.addNotExportedLibRelative(libName);
pDescriptor.addNotExportedLibRelative(libName);
(3)parseRequires(rootElement, pluginDescriptor);
解析requires :
<requires>
<import plugin="nutch-extensionpoints"/>
</requires>
解析后加载到PluginDescriptor:
pDescriptor.addDependency(plugin); 确定依赖关系
(4) parseExtensionPoints(rootElement, pluginDescriptor);
解析extension point: 主要针对nutch-extensionpoints下面的plugin.xml
<extension-point
id="org.apache.nutch.indexer.field.FieldFilter"
name="Nutch Field Filter"/>
解析后加载到PluginDescriptor:
pPluginDescriptor.addExtensionPoint(extensionPoint);
2. 对plugin的过滤:
根据plugin.includes及plugin.excludes过滤plugin,并检查plugin的依赖关系,确认是否有“missing dependency”或“circular dependency”存在。
3. installExtensionPoints: 集合所有的ExtensionPoints;
4. installExtensions: 验证每个extension是否有对应的ExtensionPoint。
5. extension中的point的value必须在extension-point 中有定义, 即:在定义了某个plugin的plugin.xml之后,必须在nutch-extensionpoints的plugin.xml中注册下 .
6.
Nutch-site.xml中需定义“Plugin.folders”的value,指定plugin的路径。
<property>
<name>plugin.folders</name>
<value>plugins</value>
<description>Directories where nutch plugins are located. Each element may be a relative or absolute path. If absolute, it is used as is. If relative, it is searched for on the classpath.
</description>
</property>
另外需要定义“plugin.includes”,确定要加载的plugin。
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-(text|html)|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>
7.plugin.folders只是指示了在哪个文件目录可以找到所有的plugin;
plugin.includes必须把plugin包含进去,才能在PluginRepository中get想要的plugin。
---------------------------------------------------------------自定义plugin--------------------------------------------------------------------------------
1. 定义URLFilter的interface, 必须指定X_POINT_ID:(由于nutch已经定义了URLFilter插件了,这步省略)
public interface URLFilter extends Pluggable, Configurable {
/** The name of the extension point. */
public final static String X_POINT_ID = URLFilter.class.getName();
}
2. 定义UrlLengthFilter:
public class UrlLengthFilter implements URLFilter{
//TODO: 具体实现
}
3. 在"plugin.folder"目录下添加一个 urlfilter-urllength 的plugin,相应的plugin.xml如下: extension节点的id属性值是UrlLengthFilter 类所在的package name,
implementation 节点属性的class指定需要实现的具体类名,通过该名找到相关的类。
<plugin
id="urlfilter-urllength"
name="URL length Filter"
version="1.0.0"
provider-name="nutch.org">
<requires>
<import plugin="nutch-extensionpoints"/>
</requires>
<extension id="org.apache.nutch.net.urlfilter.urllength"
name="Nutch URL Length Filter"
point="org.apache.nutch.net.urlfilter">
<implementation id="UrlLengthFilter"
class="org.apache.nutch.net.urlfilter.urllength.UrlLengthFilter">
</implementation>
</extension>
</plugin>
4. 确保nutch-extensionpoints的plugin.xml中有如下的extensionpoint定义: 这里id必须与上一步extension中的point对应。
<extension-point
id="com.roboo.procrawl.net.URLFilter"
name="Nutch URL Filter"
/>
5. 将这个插件的id(即urlfilter-urllength)添加到nutch-site.xml的"plugin.includes"定义中。
发表评论
-
nutch-1.2结合hadoop分布式搜索
2011-07-13 10:50 2658nutch-1.2结合hadoop分布式搜索。 1、网上关于 ... -
nutch-1.x分布式索引指定
2011-07-04 17:15 12711、nutch-1.x中在crawl.java中。最后有这么一 ... -
在nuthc中加入中文分词
2011-05-15 11:41 599nutch实用的分词是默认的,对中文支持的不是很好。 网上有 ... -
nutch1.2中加入中文分词以及搜索错误解决
2011-03-02 12:15 1431在nutch当中加入中文分词。这里我使用的IK_Analyze ... -
使用ant编译时错误:Specify at least one source--a file or resource
2011-02-22 11:12 2458将命令环境切换到Nutch目录下,执行ant命令。出现如下错误 ... -
readdb导致fetch job中断的问题
2011-02-16 13:39 1653Nutch readdb命令可以用来统计目前crawldb库里 ... -
Nutch fetch job中时间的分配比例
2011-02-16 13:38 1330下面是nutch fetch job中map shuffle ... -
nutch UI 多台机子部署有关jetty配置servlet的问题
2010-01-18 17:35 2463我们jetty是一个小型的web服务器,可以嵌入到程序当中去, ... -
nutch中plugin.folders的配置
2009-12-21 18:07 2421今天在公司做nutch的调试时,犯了一个低级的错误,在这里记录 ... -
把另外的一个项目加入了nutch中来
2009-12-20 23:59 1087周末在家闲的慌,把在公司搞的nutch拿回来在家里试着做了下, ... -
今天来用一个例子来详细讲解下nutch当中到底是如何自定义插件的
2009-12-17 10:29 1658接上面一篇,今天来用一个例子来详细讲解下nutch当中到底是如 ... -
nutch plugin详细分析
2009-12-16 18:06 1389当某个插件需要被加载时, Nutch 会加载所有插件的相关接口 ... -
如何读取nutch抓取数据
2009-12-16 17:43 3599如何读取nutch抓取数据 1.首先nutch的配置已经在博 ... -
Nutch1.0 Ui启动在tomcat中的配置
2009-12-07 14:09 1349<!-- @pa ... -
nutch如何才能抓取到动态的url
2009-11-25 15:27 5346http://www.tianya.cn/new/Tianya ... -
配置完成nutch容易出现的错误
2009-11-25 11:50 24801.1.2 运行crawl报错Job failed Ex ... -
在eclipse中如何配置nutch1.0
2009-11-25 11:44 1428<1>: 首先从http://apache.eto ... -
nutch的基本工作流程理解
2009-11-21 00:17 1894(一):Nutch的工作流程: Crawdb、l ... -
cygwin配置说明
2009-11-21 00:15 2358开始,一步一步来:了解Cygwin的人都知道,就是到 : ht ... -
第一次使用nutch
2009-11-19 23:13 1250Nutch 是一个基于Lucene开发的诞生不久的开放源代码( ...
相关推荐
Nutch Htmlunit Plugin 重要说明: 当前项目基于Nutch 1.X系列已停止更新维护,转向Nutch 2.x系列版本的新项目:http://www.oschina.net/p/nutch-ajax 项目简介 基于Apache Nutch 1.8和Htmlunit...
5. nutch工作流程分析...25 5.1 爬虫...25 5.1.1 工作策略...25 5.1.2 工作流程分析....25 5.1.3 其它..27 5.2 索引...27 5.2.1 索引主要过程....27 5.2.2 工作流程分析....28 5.2.3 倒排索引(inverted index)....29...
Nutch插件允许开发者根据特定需求定制和扩展Nutch的功能,如自定义爬虫策略、数据解析方式、索引处理逻辑等。 #### 二、Nutch插件开发详解 Nutch插件的开发涉及到以下几个关键步骤: 1. **创建插件目录结构**:...
因此,利用Eclipse作为开发工具,可以简化Nutch的配置流程,提供一个友好的图形界面来管理项目和代码,同时利用其强大的调试功能,帮助开发者快速定位和解决问题。 ### 二、Eclipse配置Nutch的步骤详解 #### 步骤1...
### Nutch插件开发与服务器发布流程详解 #### 一、Nutch插件开发流程 **1. Nutch开发客户端环境搭建** 为了开始Nutch插件的开发工作,首先需要搭建一个适合的开发环境。这通常包括安装Java开发工具包(JDK)、...
每个插件都有一个`plugin.xml`文件,用于描述插件信息,以及一个`build.xml`文件,指导Ant构建工具如何编译插件。 举例来说,如果我们想要创建一个插件,用于根据搜索词推荐相关网页,我们需要定义一个新的扩展点,...
在本篇中,我们将深入探讨Nutch的开发细节,包括其架构、工作流程、配置以及如何进行定制化开发。 1. **Nutch架构** Nutch的核心架构分为四个主要部分:Crawling(爬虫)、Parsing(解析)、Indexing(索引)和...
Nutch的主要工作流程包含爬取网页数据、解析网页内容、索引网页内容以及提供搜索接口供用户查询。Nutch利用了Lucene作为搜索引擎核心库,提供全文搜索功能,并且Nutch自身也是一个完整的应用程序,包括了爬虫和...
Nutch的安装过程涉及下载Nutch的发布包,解压缩,然后配置相关参数,如设置HADOOP_HOME指向Hadoop安装路径,以及根据硬件资源调整Nutch的内存分配。 **2.3 Tomcat的安装与配置** Nutch使用Tomcat作为其web服务器,...
在应用方面,提到了如何修改源码和使用插件机制(plugin),以及如何利用Nutch API和OpenSearch API接口。插件机制是Nutch灵活性的重要体现,它允许用户通过插件来扩展Nutch的功能。编写插件部分讲解了如何开发自己...
5. nutch工作流程分析...25 5.1 爬虫...25 5.1.1 工作策略...25 5.1.2 工作流程分析....25 5.1.3 其它..27 5.2 索引...27 5.2.1 索引主要过程....27 5.2.2 工作流程分析....28 5.2.3 倒排索引(inverted ...
Nutch的基本组成和工作流程被详细讲解,包括爬虫的策略和流程、索引的主要过程、倒排索引等原理性内容。 7. Nutch工作流程分析 工作流程分析进一步深入到爬虫的工作策略和流程、索引过程、搜索和分析等部分,并对...
- **什么是plugin**:Nutch支持插件机制,允许用户自定义爬虫、索引器和搜索模块的行为。 - **使用plugin的好处**:增强功能、提升灵活性、简化开发流程。 - **plugin工作原理**:通过扩展点和插件注册机制,实现...
2. **java.lang.RuntimeException: org.apache.nutch.plugin.PluginRuntimeException: java.lang.ClassNotFoundException: org.apache.nutch.net.RegexURLFilter** 这个问题可能是因为插件目录设置不正确。在 `...
(1)在conf/nutch-default.xml中,将`plugin.folders`的值更改为`./src/plugin`。 (2)创建一个名为urls的目录,里面放一个txt文件,包含你要抓取的初始网址。在conf/nutch-site.xml中,添加`http.agent.name`...
本文将详细介绍Nutch插件机制的核心概念、工作原理以及如何开发和使用插件。 #### 二、Nutch插件机制的重要性 Nutch之所以采用插件机制,主要有以下三个原因: 1. **可扩展性**:通过插件,Nutch允许用户根据自己...
10. **扩展和优化**:Nutch支持插件机制,可以根据需求编写自己的插件,例如自定义爬虫策略、解析器或索引器。通过`plugin/`目录下的配置文件来启用或禁用插件。 总结来说,Nutch安装配置涉及Java环境、源码编译、...
插件(Plugin)作为Nutch的核心组件之一,为用户提供了一种灵活的方式来定制和扩展Nutch的功能。通过这种方式,不仅可以增强Nutch的原有功能,还能根据特定的需求添加新的功能模块。 Nutch插件系统具有以下优势: ...
### Nutch 2.3.1 安装与配置指南 #### 一、配置 ant 环境 在安装 Nutch 之前,首先需要确保环境中已经安装了 Apache Ant 工具,因为 Nutch 的构建过程依赖于 Ant。以下是具体步骤: 1. **下载 ant**: - 访问 ...