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).