Solr Cell / ExtractingRequestHandler не может проанализировать некоторые * .doc файлы - PullRequest
0 голосов
/ 16 июня 2011

Мне нужно проиндексировать содержимое файлов doc / docx / pdf, загруженных пользователями, и использовать для этого компонент Solr (1.4.1) ExtractingRequestHandler (817165). Если это имеет значение, я не запрашиваю индексирование у него - компонент всегда вызывается с параметром extractOnly, возвращающим только текстовое содержимое документа и не добавляющим его в индекс сразу (содержимое затем добавляется в индекс) снаружи »как текстовое поле документа, следуя стандартной процедуре).

Однако некоторые файлы не анализируются, и компонент возвращает 500 Internal Server Error, другие подробности не предоставлены. Из всех * .doc файлов, представленных нашими пользователями, около 30% из них не удается разобрать.

Это не проблема загрузки Solr - файлы, которые не могут быть проанализированы, всегда одинаковы, если вы анализируете один и тот же список их снова и снова. Это также не касается их размера - многие из них меньше, чем другие, успешно проанализированные. По-видимому, речь идет не о специфическом форматировании (или, по крайней мере, это не очевидно) - почти все документы, которые не в состоянии анализировать, имеют цветные шрифты, таблицы и изображения, но многие из проанализированных успешно также имеют то же самое.

Все эти файлы открываются в Word без каких-либо предупреждений или ошибок. Если вы сохраните их как docx, Solr начнет их правильный анализ, но повторное сохранение их в том же формате doc с тем же содержимым не поможет. Тем не менее, если все содержимое будет удалено и заменено каким-либо текстом lorem ipsum, а затем сохранено как документ, они станут правильными.

Поскольку замена содержимого помогает, это должно быть что-то с некоторыми элементами, используемыми в документах, но на странице Форматы Tika нет описания, указывающего, в каких случаях не удается выполнить синтаксический анализ документа.

Я загрузил образец файла , который не может быть проанализирован в случае, если кому-то достаточно любопытно попробовать его (он заархивирован, чтобы Windows Live не смог преобразовать его в «онлайн-документ»).

В настоящее время в качестве обходного пути я использую древнюю утилиту antiword для синтаксического анализа тех * .doc, на которых не работает Solr (а antiword их анализирует отлично). Тем не менее, это, очевидно, опора, и мне интересно, сталкивался ли кто-то еще с той же проблемой - мне не удалось ее погуглить, так что, вероятно, я что-то не так делаю.

Или, если это известная проблема, какие могут быть более изящные способы ее решения (мне не нравится полагаться на антислово)?

1 Ответ

0 голосов
/ 16 июня 2011

Я бы попробовал обновить Tika на вашем месте

Я взял ваш пример файла и попробовал его с последней версией Tika.Извлечение в текст работает просто отлично, я вижу

LOREM IPSUM
Lorem ipsum dolor sit amet
------

Home Phone:           000000000

Work   :   00000000           

(и т. Д.)

Так что я подозреваю, что это проблема со старыми версиями POI + Tika, которая сейчас исправлена.

(Если вы используете пользовательскую копию SOLR, то вам может понадобиться увеличить зависимость Tika в pom и перестроить, и maven позаботится об этом за вас. В противном случае более новая версия SOLR должна иметьболее новая Тика в стандартной комплектации)

...