Nutch一些常用的命令:
抓取
bin/nutch crawl urls -dir <dir> -depth <int> -topN <int> -threads <int> >& <dir>/<file> .log
steps in
1.读取urls目录下的站点添加到 crawldb里
bin/nutch inject <dir>/crawldb urls
2.创建一个segments,存放到 目录下
bin/nutch generate <dir>/crawldb <dir>20090519/segments
3.根据文件夹下生成的下载列表获取页面内容
bin/nutch fetch <dir>/segments/<newdir>/
4.从已下载的的段数据列表里获取URL链接,更新crawldb内容
bin/nutch updatedb dir/crawldb dir/segments/newdir
5.分析链接关系,生成反向链接
bin/nutch invertlinks dir/linkdb -dir dir/segments
6.创建页面内容索引
bin/nutch index dir/indexes dir/crawldb dir/linkdb dir/segments/newdir
7.删除重复数据
bin/nutch dedup dir/indexes
8.合并索引文件
bin/nutch merge dir/index dir/indexes
读取命令 (d for <dir>, w for a website url)
1.查看crawldb数据库 :bin/nutch readdb dir/crawldb/ -stats 这个命令可以查看url地址总数和它的状态及评分。
导出 权重和相关的url信息:bin/nutch readdb d/crawldb/ -topN 20 urldb(out_dir)
查看每个url地址的详细内容,导出 数据:bin/nutch readdb d/crawldb/ -dump crawldb(out_dir)
查看具体的url:bin/nutch readdb d/crawldb/ -url w
2.查看linkdb数据库 的链接情况:bin/nutch readlinkdb d/linkdb/ -url w
导出 linkdb数据库 文件:bin/nutch readlinkdb d/linkdb/ -dump linkdb(out_dir)
3.查看segments:bin/nutch readseg -list -dir d/segments/ 可以看到 每一个segments的名称,产生的页面数,抓取的开始时间和结束时间,抓取数和解析数。
导出 segments:bin/nutch readseg -dump d/segments/nd segdb(out_dir)
man:输入bin/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搜索引擎架构图