- 浏览: 958365 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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源码学习系列之一: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
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
发表评论
-
nutch1.4 环境变量设置
2012-04-06 12:52 1722Exception in thread "main& ... -
正则使用
2010-06-18 00:19 1132java正则表达式(java.Regex)HtmlParser ... -
nutch 1.0 读源码,过滤掉不正确的URL实现方法
2010-06-18 00:17 3395nutch 1.0 读源码,过滤掉不正确的URL实现方法: ... -
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputExnutch新发现,为以后备忘
2010-06-16 23:16 2294urls -dir mycrawl -depth 3 -top ... -
HTMLParser 解析html字符串,提取纯文本
2010-05-14 09:59 8323今天在群里问别人怎么提取文本,也没有具体告诉我用什么,只是说用 ... -
HTMLParser的两种使用方法[转]
2010-05-13 23:37 1938HTMLParser的两种使用方法 文章分类:Java编程 ... -
搜索引擎术语
2010-05-05 11:40 1431附录. 术语 B: 半结构化 ... -
影响Lucene索引速度原因以及提高索引速度技巧[转]
2010-04-25 00:11 2744影响Lucene索引速度原因以及提高索引速度技巧 关键字: ... -
如何配置compass的索引位置为相对路径
2009-09-01 19:28 1506Compass是对lucene进行封装 ... -
heritrix 基本介绍
2009-08-01 10:35 3908Heritrix使用小结 1. H ... -
我对HtmlParser 提取网页各属性的总结及示例说明
2009-07-08 13:50 1934/** * 属性过滤器 * @param parser ... -
数学之美 系列十三 信息指纹及其应用
2009-06-25 22:34 10382006年8月3日 上午 11:17:00 ... -
数学之美系列二十一 - 布隆过滤器(Bloom Filter)
2009-06-25 22:27 15122007年7月3日 上午 09:35:00 ... -
用HTMLParser提取URL页面超链接的一段代码(小试牛刀)
2009-06-06 16:54 7092用HTMLParser提取URL页面超 ... -
深入学习Heritrix---解析处理器(Processor)
2009-06-06 13:17 1627键字: heritrix processor 本节解析与 ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-06 10:02 1216Frontier是Heritrix最核心的组成部分之一,也是最 ... -
深入学习Heritrix---解析CrawlController
2009-06-06 10:00 1385当我们以Web UI方式使用Heritrix时,点击任务开始( ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-03 21:50 1518原创作者: pengranxiang 阅读:231次 ... -
lucene2.0+heritrix示例补充
2009-06-03 21:31 1543由于lucene2.0+heritrix一书示例用的网站( ... -
htmlparser 使用手册
2009-05-30 16:47 29212009-05-08 14:20 需要做一 ...
相关推荐
总的来说,Apache Nutch 的源码是一个深入了解网络爬虫技术、大数据处理和分布式计算的好材料。通过研究和实践,你可以掌握从网页抓取到索引建立的全过程,为构建自己的搜索引擎或数据挖掘项目打下坚实基础。
总的来说,Nutch的源码对于学习和研究搜索引擎技术提供了宝贵的资源。通过深入分析和实践,你可以了解到网络爬虫的实现细节,掌握如何处理大规模数据,以及如何构建高效、可扩展的搜索系统。同时,了解和掌握tar和...
Nutch-1.9 是一个开源的网络爬虫软件,被广泛用于数据挖掘、搜索引擎构建以及网络信息提取。它的最新版本提供了许多改进和优化,使得它成为开发者和研究者手中的利器。Nutch的设计目标是易用性和可扩展性,允许用户...
深入学习Nutch 1.6源码,可以帮助理解网络爬虫的工作原理,了解分布式计算在实际问题中的应用,以及掌握如何利用Hadoop处理大数据。对于希望从事大数据、搜索引擎或Web挖掘相关工作的开发者来说,Nutch是一个宝贵的...
标题中的“Nutch入门学习”指的是Apache Nutch,这是一个开源的网络爬虫项目,用于抓取Web内容并建立搜索引擎。Nutch是大数据处理框架Hadoop的一个重要组成部分,它使用Hadoop进行分布式数据存储和处理。Nutch的学习...
在配置初始化之后,Crawl类会设定一系列路径,如`crawlDb`、`linkDb`、`segments`和`indexes`等,用于组织和存储抓取过程中产生的数据。这些路径的定义对于理解Nutch如何管理数据流至关重要。 - **`crawlDb`**:...
Nutch 1.7 版本是其稳定的一个分支,适用于学习和实际项目应用。本文将详细介绍在Windows和Linux环境下如何搭建Nutch 1.7,并探讨如何将其与Solr集成使用。 **Nutch 在 Windows 下的搭建过程** 1. **准备工作** -...
Nutch-1.5.1源码是Apache Nutch项目的一个重要版本,它是一个高度可扩展的、开源的网络爬虫和全文搜索引擎框架。Nutch最初由Doug Cutting创建,后来成为了Hadoop项目的一部分,因为其在大数据处理和分布式计算方面的...
本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch,以及如何通过源码学习它们的开发实践。 Lucene是一个全文检索库,它提供了一个简单的API,开发者可以使用这些API来构建自己的搜索功能。Lucene的核心...
Lucene+nuctch一书的全部源码 测试源码 和几个简单的项目 (Lucene+ Nuctch a book all the source code and test a few simple items)
### MyEclipse 8.5 导入 Nutch 1.2 源码的知识点详解 #### 一、背景介绍 Nutch 是一个高度可扩展且开放源代码的网络爬虫项目,由 ...此外,对于初学者来说,这也是学习如何使用 MyEclipse 和 Nutch 的良好实践。
《lucene+nutch搜索引擎开发源码1》是一个包含开源搜索引擎项目Lucene和Nutch源代码的压缩包,主要针对搜索引擎开发的学习和实践。这个压缩包是书籍《lucene+nutch搜索引擎开发》的一部分,由于源码量较大,因此分为...
通过学习和研究Nutch源码,开发者不仅可以了解网络爬虫的工作流程,还可以学习到分布式计算、文本处理、搜索算法等多方面的知识。这对于构建自己的搜索引擎系统,或者在大数据领域进行深度开发有着极大的帮助。同时...
Nutch 是一个开源的网络爬虫项目,它提供了构建搜索引擎的基础架构。Nutch 的源代码解析对于深入理解搜索引擎的工作原理以及自定义搜索引擎的实现非常有帮助。下面我们将详细探讨 Nutch 的注入(Injector)过程,这...
Nutch是Apache软件基金会的一个开源项目,主要用于构建网络搜索引擎。它提供了一个可扩展的、高度模块化的框架,用于抓取、解析网页,并建立索引,是大数据和信息检索领域的重要工具。下面,我们将详细讲解如何搭建...
- **学习源码**:深入阅读Nutch的源码,理解其内部机制和工作流程。 - **实践项目**:尝试建立自己的小规模搜索引擎项目,应用Nutch解决实际问题。 5. **参考资料** - 官方文档:Apache Nutch官网提供了详细的...
要使用Nutch 1.2,你需要先安装Hadoop环境,然后编译Nutch源码,配置相应的参数,设置爬取种子,启动爬虫,最后进行索引和搜索。这个过程涉及的文件包括`conf`目录下的配置文件,如`nutch-site.xml`,以及`bin`目录...
《Lucene+Nutch:搜索引擎开发深度解析》一书的源码及详细说明是搜索引擎开发者和爱好者的重要参考资料。这本书深入探讨了如何使用Apache Lucene和Nutch构建一个完整的搜索引擎系统,涵盖了从网页抓取到索引建立,再...