我正在尝试使用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而不是只返回一个:每个项目中的一个
答案 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)。