2012-11-06 46 views
3

我试图使用Solr做以下查询:Solr的查询语法问题

time:90000 OR (-time:[1521 TO *] AND -(time:[* TO 1519] OR time:[1521 TO *])) 

返回结果只有一个与标签time=90000,但我有两个项目与标签time与价值900001520。我希望他们两个。

任何人都可以给我一些解释吗?提前致谢。

回答

1

我找到了解决办法:当我执行负查询,我必须写:

*:* -<query>

对于我的问题,解决的办法是:

time:90000 OR (time:* -time:[1521 TO *] AND (time:* -(time:[* TO 1519] OR time:[1521 TO *])))

0

我想这是因为负查询只在顶层允许的。见http://wiki.apache.org/solr/SolrQuerySyntax

Pure negative queries (all clauses prohibited) are allowed. 

尝试将那些消极的查询,并在这里发表您发现

+0

如果我尝试执行: ' - (时间:1521 *] OR(时间:[* 1519]或时间:1521 *]))' 结果是“time = 1520”的项目 如果我试试这个: 'time:90000 OR - (time:[1521 TO *] OR(time:[* TO 1519] OR time:[1521 TO * ]))' 我没有结果... – Lorenzo

+0

你能试试这也是时间:90000或( - (时间:1521 *] OR(时间:[* 1519]或时间:1521 *] )))。请用* – Himanshu

+0

代替在查询中也包含debugQuery = ON。请参阅http://wiki.apache.org/solr/CommonQueryParameters#debugQuery – Himanshu