我試圖使用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