我知道 Tika 有一个非常好的包装器,可以让我从解析文件中获取 Reader,如下所示:
Reader parsedReader = tika.parse(in);
但是,如果我使用它,我无法指定我想要的解析器和我想要传递的元数据。例如,我想传递额外的信息,比如要使用的处理程序、解析器和上下文,但我可以如果我使用这种方法,请不要这样做。据我所知,它是唯一让我取回 Reader 实例并逐步读取而不是取回整个解析字符串的方法。
我想包括的事情的例子:
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, fileName); //This aids in the content detection
ParseContext context = new ParseContext();
context.set(Parser.class, parser);
parser.parse(is, handler, metadata, context);
但是,直接在解析器上调用 parse 不会返回阅读器,我唯一的选择(在文档中注意到)是返回完全解析的字符串,这可能不适合内存使用。我知道我可以限制返回的字符串,但我想远离它,因为我想要完全解析的信息,但以增量方式。两全其美,这可能吗?