2 回答
TA贡献1851条经验 获得超4个赞
在 OP 提出问题后更新:
EmbeddedDocumentExtractor
我知道您在开始提问时已经在制作一个实现 tika's 的自定义类:
“关于创建自定义 EmbeddedDocumentExtractor 类,”
所以看看 tika github 我看到这EmbeddedDocumentExtractor
是一个由名为 的类实现的接口ParsingEmbeddedDocumentExtractor
,它有一个具体的方法parseEmbedded
。我假设这是您要使用的方法,但限制为n。
我建议您创建一个自定义类来实现EmbeddedDocumentExtractor
并继承自ParsingEmbeddedDocumentExtractor
. 在这个类中,您定义了一个名为 COUNT_LIMIT 的变量。然后重写 parseEmbedded 方法来执行以下操作:
分离 InputStream 中的文件
将这些分离的文件放在使用限制的for循环中
在每个文件上调用父方法。
所以它看起来像这样:
class MyEmbeddedDocumentExtractor implements EmbeddedDocumentExtractor extends ParsingEmbeddedDocumentExtractor{
private static int COUNT_LIMIT = 10;
...
@Override parseEmbedded(
InputStream stream, ContentHandler handler, Metadata metadata, boolean outputHtml)
throws SAXException, IOException {
// separate the files in the InputStream
for(int i = 0; i < COUNT_LIMIT; i++){
super.parseEmbedded(streamOfOneFile, handler, metadata, outputHtml)
}
}
}
TA贡献1719条经验 获得超6个赞
根据您的需要,也许可以尝试 RecursiveParserWrapper;您可以在 RecursiveParserWrapperHandler 中设置最大嵌入深度。
添加回答
举报