Apache Nutch RSS Feed中每个项目的一个文档

时间:2016-05-31 08:58:36

标签: apache solr rss nutch

我正在尝试使用Apache Nutch构建一个应用程序,它为数据库添加了几个文档,一个用于RSS Feed中的每个项目。

根据我的理解,当它解析一个feed时,它会创建一个唯一的Solr Document,其中所有内容都被连接起来

<item>
     <title>Comment 1</title>
     <link>http://www.link.com/a/#comment-2555842742</link>
     <description>document text1</description>
     <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">12321 Borland</dc:creator>
     <pubDate>Mon, 07 Mar 2016 06:48:35 -0000</pubDate>
  </item>
  <item>
     <title>>Comment 2</title>
     <link>http://www.link.com/a/#comment-2555590727</link>
     <description>document text2</description>
     <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">12321</dc:creator>
     <pubDate>Mon, 07 Mar 2016 00:48:34 -0000</pubDate>
  </item>

相反,我希望能够返回2个ParseResult而不是只返回一个:每个项目中的一个

1 个答案:

答案 0 :(得分:1)

默认情况下,RSS源由parse-tika插件解析,请参阅https://github.com/apache/nutch/blob/master/conf/parse-plugins.xml#L31-L34,默认情况下将RSS源内的链接标识为原始源URL的外链。然后存储此外链以供稍后获取,解析等。如果您运行该命令,则可以检查此项:

$ bin/nutch parsechecker http://humanos.uci.cu/feed/

输出应该是这样的:

...
---------
Url
---------------

http://humanos.uci.cu/feed/
---------
ParseData
---------

Version: 5
Status: success(1,0)
Title: humanOS
Outlinks: 10
...

这基本上报告已成功解析1个URL并找到10个外链。

要获得所需的输出,您需要使用feed插件。首先,激活feed文件的plugin.include属性中的nutch-site.xml插件。

完成此操作后,您仍需要指示Nutch首先使用feed解析器(使用下面的ROME库)。要完成此操作,请编辑conf/parse-plugins.xml文件,找到条目:<mimeType name="application/rss+xml">,并将其保留为:

<mimeType name="application/rss+xml">
    <plugin id="feed" />
    <plugin id="parse-tika" />
</mimeType>

在这种情况下,如果您再次尝试parsechecker命令输出会有所不同,一旦您索引到Solr / ES,您应该会看到更多文档:1表示原始Feed,另外1表示Feed中的每个项目。

请注意,这些新文档只会作为从content字段中提取的description字段,而这可能相当不完整。

如果您需要编写更加自定义的逻辑,ParseResult类允许使用&#34;子文档&#34; (https://github.com/apache/nutch/blob/master/src/java/org/apache/nutch/parse/ParseResult.java#L30-L41)。