自我的学习记录!
Chapter11 tika的扩展
世界上有成千上万个文件格式,而且新的还在不断地被引入,所以说tika不可能支持所有的类型。因此虽然每一个tika版本增加对新的格式支持,也没到tika可以对你正在试图使用的文件抽取内容或检测类型的时候。这一章节是关于你应该如何去处理这一情形。
想象你正在处理一种基于XML新的医学处方文件格式。每一个文件描述单一的处方,由一系列混合与自由形式的信息组成。可为了更好的安全性与隐私,处方文件能随意地数字签名和加密。11.1节说明了在实际中如何去使用数字处方文件。
将这些基于自由形式和选定某些元数据(像病人名字,标识符)的文件进行搜索是有用的。最简单的实现这样一个搜索引擎的方法是使用一个已存在的搜索栈,然后去做所需要的是去教tika如何去解析这些文件。
我们将会使用这样的数字处方文件作为扩展tika的例子。首先,我们将教会tika如何去检测和识别这类文件,然后去怎么让tika正确地解析文件。
11.1增加类型的信息
处理一种新的文件类型的第一步是在媒体类型中识别它。我们实验性的命名处方文件格式为“application/x-prescription+xml”。前缀的“x-”表示未被官方注册的实验性类型,后缀的“+xml”是说明这是基于xml的类型。
我们也需要一些信息去帮助处方文件的自动检测。正如在第四章讨论的,文件扩展名和XML根元素是类型检测的很好提示。所以,我们假定处方文件被命名”.xpd”作为处方文件扩展名。进一步的,我们假定XML文件以一个”<xpd:prescription>”元素开始,其前缀”xpd”是映射到命名空间“http://example.com/2011/xpd”。下面的列表展示了这一文件可能的结构:
媒体类型中这一类型所有信息可以描述记录在下面。请回到第四章我们学习MIME-info数据库去获取关于媒体类型记录结构进一步信息:
教tika关于新的文件类型的最明显方式是扩展已知的媒体类型数据库,所以这就是第一步我们应该注重的。
11.1.1自定义媒体类型配置
我们来看早些在第四章学习的共享的MIME-info数据库文件。数据库包含了在tika中所有已知的媒体类型信息,所以要支持一种新的类型需要将其加入到数据库中。这一节展示如何去做这一任务。
在tika-core JAR中Tika默认从“org/apache/tika/mime/tika-mimetypes.xml”文件加载数据库。但是你也可以通过使用”MimeTypesFactory”类命令tika加载替换的文件。例如下面的列表说明了在类型检测中如何加载替换的MIME-info数据库和建立tika façade实例:
当使用上述的自定义设置时,这一代码段将会返回期望的“application/x-prescription+xml”媒体类型。你也可以使用被“MimeTypesFactory”类返回“MimeTypes”类对象来创建”AutoDetectParser”实例或者任何你需要一个检测器对象的地方。
Tik