【问题标题】:Remove Expired Records in solr query syntax删除 solr 查询语法中的过期记录
【发布时间】:2010-03-04 12:53:02
【问题描述】:

我在使用 solr 1.4 时遇到了 solr 查询语法问题(我认为)。我正在尝试从 solr 查询中排除过期记录。但是,如果该记录没有到期记录,我也想带回该记录。例如

要仅获取尚未过期的记录列表,我正在使用此查询:

expirydate:[NOW/DAY TO *]

然后我想得到一个没有有我可以使用的到期日期的记录列表

-expirydate:[* TO *]

这两个查询都是独立运行的。 IE。第一个查询带回 3 条记录。第二个查询带回 921 条记录。但是,当我将 2 个查询与 OR 组合在一起时,我得到 0 条记录:

expirydate:[NOW/DAY TO *] OR -expirydate:[* TO *]

任何想法我做错了什么?

谢谢

戴夫

【问题讨论】:

标签: lucene solr date-math


【解决方案1】:

这里不是 100% 确定,但我认为您不能以这种方式将 OR 与否定运算符结合起来。

尝试在每个文档中添加一个具有相同值的虚拟字段并尝试

enddate:[NOW/DAY TO *] OR (dummy:yes -enddate:[* TO *])

【讨论】:

  • Wicked.. 这完全有效。谢谢你。我已经有一个我可以使用的字段,它不会改变。 +1
  • 您认为这是 Solr 中的错误吗?还是我没有正确使用语法?
【解决方案2】:

我只需要解决这个问题,我开始实施批准的答案,但后来意识到我可以这样做:

-过期日期:[* 到现在]

无论文档是否设置了过期日期,这都有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多