天天看点

nutch2.3.1 scoring-opic 插件url评分为0 问题

运行nutch程序,发现除了入口url等分为1以外,其余的url得分都为0,问题如下图红圈所示。

nutch2.3.1 scoring-opic 插件url评分为0 问题

几番百度、谷歌、求助大神无果后,决定尝试跟踪源码找问题。源码环境搭建参考博客:

<a href="http://blog.csdn.net/lqleo323/article/details/50999044">http://blog.csdn.net/lqleo323/article/details/50999044</a>

首先在org.apache.nutch.scoring.opic.opicscoringfilter类里面打断点定位问题,每次运行到下面红圈处,程序就return了!。

nutch2.3.1 scoring-opic 插件url评分为0 问题

但是程序在一开始的inject阶段就把这个值注入了啊 注入代码:

没有办法,只能每个阶段来调试,然后查看url里面的metadata属性,看他怎么消失的。inject,generate、fetch阶段的url图如下所示:

nutch2.3.1 scoring-opic 插件url评分为0 问题
nutch2.3.1 scoring-opic 插件url评分为0 问题
nutch2.3.1 scoring-opic 插件url评分为0 问题

fetch阶段 metadata属性存储的cash值消失了!这下问题算是定位到了 在fetch阶段。接着就是跟踪fetch源码最后发现下面一段代码。

如果job.getconfiguration().getboolean(parse_key, false)为真,即conf/nutch-site.xml配置

则url里面的metadata属性就有cash值,可以用于后面的计算url分数。

最后每个链接都有了分数

nutch2.3.1 scoring-opic 插件url评分为0 问题

修改了配置文件后。记得要ant clean,ant重新编译。

虽然问题好像看似解决了,但是还是有很多疑问,不明白为什么一个fetch阶段的配置可以影响到url的评分计算。而且这个fetcher.parse设置为true只是在fetch阶段也做parse的工作而已。希望有大神看到了可以帮我解惑。接触nutch几个月了,感觉坑很多,有时间还是要好好阅读下源码理一理才行。

<a href="http://blog.csdn.net/lqleo323">csdn</a>