- 浏览: 1183403 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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
当某个插件需要被加载时, Nutch 会加载所有插件的相关接口到缓存,此后每个插件需要实例的时候,根据相关接口和相关接口实现实例在缓存内的记录,使用反射实现一个实例并返回,下面以 QueryFilter 的所有插件被加载例子进行说明。
具体代码参看org.apache.nutch.seacher.QueryFilters<init>
( 1 )当第一次需要得到 QueryFilter 的一个子类的实例时,使用下面这句话试图获得所有的实例:
this.queryFilters =
(QueryFilter[]) conf.getObject(QueryFilter.class .getName());
(2)如果为空,则试图从插件仓库中得到该插件的扩展点:
ExtensionPoint point = PluginRepository.get(conf)
.getExtensionPoint(QueryFilter.X_POINT_ID);
在 PluginRepository.get(conf) 这句话中,返回插件仓库,如果仓库为空,会初始化所有插件:
初始化所有插件PluginRepository.<init>
① 试图从缓存内获得插件仓库。
PluginRepository result = (PluginRepository)CACHE.get(conf);
② 如果未获得,则初始化所有插件
result = new PluginRepository(conf);
l 初始化以活动插件和扩展点的集合
fActivatedPlugins = new HashMap();
fExtensionPoints = new HashMap();
this.conf = conf;
l 获得插件存放位置
String[] pluginFolders = conf.getStrings("plugin.folders");
l 实例化PluginManifestParser:
PluginManifestParser manifestParser = new PluginManifestParser(conf, this);
PluginManifestParser 是一个封装了PluginRepository的工具类,在构造时,分析每个插件的文件夹,把每个plugin.xml文件的内容进行分析,记录了所有的插件接口和插件接口内所包含的所有实现类的关系。
l 放入缓存
CACHE.put(conf, result);
Plugin.xml 描述内容见附录一
(3)获得所有QueryFilter的子类描述。
Extension[] extensions = point.getExtensions();
(4)循环获得每个插件的两个参数,fieldName和rawFieldNames,生成每个filter插件实例。
for (int i = 0; i < extensions.length; i++) {
Extension extension = extensions[i];
ArrayList fieldNames = parseFieldNames(extension, "fields");
ArrayList rawFieldNames = parseFieldNames(extension, "raw-fields");
if (fieldNames.size() == 0 && rawFieldNames.size() == 0) {
if (LOG.isWarnEnabled()) {
LOG.warn("QueryFilter: " + extension.getId()
+ " names no fields.");
}
continue;
}
filters[i] = (QueryFilter) extension.getExtensionInstance();
FIELD_NAMES.addAll(fieldNames);
FIELD_NAMES.addAll(rawFieldNames);
conf.setObject("FIELD_NAMES", FIELD_NAMES);
RAW_FIELD_NAMES.addAll(rawFieldNames);
conf.setObject("RAW_FIELD_NAMES", RAW_FIELD_NAMES);
}
<?xml version="1.0" encoding="UTF-8"?>
<!— 插件的根元素,根元素的属性表明了一个插件的基本身份-->
<plugin id=” 唯一身份(被插件仓库作为身份标示)” name=”名称” version=”版本号”
provider=” 作者”class=”类名(可选)”>
<!-- 以下两个内容中引用的类库,都是作为本类使用反射时生成实例所需要的类库-->
<runtime>
<library name=" 运行时的类库">
<!— 如果存在此元素,则保存到fExportedLibs(输出类库集合),否则存放到
fNotExportedLibs (非输出类库集合)-->
<export name="*"/>
</library>
</runtime>
<requires>
<!— 需要注意,此处所需要的类库,包括该类库所需的类库,都不得在此引用本插件-->
<import plugin=" 所需类库"/>
</requires>
<extension id=" 本类的包名(从代码中看没有被使用)"
name=" 类名(从代码中看没有被使用)"
point=" 扩展点类名(即接口名)">
<implementation id=" 实现扩展的唯一标识(与类名相同,被parse-plugins.xml
作为身份表示使用)"
class=" 实现扩展的类的类名"/>
<parameter name=" 参数名" value="参数值"/>
</extension>
<!— 仅在nutch-extensionpoints\plugin.xml中存在,一次性加载纪录下所有的扩展点的名称-->
< extension-point id=” 扩展点唯一标识”name=”扩展点名”/>
</plugin>
评论
发表评论
-
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 600nutch实用的分词是默认的,对中文支持的不是很好。 网上有 ... -
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 2464我们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的流程以及如何自定义plugin
2009-12-16 18:04 1988PluginRepository 是plugin的入口,保存了 ... -
如何读取nutch抓取数据
2009-12-16 17:43 3600如何读取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...
本文将详细解析如何在Eclipse中配置Nutch,以便于开发者更好地理解和操作这一过程。 ### 一、理解Nutch与Eclipse的结合 Nutch是一个基于Hadoop的框架,用于构建可扩展且高性能的网络爬虫。它不仅能够抓取网页,还...
本文将对Nutch爬虫系统进行详细的分析,包括Nutch的体系结构、抓取部分、配置文件分析等方面。 一、Nutch简介 Nutch是一个基于Java的开源爬虫系统,由 Doug Cutting和Mike Cafarella创建于2003年。Nutch的主要功能...
4. nutch基本原理分析...23 4.1 nutch的基本组成.23 4.2 nutch工作流程.....23 5. nutch工作流程分析...25 5.1 爬虫...25 5.1.1 工作策略...25 5.1.2 工作流程分析....25 5.1.3 其它..27 5.2 索引...27 5.2.1 索引...
要使用Nutch插件,开发者需要在`conf/nutch-site.xml`配置文件中添加插件的名称到`plugin.includes`列表中。每个插件都有一个`plugin.xml`文件,用于描述插件信息,以及一个`build.xml`文件,指导Ant构建工具如何...
以上内容构成了Nutch入门教程的核心知识点,从简介、安装配置、初体验、基本原理、分析方法、分布式文件系统以及应用等多方面,详细介绍了Nutch框架及其使用方法,为对搜索引擎感兴趣的用户提供了一个全面的学习资源...
Nutch插件允许开发者根据特定需求定制和扩展Nutch的功能,如自定义爬虫策略、数据解析方式、索引处理逻辑等。 #### 二、Nutch插件开发详解 Nutch插件的开发涉及到以下几个关键步骤: 1. **创建插件目录结构**:...
在应用方面,提到了如何修改源码和使用插件机制(plugin),以及如何利用Nutch API和OpenSearch API接口。插件机制是Nutch灵活性的重要体现,它允许用户通过插件来扩展Nutch的功能。编写插件部分讲解了如何开发自己...
本文将详细介绍Nutch插件机制的核心概念、工作原理以及如何开发和使用插件。 #### 二、Nutch插件机制的重要性 Nutch之所以采用插件机制,主要有以下三个原因: 1. **可扩展性**:通过插件,Nutch允许用户根据自己...
在安装和配置 Nutch 开发环境时,可能会遇到各种问题,以下是对这些问题的详细解答。 首先,确保你已经下载了 Nutch 的正确版本。Nutch 的官方网站可能只提供最新的稳定版本,如 1.6 或 2.1。如果需要其他版本,...
插件(Plugin)作为Nutch的核心组件之一,为用户提供了一种灵活的方式来定制和扩展Nutch的功能。通过这种方式,不仅可以增强Nutch的原有功能,还能根据特定的需求添加新的功能模块。 Nutch插件系统具有以下优势: ...
Nutch有一个活跃的开发者社区,提供了详细的文档、教程和示例代码,帮助用户快速入门并解决问题。Apache官方网站上的Nutch项目页面是获取最新资讯和资源的主要渠道。 总之,Nutch是一个强大的分布式搜索引擎开发...
### Nutch入门教程知识点解析 #### 1. Nutch简介 **1.1 什么是Nutch** Nutch是一个开源的搜索引擎框架,完全基于Java开发,旨在帮助用户构建和运行自己的搜索引擎。它提供了一系列的工具和服务,使用户能够从...
### Nutch 2.3.1 安装与配置指南 #### 一、配置 ant 环境 在安装 Nutch 之前,首先需要确保环境中已经安装了 Apache Ant 工具,因为 Nutch 的构建过程依赖于 Ant。以下是具体步骤: 1. **下载 ant**: - 访问 ...
本文将详细介绍如何在Windows环境下配置Nutch 1.4,并使用Eclipse进行开发。以下是你需要知道的关键步骤: 1. **安装JDK**: 在配置Nutch之前,首先确保已安装Java Development Kit (JDK)。这里推荐使用JDK 1.6。...
【Nutch安装配置】是关于开源搜索引擎项目Nutch的详细操作流程,主要涉及源码编译、环境搭建和系统配置等内容。Nutch是一款基于Java的搜索引擎框架,常用于大数据环境下的网页抓取、分析和索引。在进行Nutch安装配置...
本篇培训讲义主要针对的是如何使用 Nutch 1.7 版本对腾讯微博进行抓取分析,特别强调了针对动态网页的抓取及自定义解析插件的方法。 #### 二、抓取目标与规则设置 ##### 1. 入口 URL 抓取的入口 URL 为:`...
### 基于Nutch的插件系统的原理分析 #### 一、引言 随着互联网技术的迅猛发展,搜索引擎作为信息检索的重要工具,在日常生活及工作中扮演着越来越重要的角色。然而,传统的搜索引擎架构往往存在难以扩展和升级的...
4. nutch基本原理分析...23 4.1 nutch的基本组成.23 4.2 nutch工作流程.....23 5. nutch工作流程分析...25 5.1 爬虫...25 5.1.1 工作策略...25 5.1.2 工作流程分析....25 5.1.3 其它..27 5.2 索引...27 ...
描述中的“LuceneChapter12 光盘使用说明.DOC”可能是指一份包含第12章内容的文档,这部分可能详细解释了如何在实际操作中运用Lucene和Nutch,尤其是光盘中的资源如何被利用。 **Lucene详解** Apache Lucene是一个...