【问题标题】:How to extract content from. Pst file using apache tika?如何从中提取内容。使用 apache tika 的 Pst 文件?
【发布时间】:2016-04-30 03:30:40
【问题描述】:

如何使用 apache tika 解析.Pst 文件 1.2?
使用 ljcene 搜索时如何获取电子邮件的整个正文、附件和所有元数据?

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

【问题讨论】:

  • 是的,我已经尝试使用带有 BodyContenthandle、元数据和文档对象的自动检测解析器
  • for (File file : docs.listFiles()) { Metadata metadata = new Metadata(); ContentHandler handler = new BodyContentHandler(); ParseContext 上下文 = 新 ParseContext(); Parser parser = new AutoDetectParser(); InputStream 流 = new FileInputStream(file);尝试 { parser.parse(流、处理程序、元数据、上下文); } catch (TikaException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); }

标签: pst


【解决方案1】:

如果你被 1.2 卡住了,你可以试试推荐 here

如果您能够升级,我们将其添加为 1.7 中的 RecursiveParserWrapper ...如果可以升级到 1.12,或者等待一两周,1.13 应该会发布。

通过命令行:

java -jar tika-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++;
    }

【讨论】:

  • 欢迎来到 StackOverflow Tim!不要忘记您可以follow this StackExchange filter 以您选择的频率收到有关新 Tika 问题的通知! :)
  • 我试过了,它只提供邮件的元数据,我们如何检索电子邮件正文......和附件
  • 每个元数据对象代表一个文件/附件。 'wrapper.getMetadata()' 返回的列表有多大?内容应该在“X-TIKA:content key”中通过。我只是在新制作的 PST 上仔细检查了这一点,它有效。您是否有机会通过我们的JIRA 与我们分享您的 PST?
  • 谢谢它的工作,现在我如何将它存储到文档对象并将其存储在 lucene 索引中以供索引
  • 这更像是一个 Lucene 问题和一个设计问题,但是将信息从 Metadata 对象列表中提取出来,为每个逻辑文档填充一个 Lucene 文档并将其添加到 IndexWriter 应该很简单.如果您使用 Solr,请参阅:lucidworks.com/blog/2012/02/14/indexing-with-solrj
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多