`

Nutch插件机制和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对中文的网页进行语言定位的使用,有时候很是不准确的。

相关链接
http://hi.baidu.com/hanjunjie1986/blog/item/82a4c5036734a8753912bb94.html
http://hi.baidu.com/sunky/blog/item/316faeafb372cbcd7dd92a6e.html
http://www.cnidc8.com/html/2008-03/142.html
分享到:
评论

相关推荐

    nutch的插件机制

    Nutch插件主要分为以下几个类别: 1. **Parser插件**:这类插件负责解析抓取的文档,提取可索引的数据。例如,HtmlParser插件用于解析HTML文档,而MSWordParser插件则用于解析Microsoft Word文档。开发者可以通过...

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

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

    Nutch中文分词插件的编写与实现.pdf

    ### Nutch中文分词插件的编写与实现 #### 一、Nutch搜索引擎技术概览 随着互联网信息的爆炸性增长,搜索引擎成为了人们快速获取所需信息的重要工具。Nutch作为一个开源的搜索引擎框架,其核心优势在于灵活性和可...

    Nutch入门教程 高清 带书签

    四、Nutch插件系统 Nutch的强大之处在于其插件机制,用户可以根据需求编写自己的插件,如自定义解析器、URL过滤器、索引器等。Nutch的核心组件包括:`fetcher`(负责下载网页)、`parse`(解析HTML)、`index`(创建...

    Nutch_的配置文件

    3. **Nutch插件的配置文件**:每个Nutch插件都可能有自己的配置文件,这些文件在插件被加载时自动读取。例如,过滤器(filter)插件通常有自己的配置,用于设定过滤规则。 配置文件的加载顺序决定了配置的优先级,...

    nutch开发资料 搜索引擎

    Nutch支持多种中文分词工具,如HanLP、jieba和IK Analyzer等,这些工具能够将中文句子分割成有意义的词语,为后续的索引和查询提供基础。 4. **Nutch工作流程**:Nutch的工作流程主要包括URL发现(抓取种子URL并...

    nutch-1.5.1源码

    通过分析和学习Nutch-1.5.1源码,开发者不仅可以掌握搜索引擎的核心技术,还能进一步提升在大数据处理、分布式系统和Java编程方面的专业能力。这对于从事相关领域工作或是研究搜索引擎优化(SEO)、信息检索和推荐...

    nutch09版本亲测好用

    Nutch 的工作流程包括几个主要步骤:种子URL生成、网页抓取、分词、链接分析、索引和搜索。这些步骤可以通过 Hadoop 分布式计算框架进行扩展,以处理大规模的网页数据。 3. **抓取框架**: Nutch 0.9 提供了一个...

    apache-nutch-1.4

    1. **Nutch 爬虫机制** - **种子URL**:爬虫的起点是一组种子URL,这些URL会被添加到待抓取的队列中。 - **调度器**:调度器根据策略决定下一个要抓取的URL,如按照优先级、深度优先或广度优先等。 - **Fetcher**...

    apache-nutch的源码

    6. **自定义开发**:Nutch 提供了丰富的插件机制,允许开发者根据需求自定义解析器、索引器、分词器等。通过修改或创建新的插件,你可以实现特定的抓取策略或处理逻辑。 7. **大数据处理**:Nutch是基于Hadoop构建...

    nutch2.2.1-src

    1. **Nutch框架**:Nutch的核心框架提供了爬虫的基本架构,包括种子URL的管理、网页抓取、分词、链接分析等。框架设计灵活,支持插件机制,方便开发者根据需求定制。 2. **Fetcher模块**:负责从Web上下载网页。它...

    论文研究-基于Nutch的中文分词插件实现 .pdf

    基于Nutch的中文分词插件实现,张文龙,刘一伟,中文分词是中文垂直搜索引擎中的一个关键技术,分词的好坏直接影响提取文本的精确度。Nutch是一个开源的Web搜索引擎,它为英文用户�

    java Nutch项目

    Nutch提供了丰富的插件机制,允许开发者根据需求定制爬虫功能。例如,你可以编写新的解析器来处理不同格式的内容,或者自定义索引策略。项目的“使用说明.txt”文件应该包含了关于如何配置和扩展Nutch的详细指南。 ...

    apache-nutch-2.3

    9. **多语言支持**:Nutch 不仅支持英语,还可以通过插件支持其他语言的抓取和索引,如中文、日文等。 10. **搜索接口**:Nutch 提供了一个简单的搜索接口,用户可以通过该接口查询索引库中的内容,实现基本的搜索...

    apache-nutch-1.16.rar 已编译好的版本,可以直接导入eclipse、idea

    2. **分词与索引**:Nutch使用Apache Lucene库进行文本分析和索引。分词是将网页内容分解成独立的词汇,而索引则是将这些词汇与网页相关联,以便于后续的搜索。 3. **索引存储**:Nutch可以将索引数据存储在Hadoop...

    \Lucene Nutch和安装说明文旦

    Lucene和Nutch是两个强大的开源搜索和爬虫工具,它们广泛应用于信息检索、网站分析等领域。通过理解这两个工具的核心概念、安装配置过程以及光盘资源的使用,用户可以搭建自己的搜索引擎,实现高效的数据抓取和检索...

    nutch-2.1源代码

    3. **分词与索引**:Nutch使用Apache Lucene库进行文本分析和索引。分词器将网页内容分解为单词或短语,这些词项随后被转换为倒排索引,便于快速的搜索查询。Nutch还支持自定义分词器和过滤器,可以根据具体语言或...

    分布式搜索引擎nutch开发

    - **Indexing**:解析后的数据经过分析和过滤,形成倒排索引,便于快速查找。 - **Searching**:用户输入查询,Nutch根据索引返回最相关的网页结果。 2. **Nutch工作流程** Nutch的工作流程由一系列工作阶段组成...

Global site tag (gtag.js) - Google Analytics