【发布时间】:2016-11-04 09:03:29
【问题描述】:
我在 nutch 弹性索引器上运行测试运行。我想添加一些自定义字段和自定义类型名(而不是“doc”),它们可以作为索引作业的参数给出。我了解 NutchDocument 是负责设置字段名称和元数据的类,但无法弄清楚 nutch 在哪里创建此实例并设置值。或者有没有其他方法可以解决这个问题。请帮忙
【问题讨论】:
标签: elasticsearch web-crawler nutch
我在 nutch 弹性索引器上运行测试运行。我想添加一些自定义字段和自定义类型名(而不是“doc”),它们可以作为索引作业的参数给出。我了解 NutchDocument 是负责设置字段名称和元数据的类,但无法弄清楚 nutch 在哪里创建此实例并设置值。或者有没有其他方法可以解决这个问题。请帮忙
【问题讨论】:
标签: elasticsearch web-crawler nutch
您需要(将新字段添加到 ES 索引中)是编写自定义索引过滤器(假设您要添加的字段的值已经被某些解析过滤器从内容中提取,否则您'将需要解析过滤器和索引过滤器)。
在上图中,您可以看到关于索引过滤器如何在 Nutch 中工作的简单图表。也许this post 会帮助你。底线是您将字段添加到实现IndexingFilter 接口的索引过滤器中的NutchDocument 类中。您添加到 NutchDocument 中的这些字段会被相应的插件自动转换为您的索引后端 (Solr/ES)。
至于更改type 字段,您需要将type 字段提取/添加到NutchDocument 类中,请查看https://github.com/apache/nutch/blob/master/src/plugin/indexer-elastic/src/java/org/apache/nutch/indexwriter/elastic/ElasticIndexWriter.java#L169-L171。 "doc" 是您无法提供的默认类型。因此,在您的自定义索引过滤器中,您将添加逻辑以动态设置type 字段,这将在索引阶段由ElasticIndexWriter 使用。
【讨论】:
IndexingFilter 在 filter 方法上返回 null (github.com/apache/nutch/blob/master/src/java/org/apache/nutch/…),那么该文档将被忽略/从索引中跳过跨度>
parse-tika 插件,则在提要中找到的 URL 将被视为外链接并在后续步骤中获取。