2011-07-23 64 views
1

我一直在使用Tika一段時間,我知道一個應該只使用Tika門面,默認或定製TikaConfig代表org/apache/tika/mime/tika-mimetypes.xml文件。如何爲幾種文檔類型正確配置Apache Tika?

我的應用程序不允許任何文檔類型比html,doc,docx,odt,txt,rtf,srt,sub,pdf,odf,odp,xls,ppt,msg

,默認MediaTypes包括萬噸別人不同。

我們是否應該修改tika-mimetypes.xml,以便移除我們不需要的MimeTypes?然後據我所知它只會爲這些MimeType創建複合解析器和檢測器。

但是,當它提供不受支持的類型時會發生什麼?我應該抓住TikaException還是一些SAXException並拒絕該文件?

另外如何手動編輯tika-mimetypes.xml?它有1290 MimeTypes與大多可笑的第三方MimeTypes。他們爲什麼在那裏?

+0

你對檢測,解析還是兩者都感興趣?只有tika-mimetypes.xml僅用於檢測步驟,但您似乎主要談論解析? – Gagravarr

+0

但是在決定使用哪個解析器時需要它。看看TikaConfig()和AutoDetectParser(TikaConfig配置)構造函數。 Afaik這有點搞砸了。基於tika-mimetypes.xml中的mimeTypes,它會創建儘可能多的parserDecorator,它與tika-mimetypes.xml中的mimeTypes相同,除了實現Parser接口的那些外,它們是相同的。它們都是CompositeParser的一部分,每一個都只支持一個mimeType ... – lisak

回答

2

如果您只想接受某些類型,那麼您仍然需要設置完整的mimetypes。否則,你還能如何檢測到某人給你的文件實際上是一個MP3,而不是你的批准格式之一?因此,保留完整的mimtypes設置爲檢測

一旦你已經完成了檢測步驟,並且你已經決定它是一個有效的mimetype,你可以傳遞文件到AutoDetectParser並完成它。畢竟,你會檢查探測器返回的mimetype,如果它不是你喜歡的那個,就已經保釋了。

但是,如果你想額外檢查,有兩種方法可以做到這一點。一個是有一個自定義的org.apache.tika.parser.Parser文件,它只列出你想使用的格式的解析器。這是用於決定哪些解析器可用於AutoDetectParser的配置文件,例如,如果您從該列表中刪除了MP3Parser,則自動檢測解析器將停止處理MP3。

另一種方法是隻顯示您希望支持的解析器的清單。然後,不是使用自動檢測解析器,而是簡單地遍歷它們,直到找到能夠處理該文件的文件,並直接調用解析方法。這會給你最多的控制,但可能稍微多一些工作。

+1

好點,你說得對,最好是讓所有的M​​IME類型可用於檢測,因爲考慮到主體在於匹配第一個字節,則越早mime類型被發現,越好...你知道什麼困擾我嗎?我正在尋找5分鐘的代碼,特別是MediaType + MimeType,我無法弄清MediaType甚至存在的原因。我喜歡tika,但它很難閱讀和命名約定有時很容易讓人誤解 – lisak

+1

我建議你在Tika Dev列表中提問這個問題! – Gagravarr