2012-11-06 84 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