2016-04-30 70 views
1

如何使用apache tika解析.Pst文件 1.2?
如何在使用ljcene进行搜索时获取整个主体,附件和电子邮件的所有元数据?如何从中提取内容。使用apache tika的Pst文件?

for (File file : docs.listFiles()) { 
Metadata metadata = new Metadata(); 
ContentHandler handler = new BodyContentHandler(); 
ParseContext context = new ParseContext(); 
Parser parser = new AutoDetectParser(); 
InputStream stream = new FileInputStream(file); 

try { 
parser.parse(stream, handler, metadata, context); 
} 
catch (TikaException e) { 
e.printStackTrace(); 
} 
catch (SAXException e) { 
e.printStackTrace(); 
} 
+0

雅我与自动检测解析器尝试(File file:docs.listFiles()){ 元数据元数据=新的元数据();与BodyContenthandle,元数据和文档对象 – user2857190

+0

。 ContentHandler handler = new BodyContentHandler(); ParseContext context = new ParseContext(); 解析器解析器= new AutoDetectParser(); InputStream stream = new FileInputStream(file); \t \t \t尝试{ \t \t \t \t parser.parse(流,处理程序,元数据,背景); \t \t \t} \t \t \t赶上(TikaException E){ \t \t \t \t e.printStackTrace(); \t \t \t}赶上(SAXException的发送){ \t \t \t \t e.printStackTrace(); \t \t \t} – user2857190

回答

1

如果你坚持1.2,你可能会如果你能够升级尝试推荐here

,我们补充说,由于RecursiveParserWrapper在1.7 ...只是升级到1.12,如果你可以,或者等待一两个星期和1.13应该出局。

通过命令行:

Java的罐子蒂卡-app.jar -J -t -i input_directory -o OUTPUT_DIRECTORY

或者代码:

Parser p = new AutoDetectParser(); 
    RecursiveParserWrapper wrapper = new RecursiveParserWrapper(p, 
      new BasicContentHandlerFactory( 
        BasicContentHandlerFactory.HANDLER_TYPE.XML, -1)); 

    try (InputStream is = Files.newInputStream(file)) { 
     wrapper.parse(is, new DefaultHandler(), new Metadata(), context); 
    } 
    int i = 0; 
    for (Metadata metadata : wrapper.getMetadata()) { 
     for (String name : metadata.names()) { 
      for (String value : metadata.getValues(name)) { 
       System.out.println(i + " " + name +": " + value); 
      } 
     } 
     i++; 
    } 
+0

欢迎来到StackOverflow Tim!不要忘了,你可以[按照这个StackExchange过滤器](http://stackexchange.com/filters/212512/apache-tika-questions)以你选择的频率得到新的Tika问题的通知! :) – Gagravarr

+0

我试过这个只给出元数据的邮件,我们如何检索邮件正文....和附件 – user2857190

+0

每个元数据对象代表一个文件/附件。 'wrapper.getMetadata()'返回的列表有多大?内容应该通过'X-TIKA:内容密钥'来实现。我刚刚在一个新制作的PST上检查了这个,并且它工作正常。您有可能在我们的[JIRA](https://issues.apache.org/jira/browse/tika/)上与我们分享您的PST吗? –

相关问题