`
fuyangchang
  • 浏览: 147317 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Nutch 相关 (三) Nutch的分词的架构

阅读更多
 今天仔细研究了一下Nutch的org.apache.nutch.anlysis包,其中大多的类都是与Nutch在爬行网页时候对网页中的文本分词解 析相关的。Nutch解析文本类的架构得非常好,下面就让我们来研究下它的架构吧,了解清楚之后就可以为我们之后加入中文分词打下很好的基础。
    Nutch分词的最底层使用的是lucene的Analyzer抽象类,它位于org.apache.lucene.analysis包中, NutchAnalyzer继承了Analyzer类、实现了Configurable、Pluggable接口,该抽象类中定义了一个公有的抽象方法 tokenStream(String fieldName, Reader reader)返回的类型是TokenStream。该方法是用于分析文本,其后的具体类中在这个方法中实现了从文本中提取索引词组的策略、算法。而返回 的TokenStream类是即可以从文本或者从查询词组中枚举token序列的抽象类,在Lucene中继承了它的具体类有Tokenizer、 TokenFilter。
    NutchAnalyzer类是Nutch中扩展分析文本的扩展点,所有用于解析文本的插件都得实现这个扩展点。
对 于Analyzer一个典型的扩展就是首先建立一个Tokenizer(org.apache.lucene.analysis.Tokenizer), 它是用于将Reader中读入的Stream分解成最原始的词组(Token--- org.apache.lucene.analysis.Token),在Tokenzier分解Stream之后,一个或多个TokenFilter会 用于过滤这些词组中无意义的词组。
    NutchDocumentAnalyzer类继承了NutchAnalyzer,其中有三个静态私有内部类ContentAnalyzer、AnchorFilter、AnchorAnalyzer 它们分别继承了Analyzer(org.apache.lucene.analysis.Analyzer)、 TokenFilter(org.apache.lucene.analysis.TokenFilter)、Analyzer(org.apache.lucene.analysis.Analyzer)。 在ContentAnalyzer中调用了CommonGrams类(org.apache.nutch.analysis),该类构建了一个n- grams的分词方案,因为需要在索引中考虑词组的出现频率,并且实现了对n-grams方案词组查询的优化措施。在n-grams方案中单个的词组同样 会被该方案索引,索引期间大量使用了Token(org.apache.lucene.analysis.Token)的各种方法,并且还会调用nutch/conf/nutch-default.xml中analysis.common.terms.file的配置属性。
    其上各个类与接口的uml图如下:
类图.JPG
    对应前面一篇文章就可以再仔细研究Nutch其他结构就可以大概知道如何在Nutch中加入中文的分词方法了,从分析中我们可以看出来,Nutch的分词大量使用了Lucene的基本抽象类或接口,这也是与两个项目的主持人同为Doug Cutting分不开的,当然了Lucene的良好架构也奠定了各种应用对其扩展使用的基础。






    本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:
  • 署名:你必须明确标明作者的名字。

  • 非商业用途:你不可将当前作品用于商业目的。

  • 禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。

对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。

在得到作者的明确允许下,这里的某些条款可以放弃。



分享到:
评论
1 楼 diddyrock 2009-03-12  
吊 n i a o

相关推荐

    实验报告(利用Nutch和IKanalyzer构造中文分词搜索引擎)

    实验过程中,不仅涉及了搜索引擎的基础架构,还涵盖了Linux环境的使用、网页爬虫技术、文本处理与分析,以及分词算法的实践应用。这些知识点对于理解和开发自己的搜索引擎系统具有重要意义。通过Nutch和IKAnalyzer的...

    nutch开发资料 搜索引擎

    8. **插件系统**:Nutch具有强大的插件架构,允许开发者轻松添加新的功能,如新的解析器、新的索引器或新的URL过滤规则。插件开发可以极大地扩展Nutch的功能。 9. **索引存储**:Nutch通常使用Apache Lucene作为其...

    nutch帮助文档;nutch学习 入门

    作为初学者,了解和掌握Nutch的相关知识是探索搜索引擎技术的第一步。本篇将深入探讨Nutch的基本概念、功能、架构以及如何入门学习。 1. **Nutch简介** Nutch是一个高度可扩展的开源搜索引擎,它提供了网页抓取、...

    Apache Nutch 1.7 学习总结

    在完成Nutch 1.7的搭建后,你可以进一步研究其工作原理,包括爬虫策略、链接分析算法、分词技术等。同时,Nutch与Hadoop结合可以处理大规模的数据抓取和索引,这在大数据领域有着广泛的应用。通过深入学习,你可以...

    apache-nutch-2.3

    1. **网络爬虫架构**:Nutch 采用分层架构设计,包括爬虫、解析器、索引器等多个组件。这些组件协同工作,实现了从发现网页到建立索引的全过程。 2. **URL管理**:Nutch 使用 URL 管理系统来跟踪已抓取的网页和待...

    分布式搜索引擎nutch开发

    - **Searching**:用户输入查询,Nutch根据索引返回最相关的网页结果。 2. **Nutch工作流程** Nutch的工作流程由一系列工作阶段组成,每个阶段都是Hadoop MapReduce任务: - **Segments生成**:抓取的网页被分组...

    nutch-1.5.1源码

    2. **分词(Tokenization)**:Nutch使用了Apache Lucene库进行文本分析,包括分词、停用词移除、词干化等预处理步骤,以准备数据供索引使用。 3. **索引(Indexing)**:索引模块将抓取的网页内容转化为可供搜索的...

    nutch2.2.1-src

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

    基于Java的搜索引擎Nutch中文搜索技术研究

    本文通过对Nutch架构的深入分析,结合词表分词技术和前向最大匹配分词算法,以及JavaCC工具生成的上下文相关文法模块,成功实现了Nutch的中文搜索功能。该方案不仅提升了搜索结果的质量,还为中文搜索引擎的发展提供...

    nutch爬虫资料

    本资料包围绕Nutch爬虫,提供了相关的参考书籍和源代码分析,旨在帮助用户深入理解Nutch的工作原理和实践应用。 首先,Nutch爬虫的基础知识包括它的架构和工作流程。Nutch分为多个阶段,包括种子URL的生成、网页...

    apache-nutch-1.5.1

    4. **分词与索引**:Nutch 集成了Lucene库,对提取的内容进行分词,并创建倒排索引。这使得搜索操作可以快速定位到包含特定关键词的文档。 5. **插件架构**:Nutch 具有强大的插件体系,用户可以根据需求定制各种...

    java Nutch项目

    1. **Nutch的架构** Nutch采用模块化设计,主要分为以下几个关键组件: - **Fetcher**: 负责抓取网页,通过HTTP协议与服务器交互。 - **Parser**: 解析抓取的HTML内容,提取有用的信息如文本、链接等。 - **...

    分享一个Nutch入门学习的资料

    这份PDF文档通常会详细讲解Nutch的架构、工作流程、配置方法,以及一些示例和最佳实践。学习者可以通过阅读这份文档,系统地了解Nutch,并按照步骤进行操作实践。 总的来说,这个Nutch入门学习资料涵盖了以下几个...

    nutch初体验

    **三、Nutch的架构** Nutch是基于Hadoop构建的,这意味着它可以轻松地扩展到大规模集群中。Nutch的工作流程被设计为一系列MapReduce任务,充分利用Hadoop的分布式计算能力。 **四、入门学习资源** 1. **《nutch...

    apache-nutch

    2. **分词与分析**:Nutch 使用开源的LUCENE库进行分词和分析,支持中文等多语言处理。 3. **索引优化**:Nutch 提供了多种索引策略,如增量索引、定期全量索引等,以适应不同场景需求。 4. **倒排索引**:Nutch ...

    Lucene nutch 搜索引擎 开发 实例 源码

    同时,Nutch的插件架构使得开发者可以轻松扩展其功能。 通过学习和研究这些源码,开发者不仅可以了解搜索引擎的基本原理,还能掌握如何在实际项目中应用这些技术。对于初学者来说,详细注释的示例代码提供了很好的...

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

    5. **插件系统**:Nutch的灵活性得益于其强大的插件架构。用户可以根据需求编写插件来扩展Nutch的功能,比如修改爬虫策略、添加新的解析器或改变索引方式等。 **在Eclipse和IDEA中使用Nutch 1.16** 1. **导入项目**...

    apache-nutch-1.3-src.tar.gz_nutch_nutch-1.3.tar.gz

    下载 "apache-nutch-1.3-src.tar.gz" 后,你可以深入了解 Nutch 的工作原理和架构。源码包括了各个模块的实现,如 Crawl、Fetch、Parse、Index、Search 等。通过阅读源码,你可以学习到如何设计和实现大规模的网络...

Global site tag (gtag.js) - Google Analytics