在solr查询语法中删除过期记录

时间:2010-03-04 12:53:02

标签: lucene solr date-math

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

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

expirydate:[NOW/DAY TO *]

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

-expirydate:[* TO *]

这两个查询都可以自行完成。即第一个查询带回3条记录。第二个查询带回了921条记录。但是,当我将2个查询与 OR 组合在一起时,我得到0条记录:

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

任何想法我做错了什么?

由于

戴夫

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

  

-expired-date:[* TO TO NOW]

无论文档是否已过期日期,这都有效。