元标记未为某些网站编制索引
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
我正在使用 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