我试图使用Solr做以下查询:Solr的查询语法问题
time:90000 OR (-time:[1521 TO *] AND -(time:[* TO 1519] OR time:[1521 TO *]))
返回结果只有一个与标签time=90000
,但我有两个项目与标签time
与价值90000
和1520
。我希望他们两个。
任何人都可以给我一些解释吗?提前致谢。
我试图使用Solr做以下查询:Solr的查询语法问题
time:90000 OR (-time:[1521 TO *] AND -(time:[* TO 1519] OR time:[1521 TO *]))
返回结果只有一个与标签time=90000
,但我有两个项目与标签time
与价值90000
和1520
。我希望他们两个。
任何人都可以给我一些解释吗?提前致谢。
我找到了解决办法:当我执行负查询,我必须写:
*:* -<query>
对于我的问题,解决的办法是:
time:90000 OR (time:* -time:[1521 TO *] AND (time:* -(time:[* TO 1519] OR time:[1521 TO *])))
我想这是因为负查询只在顶层允许的。见http://wiki.apache.org/solr/SolrQuerySyntax
Pure negative queries (all clauses prohibited) are allowed.
尝试将那些消极的查询,并在这里发表您发现
如果我尝试执行: ' - (时间:1521 *] OR(时间:[* 1519]或时间:1521 *]))' 结果是“time = 1520”的项目 如果我试试这个: 'time:90000 OR - (time:[1521 TO *] OR(time:[* TO 1519] OR time:[1521 TO * ]))' 我没有结果... – Lorenzo
你能试试这也是时间:90000或( - (时间:1521 *] OR(时间:[* 1519]或时间:1521 *] )):)。请用* –
Himanshu
代替在查询中也包含debugQuery = ON。请参阅http://wiki.apache.org/solr/CommonQueryParameters#debugQuery –
Himanshu