`

Nutch源码学习系列之一

阅读更多
Nutch源码学习系列之一:Analysis包(原创) - -
Tag: Nutch    Lucene    Analysis                                          

Nutch源码学习系列之一:Analysis包(原创)
TjuAILab    张步峰

Nutch0.7出来,对于我们这些Lucene爱好者来说,是件兴奋的事情!当时用Nutch0.6做实验已经让我非常兴奋。

Nutch0.7比之0.6又增添了一部分功能,我们开发一些小型搜索引擎可以修改Nutch的一些接口,使之更加用户化。

此节主要讲述Nutch下的Analysis包即package org.apache.nutch.analysis。

阅读此包是你可以参照Nutch的API文档。http://lucene.apache.org/nutch/apidocs/index.html。或者使用的硬盘上的也可。

搜索引擎去除Spider外基本架构可以简要描述如下






由于Analysis主要处理分词问题。在图中看出需要分词的地方就是所用入库和对用户查询进行分词。

Nutch的Analysis有一下几个文件:(黄色底是NutchAPI文档列的)

CharStream.java:

     interface CharStream

  *这个接口描述了一个维护字符串行和列位置的字符流。在某种程度上,它还具有备份字符流的


  *能力。此接口的一个实现有JavaccParser产生,用于TokenManager这个实现中。


  *


  *除去backup方法外的其他所有方法都可以被以任何方式实现。backup的正确实现需要对lexer的正确操作。


  *其他的方法被用来获取信息,诸如行序号、列序号、用于Token却没有用于lexer的字符串。


  *因此这些方法对应的实现不会影响产生lexer的操作   

CommonGrams.java

     *对于索引时经常出现的项和词构建n-grams(不是很明白).使用n-grams优化词查询。单个项依旧使用


     *覆盖的n-grams索引。


FastCharStream.java

     *CharStream接口的一个有效实现。注意这并没有进行行数计算,当时追踪了在输入中Token的字符位置


     *这个字符位置是Lucene的API需要的

NutchAnalysis.java

     应该说是Analysis包的核心了,主要完成Nutch语言(词典)分析器和查询分析器。具体到语言分析,要去


Stop Words,然后中文分词,或者英文分词等等。

NutchAnalysisConstants.java

      一个接口主要被NutchAnalysis和NutchTokenManager所用,里面含的都是常量。譬如Token的类型(冒号,省略号,阿拉伯数字,短语等等)和TokenImage(就是Token类型的string化)


NutchAnalysisTokenManager.java

      管理Token,为NutchAnalysis所用。

NutchDocumentAnalyzer.java

      *NutchDocumentAnalyzer为Nuctch文档服务。使用JavaCC定义的语言(词典)分析器


   *(@link NutchDocumentTokenizer),不含有StopWords列表。从而保持了查询分析的连贯性。


     与NutchAnalysis相对独立

NutchDocumentTokenizer.java

      *此分词器用于对Nutch的文档文本进行分词。是JavaCC所产生的词典分析器的实现。


       为NutchDocumentAnalyzer所用。


ParseException.java

        *当查询分析出错时,此异常被抛出。在产生的查询分析器(Parser)中。


        *你可以通过调用方法generateParseException来显示地创建此异常类的对象。


*只要你保留公共feild(成员变量),你可以修改这个类使其报错机制更加用户化。


Token.java

        Token类内含Token的类型,每个Token在字符串中的起始位置和终止位置等等


TokenManager.java

       一个接口,非常简单,里面只有一个用于返回下一个Token的函数。在Analysis包没有被使用。可能留着以后扩展用


TokenMgrError.java

        主要用于分词出错,进行报错。


其主要的类别继承图如下:

Class Hierarchy
class java.lang.Object
class org.apache.lucene.analysis.Analyzer
class org.apache.nutch.analysis.NutchDocumentAnalyzer
class org.apache.nutch.analysis.CommonGrams
class org.apache.nutch.analysis.NutchAnalysis (implements org.apache.nutch.analysis.NutchAnalysisConstants)
class org.apache.nutch.analysis.NutchAnalysisTokenManager (implements org.apache.nutch.analysis.NutchAnalysisConstants)
class org.apache.lucene.analysis.TokenStream
class org.apache.lucene.analysis.Tokenizer
class org.apache.nutch.analysis.NutchDocumentTokenizer (implements org.apache.nutch.analysis.NutchAnalysisConstants)
Interface Hierarchy
interface org.apache.nutch.analysis.NutchAnalysisConstants
Nutch的底层是基于Lucene的,从图中你可以看出主要的两大接口NutchDocumentAnalyzer和NutchDocumentTokenizer都是从Lucene继承过来的。所以更有必要认真研究Lucene的Analysis包。


由于BlogChina发文大小有限制,想看更全的源码部分,可以看我另一个blog!

http://blog.donews.com/windshow/archive/2005/08/26/526755.aspx






















分享到:
评论

相关推荐

    apache-nutch的源码

    总的来说,Apache Nutch 的源码是一个深入了解网络爬虫技术、大数据处理和分布式计算的好材料。通过研究和实践,你可以掌握从网页抓取到索引建立的全过程,为构建自己的搜索引擎或数据挖掘项目打下坚实基础。

    nutch_src 源码 tar—zip格式

    总的来说,Nutch的源码对于学习和研究搜索引擎技术提供了宝贵的资源。通过深入分析和实践,你可以了解到网络爬虫的实现细节,掌握如何处理大规模数据,以及如何构建高效、可扩展的搜索系统。同时,了解和掌握tar和...

    nutch-1.9 源码

    Nutch-1.9 是一个开源的网络爬虫软件,被广泛用于数据挖掘、搜索引擎构建以及网络信息提取。它的最新版本提供了许多改进和优化,使得它成为开发者和研究者手中的利器。Nutch的设计目标是易用性和可扩展性,允许用户...

    nutch1.6源码

    深入学习Nutch 1.6源码,可以帮助理解网络爬虫的工作原理,了解分布式计算在实际问题中的应用,以及掌握如何利用Hadoop处理大数据。对于希望从事大数据、搜索引擎或Web挖掘相关工作的开发者来说,Nutch是一个宝贵的...

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

    标题中的“Nutch入门学习”指的是Apache Nutch,这是一个开源的网络爬虫项目,用于抓取Web内容并建立搜索引擎。Nutch是大数据处理框架Hadoop的一个重要组成部分,它使用Hadoop进行分布式数据存储和处理。Nutch的学习...

    Nutch 1.2源码阅读

    在配置初始化之后,Crawl类会设定一系列路径,如`crawlDb`、`linkDb`、`segments`和`indexes`等,用于组织和存储抓取过程中产生的数据。这些路径的定义对于理解Nutch如何管理数据流至关重要。 - **`crawlDb`**:...

    Apache Nutch 1.7 学习总结

    Nutch 1.7 版本是其稳定的一个分支,适用于学习和实际项目应用。本文将详细介绍在Windows和Linux环境下如何搭建Nutch 1.7,并探讨如何将其与Solr集成使用。 **Nutch 在 Windows 下的搭建过程** 1. **准备工作** -...

    nutch-1.5.1源码

    Nutch-1.5.1源码是Apache Nutch项目的一个重要版本,它是一个高度可扩展的、开源的网络爬虫和全文搜索引擎框架。Nutch最初由Doug Cutting创建,后来成为了Hadoop项目的一部分,因为其在大数据处理和分布式计算方面的...

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

    本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch,以及如何通过源码学习它们的开发实践。 Lucene是一个全文检索库,它提供了一个简单的API,开发者可以使用这些API来构建自己的搜索功能。Lucene的核心...

    Lucene+Nutch搜索源码

    Lucene+nuctch一书的全部源码 测试源码 和几个简单的项目 (Lucene+ Nuctch a book all the source code and test a few simple items)

    myeclipse8.5导入nutch1.2源码

    ### MyEclipse 8.5 导入 Nutch 1.2 源码的知识点详解 #### 一、背景介绍 Nutch 是一个高度可扩展且开放源代码的网络爬虫项目,由 ...此外,对于初学者来说,这也是学习如何使用 MyEclipse 和 Nutch 的良好实践。

    lucene+nutch搜索引擎开发源码1

    《lucene+nutch搜索引擎开发源码1》是一个包含开源搜索引擎项目Lucene和Nutch源代码的压缩包,主要针对搜索引擎开发的学习和实践。这个压缩包是书籍《lucene+nutch搜索引擎开发》的一部分,由于源码量较大,因此分为...

    nutch2.2.1-src

    通过学习和研究Nutch源码,开发者不仅可以了解网络爬虫的工作流程,还可以学习到分布式计算、文本处理、搜索算法等多方面的知识。这对于构建自己的搜索引擎系统,或者在大数据领域进行深度开发有着极大的帮助。同时...

    nutch的源代码解析

    Nutch 是一个开源的网络爬虫项目,它提供了构建搜索引擎的基础架构。Nutch 的源代码解析对于深入理解搜索引擎的工作原理以及自定义搜索引擎的实现非常有帮助。下面我们将详细探讨 Nutch 的注入(Injector)过程,这...

    搭建nutch开发环境步骤

    Nutch是Apache软件基金会的一个开源项目,主要用于构建网络搜索引擎。它提供了一个可扩展的、高度模块化的框架,用于抓取、解析网页,并建立索引,是大数据和信息检索领域的重要工具。下面,我们将详细讲解如何搭建...

    nutch帮助文档;nutch学习 入门

    - **学习源码**:深入阅读Nutch的源码,理解其内部机制和工作流程。 - **实践项目**:尝试建立自己的小规模搜索引擎项目,应用Nutch解决实际问题。 5. **参考资料** - 官方文档:Apache Nutch官网提供了详细的...

    nutch1.2源码

    要使用Nutch 1.2,你需要先安装Hadoop环境,然后编译Nutch源码,配置相应的参数,设置爬取种子,启动爬虫,最后进行索引和搜索。这个过程涉及的文件包括`conf`目录下的配置文件,如`nutch-site.xml`,以及`bin`目录...

    Lucene+Nutch本书源码+详细说明

    《Lucene+Nutch:搜索引擎开发深度解析》一书的源码及详细说明是搜索引擎开发者和爱好者的重要参考资料。这本书深入探讨了如何使用Apache Lucene和Nutch构建一个完整的搜索引擎系统,涵盖了从网页抓取到索引建立,再...

Global site tag (gtag.js) - Google Analytics