2016-04-09 33 views
1

我想搜索[0, 10]中的術語,術語來自存儲爲Integer的字段「CityId」。我寫的如下:如何在Lucene的某個範圍內搜索術語

String queryStr = "CityId : [0, 10]"; 
Query query = parser.parse(queryStr); 
TopDocs topDocs = searcher.search(queryStr); 
+0

什麼是你的querry的懺悔?如果你不想解析一個querry字符串,你可以像這樣構建一個NumericRangeQuery:NumericRangeQuery。 \t newIntRange(0,10,true,true) – TobiSH

回答

1

標準的QueryParser不支持數字範圍。 QueryParser支持的範圍查詢是Lexicographic而不是數字。您需要使用這個NumericRangeQuery

Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true); 

而且,可能是很好的參考QueryParser documentation什麼Lucene的查詢語法的模樣。範圍查詢的上下限不能用逗號分隔。它應該看起來像myField:[begin TO end](但是,這不會是數字範圍)。