我正在尝试在 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$2 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$2 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了解一些公开的其他配置选项。
关于java - 更改 tika-config.xml 中的解析器会导致 "Unable to load org.apache.tika.parser.DefaultParser",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59298736/