- 浏览: 944609 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (385)
- 搜索引擎学习 (62)
- 算法 (1)
- 数据库 (15)
- web开发 (38)
- solr开发 (17)
- nutch 1.2 系统学习 (8)
- cms (1)
- 系统架构 (11)
- linux 与 unix 编程 (16)
- android (15)
- maven (1)
- 关注物流 (1)
- 网址收集 (1)
- 分布式,集群 (1)
- mysql (5)
- apache (1)
- 资料文档备份 (7)
- 上班有感 (0)
- 工作流 (15)
- javascript (1)
- weblogic (1)
- eclipse 集成 (1)
- JMS (7)
- Hibernate (1)
- 性能测试 (1)
- spring (6)
- 缓存cache (1)
- mongodb (2)
- webservice (1)
- HTML5 COCOS2D-HTML5 (1)
- BrowserQuest (2)
最新评论
-
avi9111:
内陷到android, ios, winphone里面也是随便 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
avi9111:
呵呵,做不下去了吧,没有第二集了吧,游戏是个深坑,谨慎进入,其 ...
【HTML5游戏开发】二次开发 BrowserQuest 第一集 -
excaliburace:
方案3亲测完全可用,顺便解决了我其他方面的一些疑问,非常感谢
spring security 2添加用户验证码 -
yuanliangding:
Spring太强大了。
Spring Data JPA 简单介绍 -
小高你好:
什么是hibernate懒加载?什么时候用懒加载?为什么要用懒加载?
当某个插件需要被加载时, 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);
}
至此,所有实现QueryFilter的子类实例均被加载。如果需要开发自己的插件,同样可以参考这个过程,plugin.xml的具体内容的描述负在下面:
<?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>
发表评论
-
nutch1.4 环境变量设置
2012-04-06 12:52 1686Exception in thread "main& ... -
正则使用
2010-06-18 00:19 1104java正则表达式(java.Regex)HtmlParser ... -
nutch 1.0 读源码,过滤掉不正确的URL实现方法
2010-06-18 00:17 3337nutch 1.0 读源码,过滤掉不正确的URL实现方法: ... -
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputExnutch新发现,为以后备忘
2010-06-16 23:16 2266urls -dir mycrawl -depth 3 -top ... -
HTMLParser 解析html字符串,提取纯文本
2010-05-14 09:59 8294今天在群里问别人怎么提取文本,也没有具体告诉我用什么,只是说用 ... -
HTMLParser的两种使用方法[转]
2010-05-13 23:37 1886HTMLParser的两种使用方法 文章分类:Java编程 ... -
搜索引擎术语
2010-05-05 11:40 1398附录. 术语 B: 半结构化 ... -
影响Lucene索引速度原因以及提高索引速度技巧[转]
2010-04-25 00:11 2717影响Lucene索引速度原因以及提高索引速度技巧 关键字: ... -
如何配置compass的索引位置为相对路径
2009-09-01 19:28 1482Compass是对lucene进行封装 ... -
heritrix 基本介绍
2009-08-01 10:35 3858Heritrix使用小结 1. H ... -
我对HtmlParser 提取网页各属性的总结及示例说明
2009-07-08 13:50 1907/** * 属性过滤器 * @param parser ... -
数学之美 系列十三 信息指纹及其应用
2009-06-25 22:34 10142006年8月3日 上午 11:17:00 ... -
数学之美系列二十一 - 布隆过滤器(Bloom Filter)
2009-06-25 22:27 14872007年7月3日 上午 09:35:00 ... -
用HTMLParser提取URL页面超链接的一段代码(小试牛刀)
2009-06-06 16:54 7059用HTMLParser提取URL页面超 ... -
深入学习Heritrix---解析处理器(Processor)
2009-06-06 13:17 1600键字: heritrix processor 本节解析与 ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-06 10:02 1175Frontier是Heritrix最核心的组成部分之一,也是最 ... -
深入学习Heritrix---解析CrawlController
2009-06-06 10:00 1347当我们以Web UI方式使用Heritrix时,点击任务开始( ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-03 21:50 1488原创作者: pengranxiang 阅读:231次 ... -
lucene2.0+heritrix示例补充
2009-06-03 21:31 1514由于lucene2.0+heritrix一书示例用的网站( ... -
htmlparser 使用手册
2009-05-30 16:47 28832009-05-08 14:20 需要做一 ...
相关推荐
nutch插件,安装nutch插件,mysql与nutch
nutch插件机制 实例讲解 轻松学习 扩展nutch功能 随意添加扩展
Nutch的插件机制...详细讲解了nutch的api 很有帮助
Nutch的插件机制分析,了解Nutch的插件机制
Nutch 高级 插件是开发 多Nutch内部的流程有很好的解释和说明
1.1 Nutch 基本原理 1.1.1 Nutch 基本组成 1.1.2 Nutch 工作流程 1.2 Nutch 流程详解 1.2.1 Nutch 数据流程 1.2.2 Nutch 流程分析
Nutch插件开发和服务器发布流程,以indexingFilter为例子进行说明
对于nutch中插件的分析比较透彻,大家可以借鉴一下里面的方法,很不错的
论述Nutch插件机制的设计目标,分析归纳Nutch轻量级插件体系结构所包括的3组基本概念:微内核、扩展点和扩展;插件、插件清单和插件清单描述器;插件工厂和插件清单解析器。总结Nutch插件的处理流程和概念与实际文件...
资源中urls.txt是我nutch单步执行过程的种子文件,里面的ppt主要讲解nutch单步执行流程,并获取每次单步执行的结果文件,对文件进行分析,同时ppt还讲解了nutch的插件的基础知识,不是很详细,但是可以作为参考。...
Nutch中文分词插件的编写与配置,由于Internet的迅猛发展,使得用户查找信息犹如大海捞针,而搜索引擎则能帮用户很好的解决这个问题。 Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行...
nutch爬虫系统分析.doc
基于Apache Nutch 1.8和Htmlunit组件,实现对于AJAX加载类型页面的完整页面内容抓取解析。 According to the implementation of Apache Nutch 1.8, we can't get dynamic ...
nutch爬虫系统分析报告.doc
nutch爬虫系统分析设计论文.doc
毕业论文-nutch爬虫系统分析.doc
6. nutch分析方法和工具........33 6.1 Crawldb......33 6.2 Linkdb........35 6.3 Segments....35 6.4 Index..39 7. nutch分布式文件系统........41 2007-8-26 北京邮电大学-李阳 Nutch入门学习 7.1 概述...41 7.2...
nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据
描述Nutch的工作流程,介绍Nutch对页面获取、分析、建立索引的过程。