Description
ValueSource defines the following method...
public SortField getSortField(boolean reverse) { return new ValueSourceSortField(reverse); }
...where ValueSourceSortField builds up a ValueSourceComparator containing a double[] based on the FunctionValues of the original ValueSource.
meanwhile, the abstract FieldCacheSource exists as a base implementation for classes like IntFieldSource and DoubleFieldSource which wrap a ValueSource around DocValues for the specified field.
But neither FieldCacheSource nor any of it's subclasses override the getSortField(boolean) method – so attempting to sort on something like an IntFieldSource winds up using a bunch of ram to build that double[] to give users a less accurate sort (because of casting) then if they just sorted directly on the field.
is there any good reason why FieldCacheSource subclases like IntFieldSource shouldn't all override getSortField with something like...
public SortField getSortField(boolean reverse) { return new SortField(field, Type.INT, reverse); }
?