- 浏览: 944727 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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懒加载?什么时候用懒加载?为什么要用懒加载?
级别: 中级 王 飞鹏 (wangfp@cn.ibm.com), 软件工程师, IBM 2008 年 10 月 16 日 本文首先介绍 Nutch 的背景知识,包括 Nutch 架构,爬虫和搜索器。然后以开发一个基于 Nutch 的实际应用为例向读者展示如何使用 Nutch 开发自己的搜索引擎。在该示例中,首先带领读者开发一个作为 Nutch 爬虫抓取的目标网站,目标网站将被部署在域名为 myNutch.com 的服务器上。然后示例说明 Nutch 爬虫如何抓取目标网站内容,产生片断和索引,并将结果存放在集群的2个节点上。最后使用 Nutch 检索器提供的 API 开发应用,为用户提供搜索接口。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES--> Nutch 是一个基于 Java 实现的开源搜索引擎,其内部使用了高性能全文索引引擎工具 Lucene。从 nutch0.8.0开始,Nutch 完全构建在 Hadoop 分布式计算平台之上。Hadoop 除了是一个分布式文件系统外,还实现了 Google 的 GFS 和 MapReduce 算法。因此基于 Hadoop 的 Nutch 搜索引擎可以部署在由成千上万计算机组成的大型集群上。由于商业搜索引擎允许竞价排名,这样导致索引结果并不完全是和站点内容相关的,而 Nutch 搜索结果能够给出一个公平的排序结果,这使得 Nutch 在垂直搜索、档案互联网搜索等领域得到了广泛应用。
Nutch 搜索引擎是一个基于 Java 的开放源代码的搜索引擎。Nutch 搜索引擎处理流程包括抓取流程和搜索流程,如图 1 所示。相应地 Nutch 也分为2部分,抓取器和搜索器。在抓取流程中,抓取器也叫蜘蛛或者机器人,以广度优先搜索(BFS)的方式从企业内部网或者互联网抓取网页。这个过程涉及到对 CrawlDB 和 LinkDB 数据库的操作。然后 Nutch 解析器开始解析诸如 HTML、XML、RSS、PDF等不同格式的文档。最后 Nutch 索引器针对解析结果建立索引并存储到 indexDB 和 SegmentsDB 数据库中,以供搜索器搜索使用。 在搜索流程中,搜索应用使用输入关键词调用 Nutch 搜索接口(Nutch Query Interface)。应用可通过网页上的输入框输入相应关键词。搜索接口解析搜索请求为 Lucene 全文检索引擎可以识别的格式。Nutch 索引器将会调用 Lucene 引擎来响应请求在 indexDB 上展开搜索。最后搜索接口收集从索引器返回的URL、标题、锚和从 SegmentsDB 返回的内容。所有上述内容将被提供给排序算法进行排序。排序完成后,搜索接口将返回命中的搜索结果。由于构建在 Hadoop 分布式文件系统之上, Nutch 对CrawlDB, LinkDB, SegmentsDB 和 IndexDB 数据库的操作都是通过调用 M/R(map/reduce) 函数完成的。这使得 Nutch 具有了集群扩展能力。 图 1 Nutch搜索引擎架构图 现在将开发一个供 Nutch 爬虫抓取的目标网站应用。这个应用使用 RAD v6.0(Rational Application Developer)作为集成开发工具开发。应用开发完成后,将被部署在 WAS v6.0(Websphere Application Server)服务器上,本样例中服务器的域名设置是 myNutch.com。读者可以按照下面的步骤来开发该目标网站应用。
在抓取网站之前,需要定义搜索引擎。在本样例中Nutch被配置为集群方式。集群包括主节点(地址9.181.87.172,操作系统 RHAS3.0)和从节点(地址 9.181.87.176,操作系统 Debian)。如前文介绍,Nutch 的集群能力主要利用了 Hadoop 的分布式计算环境。下面介绍如何定义 Nutch 搜索引擎。
在使用 Nutch 抓取之前,首先需要启动 Hadoop 服务。清单 6 列出了启动 Hadoop 服务所采用的命令。随后使用清单 7 中的命令从 myNutch.com 抓取网页并解析,其中参数 “depth 3” 表示从网页根路径算起的链接深度;参数 “topN 10” 表示抓取器在每层需要获取的最大页面数目。开始抓取后,抓取器将在当前目录下创建新目录 crawl 作为工作目录。 清单 6 启动 Hadoop 服务
清单 7 抓取命令
对目标网站 targetWebApp 完成抓取后, 在 crawl 工作目录下产生了五个子目录: crawldb,linkdb,segments,indexes 和 index (见图 6)。数据库 crawldb 中包含页面的数目等;linkdb 包含页面在数据库中的链接,这是抓取器真正抓取网站时由页面的链接数目决定;Segments 数据库按照时间戳分为三个片断,每个片断的产生都经历了 generate/fetch/update 三个过程;Indexes 数据库包含了在 generate/fetch/update 过程中产生的 Lucene 索引;Index 数据库包含了经合并处理后的 Lucene 索引。 图 6 抓取器抓取结果 读者也可以使用工具 Luke 去查看 Lucene 索引。 借助 Luke,可以查看索引内容以及对索引查询。图 7 列出了 index 目录下的合并后的索引。 图 7 使用 Luke 查看 Lucene 索引 完成抓取后,现在将开发一个基于 Nutch 搜索 API 的应用 NutchApp,提供给用户作为搜索的接口。NutchApp 使用 Java 语言编写,其实现首先创建 NutchConfiguration 对象,然后创建 NutchBean。这个 NutchBean 实例将用来处理用户的搜索请求;根据请求参数,创建 query 对象,NutchBean 通过调用 search 方法来处理此 query 对象的请求。最终搜索结果以 Hits 集合。NutchApp 遍历此 Hits 集合并打印结果到标准输出。清单 8 列出了 NutchApp 的示例代码。 清单 8 NutchApp的示例代码
接下来我们来运行 NutchApp。首先编译 NutchApp.java 并打包。打包后的文件名为 NutchApp.jar。随后在 Nutch 命令下执行。见清单 9。 清单 9 编译、打包和执行 NutchApp
下面我们可以验证我们开发的 Nutch 搜索引擎的使用效果。在搜索页面搜索关键字输入“Nutch”,NutchApp 返回的搜索结果如清单 10 所示。其中包括概要和详细内容。 清单 10 NutchApp输出
通过本文的介绍,现在你已经知道如何使用 Nutch 开发集群式的搜索引擎,并使用此搜索引擎对目标网站进行抓取和分析结果,以及如何提供搜索接口来响应用户的搜索请求。事实上,搭建基于 Nutch 的搜索引擎是一个具有很大挑战性的工作,因为 Nutch 本身还在不断的发展之中,另外目标网站的结构复杂度也不尽相同。所以,针对互联网站点文档格式日益复杂的需求,接下来你还需要花一些精力关注 Nutch 高级特性的进展。 学习
|
发表评论
-
nutch1.4 环境变量设置
2012-04-06 12:52 1686Exception in thread "main& ... -
正则使用
2010-06-18 00:19 1104java正则表达式(java.Regex)HtmlParser ... -
nutch 1.0 读源码,过滤掉不正确的URL实现方法
2010-06-18 00:17 3338nutch 1.0 读源码,过滤掉不正确的URL实现方法: ... -
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputExnutch新发现,为以后备忘
2010-06-16 23:16 2266urls -dir mycrawl -depth 3 -top ... -
HTMLParser 解析html字符串,提取纯文本
2010-05-14 09:59 8295今天在群里问别人怎么提取文本,也没有具体告诉我用什么,只是说用 ... -
HTMLParser的两种使用方法[转]
2010-05-13 23:37 1886HTMLParser的两种使用方法 文章分类:Java编程 ... -
搜索引擎术语
2010-05-05 11:40 1398附录. 术语 B: 半结构化 ... -
影响Lucene索引速度原因以及提高索引速度技巧[转]
2010-04-25 00:11 2717影响Lucene索引速度原因以及提高索引速度技巧 关键字: ... -
如何配置compass的索引位置为相对路径
2009-09-01 19:28 1482Compass是对lucene进行封装 ... -
heritrix 基本介绍
2009-08-01 10:35 3858Heritrix使用小结 1. H ... -
我对HtmlParser 提取网页各属性的总结及示例说明
2009-07-08 13:50 1907/** * 属性过滤器 * @param parser ... -
数学之美 系列十三 信息指纹及其应用
2009-06-25 22:34 10142006年8月3日 上午 11:17:00 ... -
数学之美系列二十一 - 布隆过滤器(Bloom Filter)
2009-06-25 22:27 14872007年7月3日 上午 09:35:00 ... -
用HTMLParser提取URL页面超链接的一段代码(小试牛刀)
2009-06-06 16:54 7059用HTMLParser提取URL页面超 ... -
深入学习Heritrix---解析处理器(Processor)
2009-06-06 13:17 1600键字: heritrix processor 本节解析与 ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-06 10:02 1176Frontier是Heritrix最核心的组成部分之一,也是最 ... -
深入学习Heritrix---解析CrawlController
2009-06-06 10:00 1348当我们以Web UI方式使用Heritrix时,点击任务开始( ... -
深入学习Heritrix---解析Frontier(链接工厂)
2009-06-03 21:50 1488原创作者: pengranxiang 阅读:231次 ... -
lucene2.0+heritrix示例补充
2009-06-03 21:31 1514由于lucene2.0+heritrix一书示例用的网站( ... -
htmlparser 使用手册
2009-05-30 16:47 28842009-05-08 14:20 需要做一 ...
相关推荐
[硕士论文]_基于Nutch的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术揭密.doc 九大开源搜索引擎介绍.txt 基于Nutch的搜索引擎技术.pdf 基于开源工具搭建小型搜索引擎.pdf 整合...
基于Nutch的搜索引擎系统的研究与实现
对自己写搜索引擎的人来说很有帮助,大家一起学习,多多交流,为了赚点分,不好意思要了两分
学习Lucene和Nutch的入门书籍,学习搜索引擎开发值得一看的书籍
基于Nutch技术的主题搜索引擎实现_李东海.caj
本文论述了基于Nutch的第四代搜索引擎的设计和实现,重点分析了特征提取,导向词,权威和中心网页,超链接的分析和网页评分等多种搜索策略的综合应用。论文最后用“主题度”来衡量搜索引擎的性能,若一个搜索引擎在...
Lucene+Nutch搜索引擎开发
基于nutch的搜索系统研究 硕士论文……………………………………………………………………………………
Lucene nutch 搜索引擎开发 Part1
完整的《Lucene+nutch搜索引擎开发》PDF版一共83.6M,无奈我上传的最高限是80M,所以切成两个。这一个是主文件,还需要下载一个副文件Lucene+nutch搜索引擎开发.z01。解压时直接放到一起,解压这个主文件就行了。
基于nutch的搜索引擎的设计与实现毕业论文.docx
licene 实例代码 nutch实例代码 lucene+nutch搜索引擎开发实例代码(王学松版)
《Lucene+nutch搜索引擎开发》书附带的源代码
很好的哦!! ~~~~~~~~~~~~~~~~~~~ 我开发用了很好
Lucene nutch 搜索引擎 开发 实例 源码 里面包含了Lucene的使用源码 以及nutch使用的源码 还有spider的使用源码 例子的注释比较详细~适合初学者
lucene+nutch搜索引擎开发一书源码第一部分,因为源码太大,所以分两部分。