Nutch 2.2.1和Elasticsearch 0.90.11 NoSuchFieldError:STOP_WORDS_SET

时间:2014-03-16 21:33:08

标签: elasticsearch web-crawler nutch

我正在尝试将Apache Nutch 2.2.1Elasticsearch 0.90.11进行整合。

我已经按照所有可用的教程(虽然没有那么多),甚至更改bin/crawl.sh使用elasticsearch来索引而不是solr。 似乎一切都在我运行脚本时工作,直到elasticsearch试图索引已爬网的数据。

我检查了nutch下的logs文件夹中的hadoop.log,发现了以下错误:

  1. 注入构造函数java.lang.NoSuchFieldError: STOP_WORDS_SET
  2. 时出错
  3. 注入构造函数java.lang.NoClassDefFoundError: Could not initialize class org.apache.lucene.analysis.en.EnglishAnalyzer$DefaultSetHolder
  4. 时出错

    如果你设法让它工作,我将非常感谢你的帮助。

    谢谢, 安德烈。

1 个答案:

答案 0 :(得分:1)

从未使用Apache Nutch,但只是简单地阅读它,我怀疑你包含Elasticsearch会导致类路径与类别路径上 的不同版本的Lucene发生冲突。基于Maven POM,它没有直接指定Lucene,那么我建议只包括与Elasticsearch绑定的Lucene,which should be Apache Lucene 4.6.1 for your version

当您确定自己拥有必要的代码时,重复的代码(同一个jar的不同版本)倾向于成为NoClassDefFoundError的原因。基于您从Solr切换到Elasticsearch的事实,那么您在类路径上留下Solr的任何罐子都是有意义的,这会导致手头的碰撞。 Solr的当前版本是4.7.0,与Lucene相同,并且会与4.6.1冲突。