基本信息
Nutch是一个开放源代码(open-source)的Java搜索引擎包,它提供了构建一个搜索引擎所需要的全部工具和功能。使用Nutch不仅可以建立自己内部网的搜索引擎,同时也可以针对整个网络建立搜索引擎。除了基本的功能之外,Nutch也还有不少自己的特色,如Map-Reduce、Hadoop、Plugin等。
Nutch的总体结构
Nutch从总体上看来,分为三个主要的部分:爬行、索引和搜索,各部分之间的关系如图1所示。Web db是Nutch初始运行的URL集合;Fetcher是用来抓取网页的爬行器,也就是平时常说的Crawler;indexer是用来建立索引的部分,它将会生成的索引文件并存放在系统之中;searcher是查询器,用来完成对某一词条的搜索并返回结果。
图 1. Nutch 总体结构
Nutch 的运行流程
在了解了 Nutch 的总体结构之后,再详细的看看 Nutch 具体是如何运行的?Nutch 的运行流程如图2所示。
1. 将起始 URL 集合注入到 Nutch 系统之中。
2. 生成片段文件,其中包含了将要抓取的 URL 地址。
3. 根据URL地址在互联网上抓取相应的内容。
4. 解析所抓取到的网页,并分析其中的文本和数据。
5. 根据新抓取的网页中的URL集合来更新起始URL集合,并再次进行抓取。
6. 同时,对抓取到的网页内容建立索引,生成索引文件存放在系统之中。
图 2. Nutch 的运行流程
从用户端来看,Nutch 提供了一个基于 Tomcat 的应用程序,它允许用户输入词条,然后 Nutch 会在已经建立好的索引文件中进行搜索,并将相应的结果返回给用户。