如何自定义Apache Nutch 2.3生成步骤

时间:2017-11-23 07:30:18

标签: java hadoop web-crawler nutch

我希望Nutch根据自己的规则选择特定的网址。该步骤在生成时完成。我知道如何编写解析器/索引器插件。但是如何在生成时间做到这一点。我的Nutch版本是2.3系列

2 个答案:

答案 0 :(得分:2)

Nutch生成器实际上并不是Nutch的扩展点,因此您无法编写插件来自定义它。然而,没有什么能阻止你用自己的逻辑编写自己的发生器。

您需要调整bin/nutchbin/crawl脚本才能调用自己的生成器而不是默认生成器。请记住,Nutch的其他部分依赖于生成器实现的某些部分(例如SegmentMerger)。如果您自定义这些部分,那么您还需要更新其他一些类。

在决定返回哪些元素时,生成器使用ScoringFilter.generatorSortValue()方法。因此,这是一种不需要更换发电机的替代方案。

旁注,这并非完全不常见,我似乎有些客户需要定制发电机。

答案 1 :(得分:2)

正如Jorge所建议的那样,您可以编写一个scoringfilter,根据您自己的逻辑为页面分配分数,并在生成步骤的基础上进行过滤。或者,如果您的选择规则可以仅基于URL来确定,那么您可以使用定制的URL规范生成器与生成范围(或任何值),将URL重写为URL过滤器然后丢弃。您需要在生成步骤中激活过滤。这是一个丑陋的黑客。

Nutch 2.x真的很尴尬,我不确定你是否可以根据原来的过滤器创建你的表副本。

你使用什么Gora后端?

StormCrawler对此更加灵活,我们最近添加了a mechanism for filtering URLs at the spout level,这正是您所需要的。你可以在Nutch 2.x中做类似的事情但这可能意味着改变GORA中的东西。