1

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

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

expirydate:[NOW/DAY TO *]

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

-expirydate:[* TO *]

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

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

任何想法我做错了什么?

谢谢

戴夫

4

2 回答 2

2

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

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

enddate:[NOW/DAY TO *] OR (dummy:yes -enddate:[* TO *])
于 2010-03-04T13:57:41.853 回答
1

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

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

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

于 2012-06-15T17:53:59.407 回答