}
@Override
public DocValues getValues(Map context, IndexReader reader) throws IOException {
final DocValues vals1 = source1.getValues(context, reader);
final DocValues vals2 = source2.getValues(context, reader);
return new DocValues() {
@Override
public byte byteVal(int doc) {
return (byte) doubleVal(doc);
}
@Override
public short shortVal(int doc) {
return (short) doubleVal(doc);
}
@Override
public float floatVal(int doc) {
return (float) doubleVal(doc);
}
@Override
public int intVal(int doc) {
return (int) doubleVal(doc);
}
@Override
public long longVal(int doc) {
return (long) doubleVal(doc);
}
@Override
public double doubleVal(int doc) {
return distance(doc, vals1, vals2);
}
@Override
public String strVal(int doc) {
return Double.toString(doubleVal(doc));
}
@Override
public String toString(int doc) {
StringBuilder sb = new StringBuilder();
sb.append(name()).append('(').append(power).append(',');
boolean firstTime = true;
sb.append(vals1.toString(doc)).append(',');
sb.append(vals2.toString(doc));
sb.append(')');
return sb.toString();
}
};
}