所以我已经安装了Community 4.0.a并使用mimetype-map.xml扩展了mimetype列表,就像我之前在3.4中所做的那样
<alfresco-config area="mimetype-map">
<config evaluator="string-compare" condition="Mimetype Map">
<mimetypes>
<mimetype mimetype="application/dita+xml" text="true" display="DITA">
<extension default="true" display="DITA Topic">dita</extension>
<extension default="true" display="DITA Map">ditamap</extension>
<extension default="true" display="DITA Conditional Processing Profile">ditaval</extension>
</mimetype>
等...
但每次导入DITA文件时,它都会被识别为XML文件或PLAIN TEXT。我已经深入研究了它,看起来它是因为Apache TIKA分析了文件的开头以检查它的mimetype。
如何使用我的自定义mimetype-map快捷方式TIKA(因为它从TIKA首先被触发的代码看起来,如果它找到了什么,那么它的游戏结束了)?
我是否必须扩展TIKA编写自己的解析器?
答案 0 :(得分:1)
4.0中的Mimetype匹配逻辑略有改变,现在内容可用于检测,而不仅仅是文件名。作为其中的一部分,如果Tika非常确定文件是什么,那么这将是首选。
在大多数情况下,这意味着对于常见但命名错误的文件,Tika可以帮助纠正错误。对于非标准文件,Tika将拒绝提供强烈建议,并且将像以前一样使用基于Alfresco名称的匹配。 (如果Tika和Alfresco对mimetype的规范形式有所区别,那么Alfresco版本更受欢迎)
在少数情况下,文件类型实际上是普通类型的特化,而Tika知道父类型而不是特定类型。在这种情况下,Tika强烈建议父类型,我们无法意识到添加到Alfresco的新类型是基于此。 (Tika有一个mimetypes层次结构,而Alfresco只有一个平面列表)。对于这些少数案例,Tika也需要指导。
通常的解决方法是报告Tika错误,并在上游添加文件类型。 (对于非常自定义的类型,您还需要添加一个Tika custom-mimetypes.xml,它定义层次结构+ glob。)
在这个DITA案例中,我打开了TIKA-784并添加了一个临时修复程序。这也有now gone into Alfresco。