【问题标题】:How to index a date without day & time in Apache Solr如何在 Apache Solr 中索引没有日期和时间的日期
【发布时间】:2018-08-15 15:52:14
【问题描述】:

在我的数据库中,日期类似于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 这样的日期

谁能帮忙?

【问题讨论】:

  • 你也可以使用string类型而不是tdate
  • 如果我这样做了,我可以根据日期进行搜索或排序吗? @HectorCorrea

标签: search indexing solr lucene solrj


【解决方案1】:

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

也许您可以在此处定义适合您的格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2021-09-08
    • 2014-03-07
    • 1970-01-01
    • 2018-01-24
    • 2010-12-19
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多