【问题标题】:Apache Tika, cannot retrieve 'subject' metadata valueApache Tika,无法检索“主题”元数据值
【发布时间】:2014-04-11 13:22:31
【问题描述】:

我正在使用 java,我正在尝试使用 apache tika 提取一些元数据,但我无法提取“主题”元数据的预期值。该文件是 jpg 图像。这是我的代码:

首先我是这样解析文件的:

        inputStream = new FileInputStream(fileToExtract);   
        Parser parser = new AutoDetectParser();  
        ContentHandler contentHandler = new BodyContentHandler();  
        Metadata metadata = new Metadata(); 
        parser.parse(inputStream, contentHandler, metadata, new ParseContext()); 

然后我尝试打印这些:

    metadata.get(Metadata.AUTHOR)                           -->  "MyAuthor"
    metadata.get(TikaCoreProperties.CREATOR)                -->  "MyCreator"
    metadata.get(TikaCoreProperties.TITLE)                  -->   "MyTitle"
    metadata.get(Metadata.SUBJECT)                          -->   **null**
    metadata.get(TikaCoreProperties.KEYWORDS)               -->   **null**

所以,我得到了正确的所有值,并且我得到了主题的空值。元数据是我手动添加的(右键->属性,windows OS)。

我做错了吗?


PS:请注意,“TikaCoreProperties.KEYWORDS”是另一种根据 apache tika 文档检索主题的方式。

【问题讨论】:

    标签: java metadata apache-tika


    【解决方案1】:

    Apache Tika 尝试在所有文件格式中返回一致的元数据。如果一种格式称为Author、另一种格式为Creator、另一种格式为Created By 和另一种格式为Creator[0],这无关紧要,Tika 将它们映射到一个一致的键上。通常,这些密钥基于众所周知的外部标准,例如 Dublin Core

    如果您想查看 Tika 应用于 Microsoft Office 文档的映射,您需要查看 SummaryExtractor。如果您想知道 Tika 可以从给定文件中提取的所有元数据键和值是什么,请使用tika-app cli 工具和--metadata,或在Metadata object 上调用names() 以获取列表Tika 找到元数据键。

    【讨论】:

    • 但我没有将随机字符串传递给库方法。我使用的代码基于 apache Tika 文档 (tika.apache.org/1.5/api/org/apache/tika/metadata/Metadata.html)。因此,由于主题字段不为空,要么我使用了错误的关键字(Metadata.SUBJECT ...),要么库无法检索该值。对此有何见解?
    • Tika-App CLI 工具通过--metadata 为您的文件报告什么?
    • 对不起,我没有看到你的评论。该工具也不检索任何主题值。
    • 我刚刚创建了一个带有标题、主题和关键字的 word 文档 (.doc)。保存,针对它运行 tika 应用程序,然后我取回了我的测试对象条目:cp:subject: SUBJECT subject SUBJECT。我只能建议你提出一个错误并上传有问题的文件,至于一般情况下 Tika 对我来说工作得很好,而且在所有单元测试中也很好......
    猜你喜欢
    • 2015-10-10
    • 2013-11-16
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多