Как читать большие файлы с помощью TIka?

Я разбираю большие документы в формате pdf и слова с помощью Tika, но я получаю сообщение об ошибке.

Your document contained more than 100000 characters, and so your requested limit has been reached. To receive the full text of the document, increase your limit. (Text up to the limit is however available).

Как увеличить лимит?

Ответ 1

Предполагая, что вы в основном следуете примеру Tika для извлечения в обычный текст, вам нужно всего лишь создать свой BodyContentHandler с лимитом записи -1, чтобы отключить ограничение записи, как объясняется в javadocs

Тогда ваш код будет выглядеть примерно так (на примере):

BodyContentHandler handler = new BodyContentHandler(-1);

InputStream stream = ContentHandlerExample.class.getResourceAsStream("test.doc");
AutoDetectParser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
try {
    parser.parse(stream, handler, metadata);
    return handler.toString();
} finally {
    stream.close();
}

Ответ 2

Я не согласен с @Gagravarr, используя лимит записи -1, поскольку по умолчанию, который будет выбран в случае -1, будет установлено значение 100000, если быть точным.

Если я не ошибаюсь, в документации Tika BodyContentHandler> WriteOutContentHandler говорится, что:

Внутренний буфер строк ограничен 100 Кбайтами.

Однако лучший способ добиться этого - передать объект StringWriter в качестве аргумента вместо -1.

StringWriter any = new StringWriter();

а потом

BodyContentHandler handler = new BodyContentHandler(any);