1
我想搜索[0, 10]
中的術語,術語來自存儲爲Integer的字段「CityId」。我寫的如下:如何在Lucene的某個範圍內搜索術語
String queryStr = "CityId : [0, 10]";
Query query = parser.parse(queryStr);
TopDocs topDocs = searcher.search(queryStr);
我想搜索[0, 10]
中的術語,術語來自存儲爲Integer的字段「CityId」。我寫的如下:如何在Lucene的某個範圍內搜索術語
String queryStr = "CityId : [0, 10]";
Query query = parser.parse(queryStr);
TopDocs topDocs = searcher.search(queryStr);
標準的QueryParser不支持數字範圍。 QueryParser支持的範圍查詢是Lexicographic而不是數字。您需要使用這個NumericRangeQuery:
Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true);
而且,可能是很好的參考QueryParser documentation什麼Lucene的查詢語法的模樣。範圍查詢的上下限不能用逗號分隔。它應該看起來像myField:[begin TO end]
(但是,這不會是數字範圍)。
什麼是你的querry的懺悔?如果你不想解析一個querry字符串,你可以像這樣構建一個NumericRangeQuery:NumericRangeQuery。 \t newIntRange(0,10,true,true) – TobiSH