我希望Nutch根据自己的规则选择特定的网址。该步骤在生成时完成。我知道如何编写解析器/索引器插件。但是如何在生成时间做到这一点。我的Nutch版本是2.3系列
答案 0 :(得分:2)
Nutch生成器实际上并不是Nutch的扩展点,因此您无法编写插件来自定义它。然而,没有什么能阻止你用自己的逻辑编写自己的发生器。
您需要调整bin/nutch
和bin/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中的东西。