代码之家  ›  专栏  ›  技术社区  ›  Hafiz Muhammad Shafiq

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

  •  0
  • Hafiz Muhammad Shafiq  · 技术社区  · 8 年前

    我希望Nutch根据我自己的规则选择特定的URL。此步骤在生成时完成。我知道如何编写解析器/索引器插件。但是如何在生成时执行。我的Nutch版本是2.3系列

    2 回复  |  直到 8 年前
        1
  •  2
  •   Jorge Luis    8 年前

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

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

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

    顺便说一句,这并不完全罕见,我似乎有些客户需要定制发电机。

        2
  •  2
  •   Julien Nioche    8 年前

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

    坚果2。x真的很笨拙,我不确定你能不能基于原始表的过滤器创建一个表的副本。

    你用什么Gora后端?

    StormCrawler在这方面更加灵活,我们最近添加了 a mechanism for filtering URLs at the spout level ,这正是你需要的。你可以在Nutch 2中做类似的事情。但这可能意味着改变戈拉的情况。

    推荐文章