Search 如何索引没有日期的日期&;apachesolr中的时间

Search 如何索引没有日期的日期&;apachesolr中的时间,search,indexing,solr,lucene,solrj,Search,Indexing,Solr,Lucene,Solrj,在我的数据库中,日期类似于1973-01。它们存储为字符串值。如果我必须使用ApacheSolr对此进行索引,那么我将如何做呢 我在schema.xml中编写了以下内容: 我还更改了所有日期,如1973-01Z。但我仍然得到一个错误: org.apache.solr.common.SolrException:日期数学字符串中的日期无效:'1973-01Z' 我相信Solr只接受像1995-12-31T23:59:59Z这样的日期 有人可以帮忙吗?在solrconfig.xml中,您可以在Par

在我的数据库中,日期类似于
1973-01
。它们存储为字符串值。如果我必须使用ApacheSolr对此进行索引,那么我将如何做呢

我在schema.xml中编写了以下内容:

我还更改了所有日期,如
1973-01Z
。但我仍然得到一个错误:

org.apache.solr.common.SolrException:日期数学字符串中的日期无效:'1973-01Z'

我相信Solr只接受像1995-12-31T23:59:59Z这样的日期


有人可以帮忙吗?

在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>

欧洲/柏林
yyyy-MM-dd'HH:MM:ss.SSSZ
yyyy-MM-dd'HH:MM:ssZ
yyyy MM dd HH:MM:ss Z
yyyy MM dd HH:MM:ss
yyyy MM dd HH:MM:ss'UTC
然后,您必须将updateRequestProcessorChain与更新请求处理程序连接起来

  <requestHandler name="/update" class="solr.UpdateRequestHandler">
    <lst name="defaults">
      <str name="update.chain">parse-field-types</str>
    </lst>
  </requestHandler>

解析字段类型

也许你可以在这里定义一种适合你的格式。

你也可以使用
string
type而不是
tdate
如果我这样做,那么我可以根据日期进行搜索或排序吗@赫克托科里亚