【问题标题】:Solr Cell fails to index image files with EXIFSolr Cell 无法使用 EXIF 索引图像文件
【发布时间】:2018-02-05 17:53:35
【问题描述】:

我刚刚安装了 Solr6.6.0。在 CentOS 上并让它与提供的示例“sample_techproducts_configs”一起使用。我可以索引文件,但只要我给它一个图像文件,我就会得到一个关于无效日期的异常。 Solr 单元格从 EXIF 中提取日期,然后似乎无法将其传递给 Solr。 我使用了以下图片文件:

http://www.imagemagick.org/Usage/photos/pagoda_sm.jpg

Solr 的响应是:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">114</int></lst><lst name="error"><lst name="metadata"><str name="error-class">org.apache.solr.common.SolrException</str><str name="root-error-class">org.apache.solr.common.SolrException</str></lst><str name="msg">Invalid Date String:'2005-07-09T14:05:15'</str><int name="code">400</int></lst>
</response>

它抱怨的日期被格式化为yyyy-MM-dd'T'HH:mm:ss,这应该是一个默认的日期格式:

https://cwiki.apache.org/confluence/display/solr/Uploading+Data+with+Solr+Cell+using+Apache+Tika

我正在寻找修复或至少是解决方法,因此它将跳过日期并仅索引 EXIF 中的其他信息。

【问题讨论】:

    标签: solr exif solr-cell


    【解决方案1】:

    在运行多年的生产环境中,我也遇到了一个非常相似的错误。我追踪到 SOLRs schema.xml 的变化。为动态日期字段添加了一个新的通配符字段:

    <dynamicField name="date_*" type="tdate" indexed="true" stored="true" multiValued="true"/>
    

    用于 exif 提取的 Tikas 库似乎尝试为与此动态字段定义匹配的 EXIF 日期字段创建字段。由于 EXIF 日期格式与TrieDateField 类中使用的 SOLR 默认日期格式 (ISO 8601) 不匹配,因此会出现解析错误。

    删除此通配符字段并切换到特定字段定义对我有用。在这种情况下,日期字段值没有被索引,但 EXIF 数据的其余部分被索引。

    导入这些日期格式的另一种方法是实现Filter,使用正则表达式检查输入日期并将结果转换为正确的格式。

    也许您的问题有些相关,或者它有助于其他人调试类似问题。

    【讨论】:

    • 在您发布的教程中,我还发现您可以配置requestHandler 以定义几种支持的日期格式。这对我来说似乎是最好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2011-09-16
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2019-03-11
    • 2023-03-09
    相关资源
    最近更新 更多