2011-02-26 56 views
7

我正在使用Apache Tika對各種文檔(ODS,MS office,pdf)進行簡單處理。我必須得到至少:Apache Tika和文檔元數據

word count, author, title, timestamps, language etc. 

這不是那麼容易。我的策略是使用6種類型的文檔的模板方法模式,我首先找到文檔類型,並基於該文檔分別處理它。

我知道apache tika應該刪除這個需求,但是文檔格式是完全不同的吧?

例如

InputStream input = this.getClass().getClassLoader().getResourceAsStream(doc); 
ContentHandler textHandler = new BodyContentHandler(); 
Metadata metadata = new Metadata(); 
Parser parser = new OfficeParser(); 
parser.parse(input, textHandler, metadata, new ParseContext()); 
input.close(); 

for(String s : metadata.names()) { 
    System.out.println("Metadata name : " + s); 
} 

我試圖消耗臭氧層物質,微軟Office,PDF文檔做到這一點,和metadada相差很多。 MSOffice界面列出了MS文檔的元數據鍵和一些Dublic Core元數據列表。但是,應該如何實現這樣的應用程序呢?

可以請任何有經驗的人分享他的經驗?謝謝

回答

6

通常解析器應該爲所有文檔格式中的相同類型的東西返回相同的元數據關鍵字。但是,有些類型的元數據只出現在某些文件類型中,因此您不會從其他文件中獲取這些元數據。

您可能希望只使用AutoDetectParser,如果你需要做什麼特別的事情與事後基礎上,MIME類型的元數據處理,如

Metadata metadata = new Metadata(); 
metadata.set(Metadata.RESOURCE_NAME_KEY, filename); 
ParseContext context = new ParseContext(); 

Parser parser = new AutoDetectParser(); 
parser.parse(input, textHandler, metadata, new ParseContext()); 

if(metadata.get(CONTENT_TYPE).equals("application/pdf")) { 
    // Do something special with the PDF metadata here 
} 
相關問題