2010-03-04 75 views
1

我有一个索尔查询语法问题(我认为)与索尔1.4。我试图从solr查询中排除过期的记录。但是,如果该记录没有过期记录,我还想重新记录该记录。例如。删除索引查询语法中的过期记录

只得到未过期我使用这个查询记录列表:

expirydate:[NOW/DAY TO *] 

然后我想到得到的记录列表,其有有效期我可以使用

-expirydate:[* TO *] 

这两个查询都可以自己工作。即第一个查询返回3条记录。第二个查询返回921条记录。然而,当我与 2个查询结合起来,我得到0记录:

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

任何想法我做错了吗?

感谢

戴夫

+0

重复:http://stackoverflow.com/questions/634765/using-or-and-not-in-solr-query – 2010-03-04 19:14:27

回答

2

没有100%地肯定在这里,但我不认为你可以合并或以这种方式否定运算符。

想尽文档中添加一个空场具有相同价值,并尝试

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

邪恶..完全有效。谢谢。我已经有了一个我可以使用的不会改变的领域。 +1 – CraftyFella 2010-03-04 14:40:37

+0

您认为这是Solr中的一个错误吗?或者我只是没有正确使用语法? – CraftyFella 2010-03-04 14:41:57

1

我必须解决这个问题,我走遍执行核定的答案,但后来意识到我可能只是这样做:

-expired日:[*到现在]

不管这工作,如果该文件已经过期的最新集合。