在我的数据库中,日期类似于1973-01
。它们存储为字符串值。如果我必须使用Apache Solr对其进行索引,那么我该怎么做呢。
我在schema.xml中编写了以下内容:
<field name="pubdate" type="tdate" indexed="true" stored="true" multiValued="false" />
我还更改了1973-01Z
等所有日期。但我仍然收到错误:
org.apache.solr.common.SolrException: Invalid Date in Date Math String:'1973-01Z'
我相信Solr只接受1995-12-31T23:59:59Z
有人可以帮忙吗?
答案 0 :(得分:0)
在solrconfig.xml中,您可以在ParseDateFieldUpdateProcessorFactory的帮助下定义更新请求处理程序可以在updateRequestProcessorChain中处理的日期格式:
<updateRequestProcessorChain name="parse-field-types">
<processor class="solr.RemoveBlankFieldUpdateProcessorFactory"/>
<processor class="solr.ParseBooleanFieldUpdateProcessorFactory"/>
<processor class="solr.ParseLongFieldUpdateProcessorFactory"/>
<processor class="solr.ParseDoubleFieldUpdateProcessorFactory"/>
<processor class="solr.ParseDateFieldUpdateProcessorFactory">
<!-- A default time zone name or offset may optionally be specified for those
dates that don't include an explicit zone/offset.
-->
<str name="defaultTimeZone">Europe/Berlin</str>
<arr name="format">
<str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>
<str>yyyy-MM-dd'T'HH:mm:ssZ</str>
<str>yyyy-MM-dd HH:mm:ss Z</str>
<str>yyyy-MM-dd HH:mm:ss</str>
<str>yyyy-MM-dd HH:mm:ss 'UTC</str>
</arr>
</processor>
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
然后,您必须将updateRequestProcessorChain与更新请求处理程序
连接起来 <requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">parse-field-types</str>
</lst>
</requestHandler>
也许你可以在这里定义一种适合你的格式。