tomglk commented on a change in pull request #123: URL: https://github.com/apache/solr/pull/123#discussion_r632064832
########## File path: solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java ########## @@ -146,5 +171,100 @@ public float getMaxScore(int upTo) throws IOException { return Float.POSITIVE_INFINITY; } } + + /** + * A FeatureScorer that reads the docValues for a field + */ + public class DocValuesFieldValueFeatureScorer extends FeatureWeight.FeatureScorer { + final LeafReaderContext context; + final DocIdSetIterator docValues; + final FieldType schemaFieldType; + DocValuesType docValuesType = DocValuesType.NONE; + + public DocValuesFieldValueFeatureScorer(final FeatureWeight weight, final LeafReaderContext context, + final DocIdSetIterator itr, final SchemaField schemaField) { + super(weight, itr); + this.context = context; + schemaFieldType = schemaField.getType(); + + try { + FieldInfo fieldInfo = context.reader().getFieldInfos().fieldInfo(field); + // if fieldInfo is null, just use NONE-Type. This causes no problems, because we won't call score() anyway + docValuesType = fieldInfo != null ? fieldInfo.getDocValuesType() : DocValuesType.NONE; + switch (docValuesType) { + case NUMERIC: + docValues = DocValues.getNumeric(context.reader(), field); + break; + case SORTED: + docValues = DocValues.getSorted(context.reader(), field); + break; + case BINARY: + case SORTED_NUMERIC: + case SORTED_SET: + case NONE: + default: + docValues = null; Review comment: The refactoring in ec4cbfb moves the determination of the docValuesType prior to the construction of the `DocValuesFieldValueFeatureScorer`. This way, `score()` only has to handle the two supported types and the long switch-cases could be removed. `docValues == null` would produce a NPE, but that case cannot happen. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org