@Override public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { final int base = context.docBase; final NumericDocValues values = DocValues.getNumeric(context.reader(), "sort_i"); return new LeafCollector() { @Override public void setScorer(Scorer scorer) throws IOException {} public boolean acceptsDocsOutOfOrder() { return false; } public void collect(int doc) { list.add(new ScoreDoc(doc + base, (float) values.get(doc))); } }; }
@Override public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException { final NumericDocValues arr = DocValues.getNumeric(readerContext.reader(), field); final Bits valid = DocValues.getDocsWithField(readerContext.reader(), field); return new LongDocValues(this) { @Override public long longVal(int doc) { return arr.get(doc); } @Override public boolean exists(int doc) { return valid.get(doc); } @Override public Object objectVal(int doc) { return exists(doc) ? longToObject(arr.get(doc)) : null; } @Override public String strVal(int doc) { return exists(doc) ? longToString(arr.get(doc)) : null; } @Override public ValueFiller getValueFiller() { return new ValueFiller() { private final MutableValueDate mval = new MutableValueDate(); @Override public MutableValue getValue() { return mval; } @Override public void fillValue(int doc) { mval.value = arr.get(doc); mval.exists = exists(doc); } }; } }; }
public void setNextReader(LeafReaderContext context) throws IOException { this.vals = DocValues.getNumeric(context.reader(), this.field); }