【问题标题】:Adding custom fields and types in nutch elastic indexer在 nutch 弹性索引器中添加自定义字段和类型
【发布时间】:2016-11-04 09:03:29
【问题描述】:

我在 nutch 弹性索引器上运行测试运行。我想添加一些自定义字段和自定义类型名(而不是“doc”),它们可以作为索引作业的参数给出。我了解 NutchDocument 是负责设置字段名称和元数据的类,但无法弄清楚 nutch 在哪里创建此实例并设置值。或者有没有其他方法可以解决这个问题。请帮忙

【问题讨论】:

    标签: elasticsearch web-crawler nutch


    【解决方案1】:

    您需要(将新字段添加到 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 使用。

    【讨论】:

    • 感谢您的回答。 :) 我还有一个问题。我正在使用 nutch REST api 来调用爬网操作。那么无论如何将一些选项作为参数传递给索引操作,然后基于该参数进行索引?我没有看到在索引过滤器上检索 args 的任何选项。
    • 这有什么?
    • 嗨@Sachin你能详细说明一下吗?我认为一般的答案是您不能将任何信息传递给索引操作。在您的种子文件中,您可以将自定义元数据添加到您的种子文件中,但没有关于索引器应如何对该信息做出反应的逻辑(索引除外)。您可以自己编写,例如查看github.com/apache/nutch/blob/master/src/plugin/mimetype-filter/…,它使用检测到的 mime 类型来决定是否应该对文档进行索引。
    • 还有一件事,作为一种通用方法,如果您的自定义 IndexingFilterfilter 方法上返回 null (github.com/apache/nutch/blob/master/src/java/org/apache/nutch/…),那么该文档将被忽略/从索引中跳过跨度>
    • 如果我没记错的话,提要插件会将在 RSS 提要中找到的字段索引为 ES 中的单独文档,但它不会获取内容(所以你只会得到摘要) 但如果您使用 parse-tika 插件,则在提要中找到的 URL 将被视为外链接并在后续步骤中获取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多