ForkParser
- это новый синтаксический анализатор Tika, представленный в версии 0.9 Tika, расположенный в org.apache.tika.fork
. Новый парсер разветвляет новый процесс jvm для анализа переданного потока файлов. Я подумал, что это может быть хорошим способом ограничения того, сколько памяти я хочу посвятить процессу извлечения метаданных Тики. Однако объект Metadata
не заполняется соответствующими свойствами метаданных, как это было бы при использовании AutoDetectParser
. Тесты показали, что объект BodyContentHandler
не является null
.
Почему объект Metadata
не заполнен ничем (кроме добавленного вручную RESOURCE_NAME_KEY
)?
public static Metadata getMetadata(File f) {
Metadata metadata = new Metadata();
try {
FileInputStream fis = new FileInputStream(f);
BodyContentHandler contentHandler = new BodyContentHandler(-1);
ParseContext context = new ParseContext();
ForkParser parser = new ForkParser();
parser.setJavaCommand("/usr/local/java6/bin/java -Xmx64m");
metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
parser.parse(fis, contentHandler, metadata, context);
fis.close();
String contentType = metadata.get(Metadata.CONTENT_TYPE);
logger.error("contentHandler: " + contentHandler.toString());
logger.error("metadata: " + metadata.toString());
return metadata;
} catch (Throwable e) {
logger.error("Exception while analyzing file\n" +
"CAUTION: metadata may still have useful content in it!\n" +
"Exception: " + e, e);
return metadata;
}
}