动态添加字段到NutchDocument

时间:2016-11-23 09:43:06

标签: indexing web-crawler nutch

我正在使用Nutch 1.12和Elastic Search,我想动态地向NutchDocument添加一个字段。

目前,我可以将静态字段值添加到NutchDocument,并能够将其编入索引到弹性搜索。

这是我的索引过滤器的代码段:

public class CustomIndexFilter implements IndexingFilter {

    private Configuration conf;

    public Configuration getConf() {
        return conf;
    }

    public void setConf(Configuration conf) {
        this.conf = conf;
    }

    @Override
    public NutchDocument filter(NutchDocument doc, Parse parse, Text url, CrawlDatum datum, Inlinks inlinks) {
        String content = parse.getText();
        doc.add("pageLength", content.length());
        return doc;
    }
}

我认为解析后会创建NutchDocument。因此,在此之前需要提供字段值(不知道我应该在哪里提供)。寻求解决方法。

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:2)

NutchDocument是在索引步骤中创建的,正如您所发现的那样,由IndexingFilters修改。后者通常使用来自解析的元数据,但字段本身主要由IndexingFilters创建(一些由主索引代码创建)。有许多插件可让您根据配置生成字段,例如index-metadata或index-static。

答案 1 :(得分:2)

我会为此建议一个解决方法。您可以使用Nutch REST api创建自定义配置,其中包含用于爬网运行的自定义选项。然后在自定义索引器插件中读取该特定配置。这样,您可以通过在从conf中读取 NutchDocument 中的字段来控制要编入索引的内容。 HTH