Как правильно настроить Apache Tika для нескольких типов документов? - PullRequest
1 голос
/ 24 июля 2011

Я уже некоторое время использую Tika и знаю, что предполагается использовать только фасад Tika с настройкой по умолчанию или с пользовательским TikaConfig, представляющим файл org/apache/tika/mime/tika-mimetypes.xml.

Мое приложение не допускает никакихтип документа отличается от html,doc,docx,odt,txt,rtf,srt,sub,pdf,odf,odp,xls,ppt,msg

и MediaTypes по умолчанию включает в себя множество других.

Должны ли мы изменить tika-mimetypes.xml, чтобы мы удалили ненужные MimeTypes?Тогда, насколько я понимаю, он будет создавать составные парсеры и детекторы только для этих MimeTypes.

Но что произойдет, когда будет предоставлен неподдерживаемый тип?Должен ли я просто перехватить TikaException или SAXException и отклонить файл?

Кроме того, как можно вручную редактировать tika-mimetypes.xml?Он имеет 1290 MimeTypes с в основном нелепыми MimeTypes третьей стороны.Почему они там?

1 Ответ

2 голосов
/ 24 июля 2011

Если вы хотите принимать только определенные типы, вам все равно понадобится полный набор типов mimetypes. В противном случае, как еще вы можете обнаружить, что файл, который вам только что дали, на самом деле является MP3, а не одним из утвержденных вами форматов? Таким образом, сохраните полный набор типов mimtypes для обнаружения

После того, как вы сделали шаг обнаружения и решили, что это допустимый mimetype, вы можете просто передать файл на AutoDetectParser и покончить с этим. В конце концов, вы проверите mimetype, возвращаемый детектором, и уже выручили бы, если он вам не нравится.

Однако, если вам нужна дополнительная проверка, есть два способа сделать это. Один из них - иметь собственный файл org.apache.tika.parser.Parser, в котором перечислены парсеры только тех форматов, которые вы хотите использовать. Это файл конфигурации, который используется для определения того, какие парсеры должны быть доступны для AutoDetectParser, поэтому, если, например, вы удалили MP3Parser из этого списка, анализатор автоопределения перестанет обрабатывать MP3.

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

...