The standard QueryParser does not support numeric ranges. The range queries supported by the QueryParser are Lexicographic, rather than numeric. You will need to use a NumericRangeQuery for this:
Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true);
Also, might be good to refer to the QueryParser documentation for what Lucene's query syntax looks like. Range queries upper and lower bounds are not separated by a comma. It should look like myField:[begin TO end]
(again, though, this will not be a numeric range).