在 tika-config.xml 中更改解析器会导致 "Unable to load org.apache.tika.parser.DefaultParser"

Changing parsers in tika-config.xml results in "Unable to load org.apache.tika.parser.DefaultParser"

我正在尝试在 Nutch 中启用 Tika 的 BoilerpipeContentHandler 解析器以从网页中提取文章文本。为此,我配置了 tika-config.xml 以排除 HTMLParser 并激活 BoilerpipeContentHandler 解析器,如下所示:

<properties>
     <service-loader initializableProblemHandler="ignore" loadErrorHandler="WARN" />
 <parsers>
    <parser class="org.apache.tika.parser.DefaultParser">
      <mime-exclude>text/html</mime-exclude>
      <parser-exclude class="org.apache.tika.parser.html.HtmlParser"/>
    </parser>

 <!-- Use a different parser for text/html -->
    <parser class="org.apache.tika.parser.html.BoilerpipeContentHandler">
      <mime>text/html</mime>
    </parser>
  </parsers>
</properties>

当我通过 运行 命令测试此配置时:

bin/nutch org.apache.nutch.parse.ParserChecker

输出包括:

Dec 12, 2019 5:11:40 PM org.apache.tika.config.LoadErrorHandler handleLoadError
WARNING: Unable to load org.apache.tika.parser.DefaultParser
java.lang.ClassNotFoundException: org.apache.tika.parser.html.HtmlParser
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

Dec 12, 2019 5:11:40 PM org.apache.tika.config.LoadErrorHandler handleLoadError
WARNING: Unable to load org.apache.tika.parser.html.BoilerpipeContentHandler
java.lang.ClassNotFoundException: org.apache.tika.parser.html.BoilerpipeContentHandler
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)

我的类路径设置正确,所以我不明白为什么找不到两个解析器 类。我想知道 Nutch 或 Tika 是否使用了不同的类路径?或者我的 tika 有明显的问题-config.xml.

如果您有任何想法,我将不胜感激。

我将专注于您的最终目标:将样板提取器与 Nutch 结合使用。 Nutch 已经在 Nutch 内部提供了对样板提取器的支持,无需更改 tika-config.xml

您需要在 nutch-site.xml 中将 tika.extractor 属性 设置为 boilerpipe。默认情况下,Nutch 将使用 ArticleExtractor 提取器。

您可以检查 https://github.com/apache/nutch/blob/master/conf/nutch-default.xml#L1645-L1677 以了解公开的一些其他配置选项。