元标记未为某些网站编制索引

Metatags are not indexing for some websites

我正在使用 Nutch 爬取一些网站,并借助自定义插件 (myplugin) 将数据索引到 Elastic Search。

我需要存储在已抓取网站的元标记中的信息。所以为了实现这一点,我只是在 nutch-site.xml 中添加了属性,如下所示:

<property>
    <name>plugin.includes</name>
    <value>protocol-httpclient|myplugin|urlfilter-regex|parse-(tika|html|js|css|metatags)|index-(basic|anchor|metadata)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-elastic</value>
  </property>

  <property>
        <name>metatags.names</name>
        <value>*</value>
  </property>

  <property>
        <name>index.parse.md</name>
        <value>keywords,description</value>
  </property>

  <property>
        <name>index.content.md</name>
        <value>keywords,description</value>
  </property>

它在某些网站上运行良好,但不适用于 this

等网站

任何帮助将不胜感激。

可能是因为名字是大写的

<meta name="Description" content="...">
<meta name="Keywords" content="...">

也许可以在您的配置中尝试大小写变体。

顺便说一句,您可以使用“./nutch indexchecker ...”来测试给定 URL.

上的提取和字段生成

编辑:https://github.com/apache/nutch/blob/master/src/plugin/index-metadata/src/java/org/apache/nutch/indexer/metadata/MetadataIndexer.java#L92 小写我们正在寻找的键,但解析元数据中的键名称可能是原始大小写,即大写。

在解决此问题之前,您可以将一些自定义代码添加到您自己的插件中以将键小写,或者修改 MetadataIndexer 以便它保留大小写或更改逻辑以便它可以处理大小写中的变体。

根据 Julien nioche 提供的答案和提示,您可以将 parser-filter 插件 更改为这样的内容将其中的所有元名称小写,这将暂时解决问题。

        Metadata newMeta=new Metadata();
        Metadata oldMeta=parse.getData().getParseMeta();
        String metaValue;
        for(String metaName:oldMeta.names()){
          metaValue=oldMeta.get(metaName);
          newMeta.add(metaName.toLowerCase(),metaValue);
        }

        parseData = new ParseData(status, title, parse.getData().getOutlinks(), 
                                      parse.getData().getContentMeta(), newMeta);
        parseResult.put(content.getUrl(), new ParseText(text), parseData);
        return parseResult;

HTH