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 中設置最大嵌入深度。
添加回答
舉報