Nutch主要分为两个部分 爬虫crawler和查询searcher。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。 Nutch 是一个开源的全文搜索引擎,它主要用于网络数据的抓取和索引。Nutch 的工作流程主要包括六个主要步骤:Injector、Generator、Fetcher、ParseSegment、CrawlDb 更新和 LinkDb 更新,最后由 Indexer 创建索引。下面将对每个步骤进行详细解释。 1. Injector: Injector 是 Nutch 工作流程的起点,负责将用户提供的 URL 列表(urlDir)注入到 CrawlDB(爬行数据库)中。这个过程分为两个子步骤:将 urlDir 中的 URL 加载到内存中,然后将这些 URL 写入一个新的临时目录 tempDir,并按照特定格式(如 SequenceFileOutputFormat)存储。接着,将 tempDir 中的数据合并到 crawldb/current 目录下,更新 CrawlDB。 2. Generator: Generator 从 CrawlDB 中选择待抓取的 URL,生成新的 segment(分段)。在这个过程中,它会根据用户指定的 topN 参数,选取排名最高的 N 个 URL 进行抓取。生成的 segment 文件名为当前时间戳(如 yyyyMMddHHmmss)。 3. Fetcher: Fetcher 负责实际的网络抓取任务,从 Generator 生成的 segment 中获取 URL 并下载对应的网页内容。下载的内容会被保存到一个新的 Segment 文件夹中,如 segments/yyyyMMddHHmmss,并采用 FetcherOutputFormat 格式。 4. ParseSegment: ParseSegment 对 Fetcher 下载的网页内容进行解析,提取出文本、元数据等信息。解析后的数据会分别存储在 parse_text、parse_data 和 crawl_parse 文件夹中。这些数据会以 SequenceFileInputFormat 输入,通过 ParseOutputFormat 输出。 5. CrawlDb 更新: 当页面被成功抓取并解析后,CrawlDB 需要更新抓取状态,以记录哪些 URL 已经被处理过。这个过程会创建一个新的 CrawlDB 版本,并将 fetcher 和 parser 的信息合并进去。 6. LinkDb 更新: LinkDb 存储了网页间的链接关系。在抓取和解析过程中,Nutch 也会更新 LinkDb,将新发现的链接加入其中。这一步骤同样涉及文件的重命名和格式转换,以反映最新的链接信息。 7. Indexer: Indexer 将所有 Segment 中的 parse_text、parse_data、crawl_parse、crawl_fetch 数据,以及 CrawlDB 和 LinkDB 的最新信息,合并创建索引。生成的索引可供搜索器使用,以进行快速高效的查询。 通过以上七个步骤,Nutch 完成了从 URL 注入到索引创建的整个流程,有效地实现了网络数据的抓取、处理和索引,为后续的搜索服务提供了基础。
- 粉丝: 0
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助