2012-03-05 22 views
1

對Lucene來說是新的我想找到某個字段在給定範圍內或完全不存在的文檔。這就是我想這兩個查詢的結果結合起來:Lucene查詢字段範圍或其缺席

q=something AND field:[lower TO upper] 
q=something AND -field:[* TO *] 

無論是查詢給了我希望的結果,但是當我試圖將兩者結合起來,我得到什麼:

q=something AND (field:[lower TO upper] OR -field:[* TO *]) 

something能是一個更復雜的查詢。實際上,我的查詢將是Java程序中的Solr查詢,以防它有所作爲。如何才能做到這一點?

+2

檢查 - http://stackoverflow.com/questions/1343794/searching-for-date-range-or-null-no-field- in-solr和http://stackoverflow.com/questions/634765/using-or-and-not-in-solr-query/ – Jayendra 2012-03-05 15:13:23

+0

非常感謝。確實有效。所以答案是'q = something AND NOT(-field:[lower to upper] AND field:[* TO *])'。現在我想知道這樣的查詢有多昂貴? – 2012-03-05 15:59:41

回答

0

這應該工作以及:

q=((+something -field:[* TO *]) OR (+something +field:[lower TO upper]))