2017-08-28 58 views
1

我刚安装了Solr6.6.0。在CentOS上,并使用提供的示例“sample_techproducts_configs”进行工作。我能够索引文件,但只要我给它一个图像文件,我就会收到关于无效日期的异常。 Solr细胞从EXIF中提取一个日期,然后似乎无法将其传递给Solr。 我用下面的图像文件:Solr Cell无法用EXIF索引图像文件

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

我在找af ix或者至少是解决方法,所以它会跳过日期并仅从EXIF索引其他信息。

回答

0

在运行多年的执行环境中,发生了一个非常类似的错误。我将其追踪到SOLRs schema.xml中的更改。动态日期字段添加了一个新的通配符域:

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

Tikas库的EXIF提取似乎试图创建这个充满活力的领域定义相匹配的EXIF日期字段的字段。由于EXIF的dateformat与TrieDateField类中使用的SOLR默认日期格式(ISO 8601)不匹配,因此会发生解析错误。

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

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

也许你的问题有点相关,或者它可以帮助别人调试类似的问题。

+0

在您发布的教程中,我还发现可以配置'requestHandler'来定义几种支持的日期格式的提示。这似乎是对我来说最好的方法。 – TurbuLenz