`

Nutch插件机制

阅读更多
Plugin插件机制为Nutch提供了很强大的扩展性,曾经看到一篇文章《不选择使用Lucene的6大原因》,其中就提到lucene的API不够开放。Lucene的OO设计的非常糟,尽管有包package和类class,但是Lucene的设计基本上没有设计模式的身影。这是不是c或者c++程序员写java程序的通病?Lucene中没有使用接口Interface,等等。在Lucene的2.0版本中就解决了这些问题,同时在Nutch的Plug实现中,完全没有这种问题,正是因为使用了Interface,Nutch的Plugin插件机制才如此的灵活,Nutch的Plugin完全基于Eclipse 2.x中的插件机制。如果你非常了解Eclipse 2.x的插件机制,完全可以跳过Nutch插件机制这一段。

Nutch插件机制
  Nutch提供插件机制,使得开发人员可以根据自己的需要给Nutch开发适合自己需求的Plugin,完成自己想要的操作。Nutch中所有的分析,索引和查询工作都是通过Nutch的Plugin来实现的。
  Nutch把自己可以提供的Plugin接口,用一个xml文档来描述。Nutch把这些接口信息,放在Nutch的plugins\nutch-extensionpoints下,Nutch同样认为plugins\nutch-extensionpoints是一个Nutch的Plugin。在plugins\nutch-extensionpoints下的plugin.xml有下面的描述:this file hosts all extension points nutch core code offers. Please not that plugins can define extension points as well to be extendable. 这样所有的Nutch插件都必须是实现自这些extension-points.接口的类。把操作封装成接口,Core Code流程中调用接口方法,标准的Template Pattern。

Nutch是如何加载并调用这些接口的呢?
  Nutch的PluginRepository是整个插件的加载过程。在installExtensionPoints和installExtensions方法中实现了对整个插件的加载。首先加载插件,然后加载插件的ExtensionPoint。Nutch记录了所有的ExtensionPoint,在每个ExtensionPoint中记录了扩展自这个ExtensionPoints的Extension。通过这种关系就可以通过一个ExtensionPoint(Nutch提供的扩展接口),得到所有实现了这个接口的类(Extension)。
  Nutch在自己的某个处理流程中通过Config,得到配置中配置加载的这个流程中需要的Extention。例如AnalyzerFactory的Extension加载过程:
extensionPoint=PluginRepository.get(conf).getExtensionPoint(NutchAnalyzer.X_POINT_ID)
这样所有实现了NutchAnalyzer这个接口的类(Exctesion)将被取得。然后根据需要调用这些接口。在插件的plugin.xml信息中,有一个parameter节点,存储的名值,是描述这个接口的配置信息。共Nutch查找并确定,是否使用这个接口。
  IndexFilter 中使用Filter的过程。就是一个典型的Nutch使用插件IndexFilter,对Document进行Index的过程。

分词过程
  Nutch根据不同的语言使用不同的分词器来分词。Nutch如何判定现在分析的网页是那个语言的网页?Nutch使用一个外部Plugin:language-identifier来确定当前分析的网页是那种语言的网页。然后在当前的Document中放入一个名为lang的Field。在进行索引创建和搜索的时候,都会根据lang选择对应语言的Analyzer,如果没有lang的信息,那么Nutch会使用默认的Analyzer对Document建立索引。通过这样的过程就实现了Nutch使用不同的分词器分析不同的网页。
  如果使用分词,可以直接修改Nutch的Default分词器。根据我个人的测试,language-identifier对中文的网页进行语言定位的使用,有时候很是不准确的。

分享到:
评论

相关推荐

    nutch的插件机制

    nutch插件机制 实例讲解 轻松学习 扩展nutch功能 随意添加扩展

    Nutch的插件机制分析

    Nutch的插件机制分析,了解Nutch的插件机制

    Nutch的插件机制分析 (2010年)

    论述Nutch插件机制的设计目标,分析归纳Nutch轻量级插件体系结构所包括的3组基本概念:微内核、扩展点和扩展;插件、插件清单和插件清单描述器;插件工厂和插件清单解析器。总结Nutch插件的处理流程和概念与实际文件...

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

    Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行设计,通过对扩展点的扩展, 用户可以开发自己的各类插件。由于Nutch的分词器对中文只进行单字切分,若要实现较好的对中文信息的搜索查 询,...

    nutch 初学文档教材

    8.2 插件机制---plugin........45 8.2.1 什么是plugin......45 8.2.2 使用plugin的好处.......45 8.2.3 plugin工作原理...46 8.2.4 编写plugin47 8.3 API接口.......53 8.3.1使用Nutch API....53 8.3.2使用Open...

    Nutch入门.rar

    8.2 插件机制---plugin........45 8.2.1 什么是plugin......45 8.2.2 使用plugin的好处.......45 8.2.3 plugin工作原理...46 8.2.4 编写plugin47 8.3 API接口.......53 8.3.1使用Nutch API....53 8.3.2使用...

    sek:一个类似 Nutch 的, 基于 Hadoop 的并行式爬虫框架

    程序只提供一个必要的骨架, 可以通过插件的机制来定制软件的运行.Solr 集成, 提供全文检索.(待定)支持图片的抓取.(待定)Note这里对插件机制做个简单的说明. 即程序提供接口, 然后编写实现该接口的插件程序,打包成 ...

    基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件.zip

    遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施...

    基于Nutch+ElasticSearch+MySQL+SSM的简易搜索引擎.zip

    这种开放性促进了广泛的社区支持和第三方插件、工具的发展。此外,MySQL支持多种操作系统,包括Windows、Linux、macOS、Solaris等,确保了其在不同环境下的兼容性和部署灵活性。 关系型模型与SQL支持 MySQL基于关系...

    网络爬虫调研报告.doc

    Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中。 Larbin 开发语言...

    网络爬虫调研报告(1).doc

    Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中。 Larbin 开发语言...

    网络爬虫调研报告(2).doc

    Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于Hadoop的 分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可客户化,而 且很容易集成到自己的应用之中. Larbin 开发语言:...

    中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法

    conf="C:/solr-4.7.0/example/solr/nutch/conf/word.local.conf"/> 如不指定,使用默认配置文件,位于 word-1.0.jar 中的word.conf文件 ElasticSearch插件: 1、创建目录elasticsearch-1.1.0/plugins/word 2、将...

    xmg-gecco-demo-master.zip

    支持插件扩展机制 支持下载时UserAgent随机选取 支持下载代理服务器随机选取 Gecco是一款用java语言开发的轻量化的易用的网络爬虫,不同于Nutch这样的面向搜索引擎的通用爬虫,Gecco是面向主题的爬虫。 通用爬虫...

    solr 企业搜索引擎教程

    外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用 Solr 创建的索引 Solr 的特性包括:  高级的全文搜索功能  专为高通量的网络流量进行的优化  基于开放接口(XML 和 HTTP)的标准  综合的 HTML 管理界面  可...

Global site tag (gtag.js) - Google Analytics