`

nutch搜索架构关键类

 
阅读更多

 

在整个crawl->recrawl后,其实作为搜索的文件夹只有两个:

* index(indexes) :提供搜索,和获取details信息(其实它也是通过 lucene doc fields来得到)。如title,url,last-modified,cache等等。

* segments : 提供summary即页面的描述,也就 是parse_text和cached(快照,content)

 

在类DistributedSearch中,是整个nutch提供RPC service的入口,其中有几个subclasses:

1.Server

此类是作为search 和summary的RPC service。如果启动它,将在server端先启动NutchBean作为代理。由于在server端search.dir property肯定配置为直接指定path的形式(因为search-servers.txt只在client端配置),所以经由它再转发到相应的RPCSearchBean(LuceneSearchBean)和RPCSegmentBean(FetchedSegments)来提供服务。

 

综上,它是提供以下要说的二个服务,只不过好处是不用单独启动one group threads。

 

 

2.IndexServer

专门供search的RPC service

 

 

3.SegmentServer

专门供summary的RPC service

 

 

以下是结合上述给出的流程图:


 


 


 

其实上图中的search,summary cluster可以组合在一起,但这样感觉回退到server service的局面了。

 

其中RPC调用参见 结合nutch解説hadoop的RPC

 

 


note:

* 红色部分个人认为是可以合并 ,因为它们读取的是同样的doc info;但不知道作者为什么将它分开来处理,特别是在分布式环境下,这样将造成更大的通信开销;

* 虚线部分表明这是原始的内容,即快照功能。

 

结合上述,这就是为什么我在 增量更新 时如果使用分布式搜索 不建议合并索引或合并到同一segment的原因了。

 

但是,这也是有前提 的,就是你的各台server应该单独处理自己的份内事。比如作为search server的,每台server应该只加载相应的index(或若干份索引 );作为segment server的,同样道理只负责自身的segment(或若干segs)


关键问题:

如果多个segs存在于一个server时,請求是怎样传递到该台server的?

对于这种情况,在开始时根据某个给定的seg name定位到相关的server,然后该server再根据相应的seg name定位到相应 的FetchedSegment.Segment。最后 此segment便利用MapFile来定位数据了。

 

同样道理,在搜索时,如果一个server上没有使用merge job来合并索引 ,即是说会有多份indexes,那么在搜索后根据uniqueKey来获取doc info时过程是怎样呢?

开始会利用indexNo来定位某个server,然后再利用之前search(Query)結果中的uniqueKey来定位某个doc。

刚开始时我也有点疑惑,因为如果多份索引来搜索时,很有可能有相同的doc id,为什么只根据一个uniqueKey(doc id)便可以知道是某个doc呢?其实只要番一下相关源码,看到如果使用indexes来搜索时,nutch处理使用了MultiReader,即合并 后的索引 doc id将累加各份索引 的max doc id,即是说合并后的逻辑索引是一个完整的索引 了,即doc id是唯一的。这样要后续的搜索只要给定uniqueKey但知道到哪份index(严格来说是reader)下搜索了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 16.2 KB
  • 大小: 40.9 KB
  • 大小: 37.5 KB
  • 大小: 16.6 KB
分享到:
评论

相关推荐

    nutch架构图

    Nutch由多个关键组件组成,包括Fetcher、Parser、Indexer等。Fetcher负责下载网页,Parser则解析这些网页内容,提取有用的信息如文本和元数据。Parser可能会使用如Tika这样的库来识别和解析不同格式的文档。 "Cycle...

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

    《Lucene与Nutch搜索引擎开发实例详解》 在信息技术领域,搜索引擎已经成为不可或缺的一部分,它们能够高效地处理海量数据,帮助用户快速找到所需信息。本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch...

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

    经过一系列实验验证,本文提出的中文搜索技术方案显著提高了Nutch搜索引擎对于中文信息的处理能力。具体体现在以下几个方面: - **搜索精度**:采用新的分词技术和语法分析方法后,搜索结果的相关性得到了明显提升。...

    nutch开发资料 搜索引擎

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

    Nutch公开课从搜索引擎到网络爬虫

    Apache Nutch是一个用Java语言编写的开源搜索引擎项目,最早可以追溯到2002年8月,其设计理念是基于搜索引擎的架构,但随着时间的推移和版本迭代,Nutch逐渐演变成了一个网络爬虫工具。Nutch的发展历程中出现了两个...

    Lucene.Nutch搜索引擎开发

    4. **Nutch教程PPT**: PPT形式的教学材料通常以简洁明了的方式呈现关键知识点,可能包括Nutch的工作原理、架构设计、主要模块介绍(如Crawldb、Segment、Indexer等)、API使用方法以及实战案例。这有助于读者快速...

    Nutch搜索引擎培训讲义

    ### Nutch 搜索引擎培训讲义关键知识点解析 #### 一、Nutch 1.2 版本配置与运行步骤 1. **环境搭建** - 在进行配置之前,确保已经安装了必要的软件,如Java环境(推荐使用Java 1.6以上版本)、Eclipse等开发工具...

    lucene+nutch搜索引擎光盘源码(1-8章)

    《lucene+nutch搜索引擎光盘源码(1-8章)》是一套全面解析Lucene和Nutch搜索引擎技术的源代码教程,涵盖了从基础到进阶的多个层面。这套资源包含8个章节的源码,由于文件大小限制,被分成了多个部分进行上传。 ...

    Nutch 1.2源码阅读

    本文将以Nutch 1.2版本为核心,重点解析Crawl类及其在整体流程中的关键地位。 Nutch的工作流程主要包括以下几个阶段:注入(Injector)、生成抓取URL(Generator)、网页抓取(Fetcher)、网页解析(ParseSegment)...

    Nutch入门教程.pdf

    Nutch API和OpenSearch API则允许开发者在应用程序中集成Nutch搜索引擎功能。 Nutch的目标是让每个人都能容易地、低成本地配置一个世界级的Web搜索引擎。Nutch的扩展性使其不仅适用于学术和政府站点的搜索,也可以...

    apache-nutch-2.3

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

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

    4. **源码分析**:理解Nutch的核心类和模块,如Fetcher、Parser、Indexer等,以及如何通过源码进行扩展和定制。 5. **工具使用**:如何使用Nutch的命令行工具进行数据操作,以及与其他搜索引擎的集成方法。 6. **...

    java Nutch项目

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

    nutch+lucene开发自己的搜索引擎ch3.pdf

    ### nutch+lucene开发自己的搜索引擎知识点总结 #### 一、概览 - **标题与描述**: 本资料“nutch+lucene开发自己的搜索引擎ch3.pdf”聚焦于介绍如何使用Nutch和Lucene来构建自己的搜索引擎,特别强调了第三章:...

    nutch工具包

    Apache Nutch 是一个开源的网络爬虫项目,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行数据处理和搜索。Nutch 1.5 是该项目的一个稳定版本,提供了许多关键的功能和改进。这个"nutch工具包"包含了Nutch ...

    apache-nutch-1.5.1

    5. **插件架构**:Nutch 具有强大的插件体系,用户可以根据需求定制各种功能,如过滤、分析、评分等,以适应不同的数据源和搜索需求。 6. **分布式处理**:Nutch 支持运行在Hadoop上,利用MapReduce进行大规模数据...

    nutch2.2.1-src

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

    nutch的源代码解析

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

    nutch2.2.1

    Nutch 2.2.1 版本中的关键特性包括: - **多线程抓取**: 提高了网页抓取的效率,通过并发处理多个URL。 - **可扩展性**: 基于Hadoop,可以处理大规模的数据集。 - **插件架构**: 允许用户自定义解析器、抓取策略等,...

Global site tag (gtag.js) - Google Analytics