Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-6609

FieldCacheSource (or it's subclasses) should override getSortField

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 5.3, 6.0
    • Component/s: None
    • Labels:
      None
    • Lucene Fields:
      New

      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);
        }
      

      ?

        Attachments

          Activity

            People

            • Assignee:
              hossman Hoss Man
              Reporter:
              hossman Hoss Man
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: