Description
This pattern exists a lot w/ some minor fluxuations in copy/paste variation...
@Override public SortField getSortField(SchemaField field, boolean top) { field.checkSortability(); Object missingValue = null; boolean sortMissingLast = field.sortMissingLast(); boolean sortMissingFirst = field.sortMissingFirst(); if (sortMissingLast) { missingValue = top ? SOMECLASS.MIN_VALUE : SOMECLASS.MAX_VALUE; } else if (sortMissingFirst) { missingValue = top ? SOMECLASS.MAX_VALUE : SOMECLASS.MIN_VALUE; } SortField sf = new SortField(field.getName(), SortField.Type.SOMETYPE, top); sf.setMissingValue(missingValue); return sf; }
We should refactor it into a helper method along the lines of...
@Override public static SortField getSortField(SchemaField field, boolean top, SortField.Type sortType, Object missingLow, Object missingHigh) { field.checkSortability(); Object missingValue = null; boolean sortMissingLast = field.sortMissingLast(); boolean sortMissingFirst = field.sortMissingFirst(); if (sortMissingLast) { missingValue = top ? missingLow : missingHigh; } else if (sortMissingFirst) { missingValue = top ? missingHigh : missingLow; } SortField sf = new SortField(field.getName(), sortType, top); sf.setMissingValue(missingValue); return sf; }
So it can be re-used via...
@Override public SortField getSortField(SchemaField field, boolean top) { return getSortField(field, top, SortField.Type.SOMETIME, SOMECLASS.MIN_VALUE, SOMECLASS.MAX_VALUE); }
Attachments
Attachments
Issue Links
- incorporates
-
SOLR-11332 Sorting on "enum" based field types don't work if sortMissingLast=true or sortMissingFirst=true
-
- Closed
-