我在使用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 *]
任何想法我做错了什么?
由于
戴夫
答案 0 :(得分:2)
这里不是100%肯定,但我认为你不能以这种方式将OR与否定运算符结合起来。
尝试在每个文档中添加具有相同值的虚拟字段,然后尝试
enddate:[NOW/DAY TO *] OR (dummy:yes -enddate:[* TO *])
答案 1 :(得分:1)
我只是要解决这个问题,我开始实施已批准的答案但后来意识到我可以这样做:
-expired-date:[* TO TO NOW]
无论文档是否已过期日期,这都有效。