【问题标题】:How to filter URLs in Nutch 2.1 solrindex command如何在 Nutch 2.1 solrindex 命令中过滤 URL
【发布时间】:2013-05-07 14:54:27
【问题描述】:

当我运行bin/nutch solrindex 命令时,如何防止我获取的某些页面被编入索引?我想定义和使用一个 regex-urlfilter.txt,就像我在获取时所做的那样。

我正在使用 Nutch 2.1,根据 http://wiki.apache.org/nutch/bin/nutch%20solrindex,该选项刚刚消失。查了源码,没找到任何线索。

有什么解决办法吗?

【问题讨论】:

    标签: java solr nutch


    【解决方案1】:

    似乎应该使用索引过滤插件。

    我关注Hartl's tutorial整理和链接源代码。

    这是代码中有趣的部分:

    public NutchDocument filter(NutchDocument doc, String url, WebPage page)
        throws IndexingException {
        String input_url = url;
        try {
            url = urlNormalizers.normalize(url, URLNormalizers.SCOPE_DEFAULT);
            url = urlFilters.filter(url); // filter the url
        } catch (Exception e) {
            LOG.warn("Skipping " + input_url + ":" + e);
            return null;
        }  
        if (url == null) {
            LOG.info("Skipping (filter): " + input_url);
            return null;
        }  
        return doc;
    }
    
    public void setConf(Configuration conf) {
        this.conf = conf;
        this.urlFilters = new URLFilters(conf);
        urlNormalizers = new URLNormalizers(conf, URLNormalizers.SCOPE_INJECT);
    }  
    

    【讨论】:

      【解决方案2】:

      您的排除标准是什么?

      您可以在获取/解析阶段排除它们吗?

      【讨论】:

      • 我正在抓取具有两种类型页面的网站:“记录列表”(链接)和“记录”。我需要获取第一个以检索指向记录的链接。但我只对索引“记录”页面感兴趣。
      • 您有权访问这些页面吗?如果是这样,您可以添加一个元标记 content="noindex,follow",Nutch 会尊重这一点,提取外链但不抓取内容。
      • 如果你不这样做,那么你可以在 SOLR 的查询阶段过滤掉结果
      • 我没有访问权限,并且我正在抓取数量不限的选定网站,因此在查询阶段执行此操作似乎有点繁重:/我现在正在研究两个选项:索引过滤器(我将不得不编写一个 nutch 插件)或重写我自己的 hadoop/hbase 索引工作......
      • 看起来编写一个自定义的 Nutch 插件是前进的方向。你可以从 lib-regex-urlfilter 开始,它应该是一个很好的起点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多