2011-02-26 4 views
7

Apache Tika를 사용하여 다양한 문서 (ODS, MS office, pdf)를 간단하게 처리하고 있습니다. 나는 적어도 다음과 같이 얻어야한다.Apache Tika 및 문서 메타 데이터

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

그것은 그리 쉽지 않다. 내 전략은 6 가지 유형의 문서에 대해 템플릿 방법 패턴을 사용하는 것입니다. 여기서 문서 유형을 먼저 찾은 다음이를 기반으로 개별적으로 처리합니다.

저는 아파치 티카가이 필요성을 제거해야한다는 것을 알고 있습니다. 그러나 문서 형식은 완전히 다릅니다. 예를

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); 
} 

를 들어

나는 ODS, MS 오피스, PDF 문서에 대해이 작업을 수행하기 위해 노력하고 metadada는 많이 다릅니다. MS 문서에 대한 메타 데이터 키를 나열하는 MSOffice 인터페이스와 일부 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 
} 
을해야하는 경우
관련 문제