【问题标题】:Solr indexing: date field with (empty) no valueSolr索引:(空)无值的日期字段
【发布时间】:2026-01-28 20:30:01
【问题描述】:

我的 SOlr 架构中有以下字段定义

name="DvdReleaseDate"   type="date "  stored="true" required="false"

我的输入 xml 文件包含带有 DVDReleaseDate 的电影名称。因此,对于全新版本,此字段为空(又名 null) 现在,当我进行索引时,SOLR 正在抛出空值异常。

我的其他选择是什么?

基本上,我需要支持基于 DVDRelease 日期的查询,同时,空值是有效的用例。

根据反馈修改我的问题:

我在 solr 架构中有以下内容

field name="dvdReleaseDate" type="date" stored="true" required="false"

异常详情是

HTTP 错误 400 访问 solr 更新时出现问题。 原因:无效的日期字符串:''

Sep 8, 2011 9:14:22 AM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: Invalid Date String:''
   at org.apache.solr.schema.DateField.parseMath(DateField.java:165)

    at org.apache.solr.schema.TrieDateField.createField(TrieDateField.java:169)
    at org.apache.solr.schema.SchemaField.createField(SchemaField.java:98)
    at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:204)
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:277)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
    at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:147)
    at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:77)
    at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:55)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1360)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)

【问题讨论】:

  • 请发布异常和 DVDReleaseDate 字段定义。

标签: solr field


【解决方案1】:

添加不带 dvdReleaseDate 的文档时,不要在 XML 文档中包含该字段。 例如。而不是:

<add>
  <doc>
    <field name="id">123</field>
    <field name="dvdReleaseDate"></field>
  </doc>
</add>

做:

<add>
  <doc>
    <field name="id">123</field>
  </doc>
</add>

【讨论】:

  • 谢谢。这种变通方法有效。但是,SOLR 允许其他字段类型的空白/空字段值。不知道为什么对日期字段类型有这种限制。
  • 我有其他 SOLR 字段的空字段,即 movie_plot 被定义为字符串 & 有时我会在我的输入 xml 文件中找到一个字符串 & 有时是空的。对于空字符串字段,我的索引运行良好。这就是原因,我说它看起来像是一种解决方法。
  • @satya:字段中的空字符串值与文档中缺少字段不同。这就像关系数据库中的空值。
  • 在这两种情况下,即空和 Null 情况下,我的 XML 看起来像 SOLR 索引绘图正常,dvdReleaseDate 失败
  • @satya:不一样。 null == 缺少字段。其他任何东西都是实际值,即使对于字符串也是如此。