如何为几种文档类型正确配置Apache Tika?

我一直在使用Tika,我知道一个人应该只使用Tika facade,默认或自定义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。 他们为什么在那里?

如果您只想接受某些类型,那么您仍然需要设置完整的mimetypes。 否则,你怎么能检测到某人给你的文件实际上是MP3,而不是你批准的格式之一? 因此,请保留完整的mimtypes进行检测

一旦你完成了检测步骤,并且你已经确定它是一个有效的mimetype,你可以将文件传递给AutoDetectParser并完成它。 毕竟,你要检查探测器返回的mimetype,如果不是你喜欢的那个,那就已经拯救了。

但是,如果您需要额外检查,有两种方法可以执行此操作。 一种是使用自定义的org.apache.tika.parser.Parser文件,该文件仅列出您要使用的格式的解析器。 这是用于决定哪些解析器可用于AutoDetectParser的配置文件,因此,例如,如果您从该列表中删除了MP3Parser ,则自动检测解析器将停止处理MP3。

另一种方法是拥有您希望支持的解析器的明确列表。 然后,不是使用自动检测解析器,而是简单地遍历所有这些解析器,直到找到能够处理该文件的那个,并直接调用该解析方法。 这将给你最大的控制,但可能稍微多一些工作。