Alfresco社区4.0无法识别DITA文件的mimetype

时间:2011-11-17 16:00:41

标签: alfresco apache-tika

所以我已经安装了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编写自己的解析器?

1 个答案:

答案 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