Remove getValues from numeric and string field data & clean up geo field data

This commit is contained in:
Simon Willnauer 2013-03-28 21:38:11 +01:00
parent 7f81469137
commit 5aedf74fb0
17 changed files with 90 additions and 1071 deletions

View File

@ -44,8 +44,6 @@ public interface DoubleValues {
double getValueMissing(int docId, double missingValue);
DoubleArrayRef getValues(int docId);
Iter getIter(int docId);
void forEachValueInDoc(int docId, ValueInDocProc proc);
@ -123,11 +121,6 @@ public interface DoubleValues {
return missingValue;
}
@Override
public DoubleArrayRef getValues(int docId) {
return DoubleArrayRef.EMPTY;
}
@Override
public Iter getIter(int docId) {
return Iter.Empty.INSTANCE;
@ -142,7 +135,6 @@ public interface DoubleValues {
public static class LongBased implements DoubleValues {
private final LongValues values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValueIter iter = new ValueIter();
private final Proc proc = new Proc();
@ -173,20 +165,6 @@ public interface DoubleValues {
return getValue(docId);
}
@Override
public DoubleArrayRef getValues(int docId) {
LongArrayRef arrayRef = values.getValues(docId);
int size = arrayRef.size();
if (size == 0) {
return DoubleArrayRef.EMPTY;
}
arrayScratch.reset(size);
for (int i = arrayRef.start; i < arrayRef.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) arrayRef.values[i];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return this.iter.reset(values.getIter(docId));
@ -263,10 +241,6 @@ public interface DoubleValues {
return delegate.getValueMissing(docId, missingValue);
}
public DoubleArrayRef getValues(int docId) {
return delegate.getValues(docId);
}
public Iter getIter(int docId) {
return delegate.getIter(docId);
}

View File

@ -43,38 +43,10 @@ public interface GeoPointValues {
GeoPoint getValueSafe(int docId);
GeoPointArrayRef getValues(int docId);
Iter getIter(int docId);
Iter getIterSafe(int docId);
/**
* Go over all the possible values in their geo point format for a specific doc.
*/
void forEachValueInDoc(int docId, ValueInDocProc proc);
/**
* Go over all the possible values in their geo point format for a specific doc.
*/
void forEachSafeValueInDoc(int docId, ValueInDocProc proc);
public static interface ValueInDocProc {
void onValue(int docId, GeoPoint value);
void onMissing(int docId);
}
/**
* Go over all the possible values in their geo point format for a specific doc.
*/
void forEachLatLonValueInDoc(int docId, LatLonValueInDocProc proc);
public static interface LatLonValueInDocProc {
void onValue(int docId, double lat, double lon);
void onMissing(int docId);
}
static interface Iter {
@ -143,34 +115,15 @@ public interface GeoPointValues {
return getIter(docId);
}
@Override
public void forEachSafeValueInDoc(int docId, ValueInDocProc proc) {
}
@Override
public void forEachLatLonValueInDoc(int docId, LatLonValueInDocProc proc) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public GeoPoint getValue(int docId) {
throw new ElasticSearchIllegalStateException("Can't retrieve a value from an empty GeoPointValues");
}
@Override
public GeoPointArrayRef getValues(int docId) {
return GeoPointArrayRef.EMPTY;
}
@Override
public Iter getIter(int docId) {
return Iter.Empty.INSTANCE;
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
proc.onMissing(docId);
}
}
}

View File

@ -20,7 +20,6 @@
package org.elasticsearch.index.fielddata;
import org.elasticsearch.ElasticSearchIllegalStateException;
import org.elasticsearch.index.fielddata.util.IntArrayRef;
import org.elasticsearch.index.fielddata.util.LongArrayRef;
/**
@ -43,8 +42,6 @@ public interface LongValues {
long getValueMissing(int docId, long missingValue);
LongArrayRef getValues(int docId);
Iter getIter(int docId);
void forEachValueInDoc(int docId, ValueInDocProc proc);
@ -123,11 +120,6 @@ public interface LongValues {
return missingValue;
}
@Override
public LongArrayRef getValues(int docId) {
return LongArrayRef.EMPTY;
}
@Override
public Iter getIter(int docId) {
return Iter.Empty.INSTANCE;
@ -163,10 +155,6 @@ public interface LongValues {
return delegate.getValueMissing(docId, missingValue);
}
public LongArrayRef getValues(int docId) {
return delegate.getValues(docId);
}
public Iter getIter(int docId) {
return delegate.getIter(docId);
}

View File

@ -73,9 +73,6 @@ public interface ScriptDocValues {
return values.getValue(docId);
}
public StringArrayRef getValues() {
return values.getValues(docId);
}
}
@ -109,11 +106,7 @@ public interface ScriptDocValues {
return date;
}
public LongArrayRef getValues() {
return values.getValues(docId);
}
}
static class NumericDouble implements ScriptDocValues {
private final DoubleValues values;
@ -136,10 +129,6 @@ public interface ScriptDocValues {
public double getValue() {
return values.getValue(docId);
}
public DoubleArrayRef getValues() {
return values.getValues(docId);
}
}
static class GeoPoints implements ScriptDocValues {
@ -165,10 +154,6 @@ public interface ScriptDocValues {
return values.getValue(docId);
}
public GeoPointArrayRef getValues() {
return values.getValues(docId);
}
public double factorDistance(double lat, double lon) {
GeoPoint point = getValue();
return GeoDistance.FACTOR.calculate(point.lat(), point.lon(), lat, lon, DistanceUnit.MILES);

View File

@ -48,8 +48,6 @@ public interface StringValues {
String getValue(int docId);
StringArrayRef getValues(int docId);
Iter getIter(int docId);
/**
@ -126,11 +124,6 @@ public interface StringValues {
return null;
}
@Override
public StringArrayRef getValues(int docId) {
return StringArrayRef.EMPTY;
}
@Override
public Iter getIter(int docId) {
return Iter.Empty.INSTANCE;
@ -172,19 +165,6 @@ public interface StringValues {
return Double.toString(values.getValue(docId));
}
@Override
public StringArrayRef getValues(int docId) {
DoubleArrayRef arrayRef = values.getValues(docId);
int size = arrayRef.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = arrayRef.start; i < arrayRef.end; i++) {
arrayScratch.values[arrayScratch.end++] = Double.toString(arrayRef.values[i]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return valuesIter.reset(values.getIter(docId));
@ -266,18 +246,6 @@ public interface StringValues {
return Long.toString(values.getValue(docId));
}
@Override
public StringArrayRef getValues(int docId) {
LongArrayRef arrayRef = values.getValues(docId);
int size = arrayRef.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = arrayRef.start; i < arrayRef.end; i++) {
arrayScratch.values[arrayScratch.end++] = Long.toString(arrayRef.values[i]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
@ -391,15 +359,6 @@ public interface StringValues {
return iter.reset(this.ordinals.getIter(docId));
}
@Override
public StringArrayRef getValues(int docId) {
assert !isMultiValued();
int ord = ordinals.getOrd(docId);
if (ord == 0) return StringArrayRef.EMPTY;
arrayScratch.values[0] = getValueByOrd(ord);
return arrayScratch;
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
assert !isMultiValued();
@ -445,20 +404,6 @@ public interface StringValues {
super(delegate);
}
@Override
public StringArrayRef getValues(int docId) {
assert isMultiValued();
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = getValueByOrd(ords.get(i));
}
return arrayScratch;
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
assert isMultiValued();

View File

@ -145,7 +145,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
private final byte[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(byte[] values, Ordinals.Docs ordinals) {
@ -179,19 +178,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (long) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -244,8 +230,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
private final byte[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(byte[] values, Ordinals.Docs ordinals) {
@ -279,19 +263,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -404,7 +375,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
private final byte[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(byte[] values, FixedBitSet set) {
@ -436,16 +406,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -469,8 +429,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
private final byte[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(byte[] values, FixedBitSet set) {
@ -502,16 +460,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -593,8 +541,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
static class LongValues implements org.elasticsearch.index.fielddata.LongValues {
private final byte[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(byte[] values) {
@ -621,12 +567,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
return (long) values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((long) values[docId]);
@ -641,8 +581,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
static class DoubleValues implements org.elasticsearch.index.fielddata.DoubleValues {
private final byte[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(byte[] values) {
@ -669,11 +607,6 @@ public abstract class ByteArrayAtomicFieldData extends AtomicNumericFieldData {
return (double) values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {

View File

@ -157,7 +157,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final Ordinals.Docs ordinals;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final ValuesIter valuesIter;
StringValues(double[] values, Ordinals.Docs ordinals) {
@ -185,19 +184,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
return Double.toString(values[ord]);
}
@Override
public StringArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = Double.toString(values[ords.values[i]]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return valuesIter.reset(ordinals.getIter(docId));
@ -250,8 +236,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(double[] values, Ordinals.Docs ordinals) {
@ -285,19 +269,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (long) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -350,8 +321,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(double[] values, Ordinals.Docs ordinals) {
@ -385,19 +354,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -508,7 +464,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(double[] values, FixedBitSet set) {
@ -540,16 +495,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -572,7 +517,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(double[] values, FixedBitSet set) {
@ -604,16 +548,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -690,7 +624,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final Iter.Single iter = new Iter.Single();
StringValues(double[] values) {
@ -712,12 +645,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
return Double.toString(values[docId]);
}
@Override
public StringArrayRef getValues(int docId) {
arrayScratch.values[0] = Double.toString(values[docId]);
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(Double.toString(values[docId]));
@ -733,7 +660,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(double[] values) {
@ -760,12 +686,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
return (long) values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((long) values[docId]);
@ -781,7 +701,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
private final double[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(double[] values) {
@ -808,12 +727,6 @@ public abstract class DoubleArrayAtomicFieldData extends AtomicNumericFieldData
return values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(values[docId]);

View File

@ -150,8 +150,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
private final float[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(float[] values, Ordinals.Docs ordinals) {
@ -185,19 +183,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (long) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -250,8 +235,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
private final float[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(float[] values, Ordinals.Docs ordinals) {
@ -285,19 +268,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -408,8 +378,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
private final float[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(float[] values, FixedBitSet set) {
@ -441,16 +409,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -474,8 +432,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
private final float[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(float[] values, FixedBitSet set) {
@ -507,16 +463,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -598,8 +544,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
static class LongValues implements org.elasticsearch.index.fielddata.LongValues {
private final float[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(float[] values) {
@ -626,12 +570,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
return (long) values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((long) values[docId]);
@ -646,8 +584,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
static class DoubleValues implements org.elasticsearch.index.fielddata.DoubleValues {
private final float[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(float[] values) {
@ -674,12 +610,6 @@ public abstract class FloatArrayAtomicFieldData extends AtomicNumericFieldData {
return (double) values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((double) values[docId]);

View File

@ -150,8 +150,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final double[] lon;
private final double[] lat;
private final Ordinals.Docs ordinals;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final ValuesIter valuesIter;
StringValues(double[] lon, double[] lat, Ordinals.Docs ordinals) {
@ -180,20 +178,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return GeoHashUtils.encode(lat[ord], lon[ord]);
}
@Override
public StringArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
int ord = ords.values[i];
arrayScratch.values[arrayScratch.end++] = GeoHashUtils.encode(lat[ord], lon[ord]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return valuesIter.reset(ordinals.getIter(docId));
@ -251,7 +235,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final Ordinals.Docs ordinals;
private final GeoPoint scratch = new GeoPoint();
private final GeoPointArrayRef arrayScratch = new GeoPointArrayRef(new GeoPoint[1], 1);
private final ValuesIter valuesIter;
private final SafeValuesIter safeValuesIter;
@ -291,20 +274,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return new GeoPoint(lat[ord], lon[ord]);
}
@Override
public GeoPointArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return GeoPointArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
int ord = ords.values[i];
arrayScratch.values[arrayScratch.end++].reset(lat[ord], lon[ord]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return valuesIter.reset(ordinals.getIter(docId));
@ -315,44 +284,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return safeValuesIter.reset(ordinals.getIter(docId));
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
Ordinals.Docs.Iter iter = ordinals.getIter(docId);
int ord = iter.next();
if (ord == 0) {
proc.onMissing(docId);
return;
}
do {
proc.onValue(docId, scratch.reset(lat[ord], lon[ord]));
} while ((ord = iter.next()) != 0);
}
@Override
public void forEachSafeValueInDoc(int docId, ValueInDocProc proc) {
Ordinals.Docs.Iter iter = ordinals.getIter(docId);
int ord = iter.next();
if (ord == 0) {
proc.onMissing(docId);
return;
}
do {
proc.onValue(docId, new GeoPoint(lat[ord], lon[ord]));
} while ((ord = iter.next()) != 0);
}
@Override
public void forEachLatLonValueInDoc(int docId, LatLonValueInDocProc proc) {
Ordinals.Docs.Iter iter = ordinals.getIter(docId);
int ord = iter.next();
if (ord == 0) {
proc.onMissing(docId);
return;
}
do {
proc.onValue(docId, lat[ord], lon[ord]);
} while ((ord = iter.next()) != 0);
}
static class ValuesIter implements Iter {
@ -472,7 +403,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final double[] lat;
private final FixedBitSet set;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final Iter.Single iter = new Iter.Single();
StringValues(double[] lon, double[] lat, FixedBitSet set) {
@ -500,16 +430,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
}
}
@Override
public StringArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = GeoHashUtils.encode(lat[docId], lon[docId]);
return arrayScratch;
} else {
return StringArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -536,7 +456,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final FixedBitSet set;
private final GeoPoint scratch = new GeoPoint();
private final GeoPointArrayRef arrayScratch = new GeoPointArrayRef(new GeoPoint[1]);
private final Iter.Single iter = new Iter.Single();
GeoPointValues(double[] lon, double[] lat, FixedBitSet set) {
@ -573,16 +492,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
}
}
@Override
public GeoPointArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0].reset(lat[docId], lon[docId]);
return arrayScratch;
} else {
return GeoPointArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -600,33 +509,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return Iter.Empty.INSTANCE;
}
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
if (set.get(docId)) {
proc.onValue(docId, scratch.reset(lat[docId], lon[docId]));
} else {
proc.onMissing(docId);
}
}
@Override
public void forEachSafeValueInDoc(int docId, ValueInDocProc proc) {
if (set.get(docId)) {
proc.onValue(docId, new GeoPoint(lat[docId], lon[docId]));
} else {
proc.onMissing(docId);
}
}
@Override
public void forEachLatLonValueInDoc(int docId, LatLonValueInDocProc proc) {
if (set.get(docId)) {
proc.onValue(docId, lat[docId], lon[docId]);
} else {
proc.onMissing(docId);
}
}
}
}
@ -677,7 +559,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final double[] lon;
private final double[] lat;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final Iter.Single iter = new Iter.Single();
StringValues(double[] lon, double[] lat) {
@ -700,12 +581,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return GeoHashUtils.encode(lat[docId], lon[docId]);
}
@Override
public StringArrayRef getValues(int docId) {
arrayScratch.values[0] = GeoHashUtils.encode(lat[docId], lon[docId]);
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(GeoHashUtils.encode(lat[docId], lon[docId]));
@ -723,7 +598,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
private final double[] lat;
private final GeoPoint scratch = new GeoPoint();
private final GeoPointArrayRef arrayScratch = new GeoPointArrayRef(new GeoPoint[1]);
private final Iter.Single iter = new Iter.Single();
GeoPointValues(double[] lon, double[] lat) {
@ -751,12 +625,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
return new GeoPoint(lat[docId], lon[docId]);
}
@Override
public GeoPointArrayRef getValues(int docId) {
arrayScratch.values[0].reset(lat[docId], lon[docId]);
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(scratch.reset(lat[docId], lon[docId]));
@ -766,21 +634,6 @@ public abstract class GeoPointDoubleArrayAtomicFieldData extends AtomicGeoPointF
public Iter getIterSafe(int docId) {
return iter.reset(new GeoPoint(lat[docId], lon[docId]));
}
@Override
public void forEachValueInDoc(int docId, ValueInDocProc proc) {
proc.onValue(docId, scratch.reset(lat[docId], lon[docId]));
}
@Override
public void forEachSafeValueInDoc(int docId, ValueInDocProc proc) {
proc.onValue(docId, new GeoPoint(lat[docId], lon[docId]));
}
@Override
public void forEachLatLonValueInDoc(int docId, LatLonValueInDocProc proc) {
proc.onValue(docId, lat[docId], lon[docId]);
}
}
}
}

View File

@ -21,11 +21,13 @@ package org.elasticsearch.index.fielddata.plain;
import org.apache.lucene.util.FixedBitSet;
import org.elasticsearch.common.RamUsage;
import org.elasticsearch.index.fielddata.*;
import org.elasticsearch.index.fielddata.AtomicNumericFieldData;
import org.elasticsearch.index.fielddata.BytesValues;
import org.elasticsearch.index.fielddata.DoubleValues;
import org.elasticsearch.index.fielddata.LongValues;
import org.elasticsearch.index.fielddata.ScriptDocValues;
import org.elasticsearch.index.fielddata.StringValues;
import org.elasticsearch.index.fielddata.ordinals.Ordinals;
import org.elasticsearch.index.fielddata.util.DoubleArrayRef;
import org.elasticsearch.index.fielddata.util.IntArrayRef;
import org.elasticsearch.index.fielddata.util.LongArrayRef;
/**
*/
@ -150,8 +152,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
private final int[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(int[] values, Ordinals.Docs ordinals) {
@ -185,19 +185,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (long) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -250,8 +237,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
private final int[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(int[] values, Ordinals.Docs ordinals) {
@ -285,19 +270,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -407,8 +379,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
private final int[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(int[] values, FixedBitSet set) {
@ -440,16 +410,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -473,8 +433,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
private final int[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(int[] values, FixedBitSet set) {
@ -506,16 +464,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -595,8 +543,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
static class LongValues implements org.elasticsearch.index.fielddata.LongValues {
private final int[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(int[] values) {
@ -624,12 +570,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
return (long) values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((long) values[docId]);
@ -644,8 +584,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
static class DoubleValues implements org.elasticsearch.index.fielddata.DoubleValues {
private final int[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(int[] values) {
@ -672,12 +610,6 @@ public abstract class IntArrayAtomicFieldData extends AtomicNumericFieldData {
return (double) values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((double) values[docId]);

View File

@ -151,8 +151,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final Ordinals.Docs ordinals;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final ValuesIter valuesIter;
StringValues(long[] values, Ordinals.Docs ordinals) {
@ -180,19 +178,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
return Long.toString(values[ord]);
}
@Override
public StringArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return StringArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = Long.toString(values[ords.values[i]]);
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return valuesIter.reset(ordinals.getIter(docId));
@ -245,8 +230,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(long[] values, Ordinals.Docs ordinals) {
@ -280,19 +263,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -345,8 +315,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(long[] values, Ordinals.Docs ordinals) {
@ -380,19 +348,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -502,8 +457,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final FixedBitSet set;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final Iter.Single iter = new Iter.Single();
StringValues(long[] values, FixedBitSet set) {
@ -530,16 +483,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public StringArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = Long.toString(values[docId]);
return arrayScratch;
} else {
return StringArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -563,8 +506,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(long[] values, FixedBitSet set) {
@ -596,16 +537,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -629,8 +560,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
private final long[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(long[] values, FixedBitSet set) {
@ -662,16 +591,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -751,8 +670,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
static class StringValues implements org.elasticsearch.index.fielddata.StringValues {
private final long[] values;
private final StringArrayRef arrayScratch = new StringArrayRef(new String[1], 1);
private final Iter.Single iter = new Iter.Single();
StringValues(long[] values) {
@ -774,12 +691,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
return Long.toString(values[docId]);
}
@Override
public StringArrayRef getValues(int docId) {
arrayScratch.values[0] = Long.toString(values[docId]);
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(Long.toString(values[docId]));
@ -794,8 +705,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
static class LongValues implements org.elasticsearch.index.fielddata.LongValues {
private final long[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(long[] values) {
@ -822,12 +731,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
return values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(values[docId]);
@ -842,8 +745,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
static class DoubleValues implements org.elasticsearch.index.fielddata.DoubleValues {
private final long[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(long[] values) {
@ -870,12 +771,6 @@ public abstract class LongArrayAtomicFieldData extends AtomicNumericFieldData {
return (double) values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((double) values[docId]);

View File

@ -150,8 +150,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
private final short[] values;
private final Ordinals.Docs ordinals;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final ValuesIter iter;
LongValues(short[] values, Ordinals.Docs ordinals) {
@ -185,19 +183,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return LongArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (long) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -250,8 +235,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
private final short[] values;
private final Ordinals.Docs ordinals;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final ValuesIter iter;
DoubleValues(short[] values, Ordinals.Docs ordinals) {
@ -285,19 +268,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
IntArrayRef ords = ordinals.getOrds(docId);
int size = ords.size();
if (size == 0) return DoubleArrayRef.EMPTY;
arrayScratch.reset(size);
for (int i = ords.start; i < ords.end; i++) {
arrayScratch.values[arrayScratch.end++] = (double) values[ords.values[i]];
}
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset(ordinals.getIter(docId));
@ -407,8 +377,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
private final short[] values;
private final FixedBitSet set;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(short[] values, FixedBitSet set) {
@ -440,16 +408,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public LongArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
} else {
return LongArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -474,7 +432,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
private final short[] values;
private final FixedBitSet set;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(short[] values, FixedBitSet set) {
@ -506,16 +463,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
}
}
@Override
public DoubleArrayRef getValues(int docId) {
if (set.get(docId)) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
} else {
return DoubleArrayRef.EMPTY;
}
}
@Override
public Iter getIter(int docId) {
if (set.get(docId)) {
@ -597,8 +544,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
static class LongValues implements org.elasticsearch.index.fielddata.LongValues {
private final short[] values;
private final LongArrayRef arrayScratch = new LongArrayRef(new long[1], 1);
private final Iter.Single iter = new Iter.Single();
LongValues(short[] values) {
@ -625,12 +570,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
return (long) values[docId];
}
@Override
public LongArrayRef getValues(int docId) {
arrayScratch.values[0] = (long) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((long) values[docId]);
@ -645,8 +584,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
static class DoubleValues implements org.elasticsearch.index.fielddata.DoubleValues {
private final short[] values;
private final DoubleArrayRef arrayScratch = new DoubleArrayRef(new double[1], 1);
private final Iter.Single iter = new Iter.Single();
DoubleValues(short[] values) {
@ -673,12 +610,6 @@ public abstract class ShortArrayAtomicFieldData extends AtomicNumericFieldData {
return (double) values[docId];
}
@Override
public DoubleArrayRef getValues(int docId) {
arrayScratch.values[0] = (double) values[docId];
return arrayScratch;
}
@Override
public Iter getIter(int docId) {
return iter.reset((double) values[docId]);

View File

@ -19,17 +19,19 @@
package org.elasticsearch.search.facet.geodistance;
import java.io.IOException;
import org.apache.lucene.index.AtomicReaderContext;
import org.elasticsearch.common.geo.GeoDistance;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.fielddata.GeoPointValues;
import org.elasticsearch.index.fielddata.GeoPointValues.Iter;
import org.elasticsearch.index.fielddata.IndexGeoPointFieldData;
import org.elasticsearch.search.facet.FacetExecutor;
import org.elasticsearch.search.facet.InternalFacet;
import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
/**
*
*/
@ -57,7 +59,7 @@ public class GeoDistanceFacetExecutor extends FacetExecutor {
@Override
public Collector collector() {
return new Collector();
return new Collector(new Aggregator(fixedSourceDistance, entries));
}
@Override
@ -68,10 +70,10 @@ public class GeoDistanceFacetExecutor extends FacetExecutor {
class Collector extends FacetExecutor.Collector {
protected GeoPointValues values;
protected GeoPointValues.LatLonValueInDocProc aggregator;
protected final Aggregator aggregator;
Collector() {
this.aggregator = new Aggregator(fixedSourceDistance, entries);
Collector(Aggregator aggregator) {
this.aggregator = aggregator;
}
@Override
@ -84,7 +86,7 @@ public class GeoDistanceFacetExecutor extends FacetExecutor {
for (GeoDistanceFacet.Entry entry : entries) {
entry.foundInDoc = false;
}
values.forEachLatLonValueInDoc(doc, aggregator);
this.aggregator.onDoc(doc, values);
}
@Override
@ -92,41 +94,45 @@ public class GeoDistanceFacetExecutor extends FacetExecutor {
}
}
public static class Aggregator implements GeoPointValues.LatLonValueInDocProc {
public static class Aggregator {
private final GeoDistance.FixedSourceDistance fixedSourceDistance;
protected final GeoDistance.FixedSourceDistance fixedSourceDistance;
private final GeoDistanceFacet.Entry[] entries;
protected final GeoDistanceFacet.Entry[] entries;
public Aggregator(GeoDistance.FixedSourceDistance fixedSourceDistance, GeoDistanceFacet.Entry[] entries) {
this.fixedSourceDistance = fixedSourceDistance;
this.entries = entries;
}
@Override
public void onMissing(int docId) {
}
@Override
public void onValue(int docId, double lat, double lon) {
double distance = fixedSourceDistance.calculate(lat, lon);
for (GeoDistanceFacet.Entry entry : entries) {
if (entry.foundInDoc) {
continue;
}
if (distance >= entry.getFrom() && distance < entry.getTo()) {
entry.foundInDoc = true;
entry.count++;
entry.totalCount++;
entry.total += distance;
if (distance < entry.min) {
entry.min = distance;
public void onDoc(int docId, GeoPointValues values) {
final Iter iter = values.getIter(docId);
while(iter.hasNext()) {
final GeoPoint next = iter.next();
double distance = fixedSourceDistance.calculate(next.getLat(), next.getLon());
for (GeoDistanceFacet.Entry entry : entries) {
if (entry.foundInDoc) {
continue;
}
if (distance > entry.max) {
entry.max = distance;
if (distance >= entry.getFrom() && distance < entry.getTo()) {
entry.foundInDoc = true;
collectGeoPoint(entry, docId, distance);
}
}
}
}
protected void collectGeoPoint(GeoDistanceFacet.Entry entry, int docId, double distance) {
entry.count++;
entry.totalCount++;
entry.total += distance;
if (distance < entry.min) {
entry.min = distance;
}
if (distance > entry.max) {
entry.max = distance;
}
}
}
}

View File

@ -19,18 +19,17 @@
package org.elasticsearch.search.facet.geodistance;
import java.io.IOException;
import java.util.Map;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.search.Scorer;
import org.elasticsearch.common.geo.GeoDistance;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.fielddata.GeoPointValues;
import org.elasticsearch.index.fielddata.IndexGeoPointFieldData;
import org.elasticsearch.script.SearchScript;
import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
import java.util.Map;
/**
*
*/
@ -47,16 +46,17 @@ public class ScriptGeoDistanceFacetExecutor extends GeoDistanceFacetExecutor {
@Override
public Collector collector() {
return new Collector();
return new Collector(new ScriptAggregator(fixedSourceDistance, entries, script));
}
class Collector extends GeoDistanceFacetExecutor.Collector {
private Aggregator scriptAggregator;
Collector() {
this.aggregator = new Aggregator(fixedSourceDistance, entries);
this.scriptAggregator = (Aggregator) this.aggregator;
private ScriptAggregator scriptAggregator;
Collector(ScriptAggregator aggregator) {
super(aggregator);
this.scriptAggregator = aggregator;
}
@Override
@ -73,48 +73,32 @@ public class ScriptGeoDistanceFacetExecutor extends GeoDistanceFacetExecutor {
@Override
public void collect(int doc) throws IOException {
script.setNextDocId(doc);
this.scriptAggregator.scriptValue = script.runAsDouble();
scriptAggregator.scriptValue = script.runAsDouble();
super.collect(doc);
}
}
public static class Aggregator implements GeoPointValues.LatLonValueInDocProc {
public final static class ScriptAggregator extends GeoDistanceFacetExecutor.Aggregator{
private final GeoDistance.FixedSourceDistance fixedSourceDistance;
private double scriptValue;
private final GeoDistanceFacet.Entry[] entries;
double scriptValue;
public Aggregator(GeoDistance.FixedSourceDistance fixedSourceDistance, GeoDistanceFacet.Entry[] entries) {
this.fixedSourceDistance = fixedSourceDistance;
this.entries = entries;
public ScriptAggregator(GeoDistance.FixedSourceDistance fixedSourceDistance, GeoDistanceFacet.Entry[] entries, SearchScript script) {
super(fixedSourceDistance, entries);
}
@Override
public void onMissing(int docId) {
}
@Override
public void onValue(int docId, double lat, double lon) {
double distance = fixedSourceDistance.calculate(lat, lon);
for (GeoDistanceFacet.Entry entry : entries) {
if (entry.foundInDoc) {
continue;
}
if (distance >= entry.getFrom() && distance < entry.getTo()) {
entry.foundInDoc = true;
entry.count++;
entry.totalCount++;
entry.total += scriptValue;
if (scriptValue < entry.min) {
entry.min = scriptValue;
}
if (scriptValue > entry.max) {
entry.max = scriptValue;
}
}
protected void collectGeoPoint(GeoDistanceFacet.Entry entry, int docId, double distance) {
final double scriptValue = this.scriptValue;
entry.count++;
entry.totalCount++;
entry.total += scriptValue;
if (scriptValue < entry.min) {
entry.min = scriptValue;
}
if (scriptValue > entry.max) {
entry.max = scriptValue;
}
}
}
}

View File

@ -19,17 +19,16 @@
package org.elasticsearch.search.facet.geodistance;
import java.io.IOException;
import org.apache.lucene.index.AtomicReaderContext;
import org.elasticsearch.common.geo.GeoDistance;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.fielddata.DoubleValues;
import org.elasticsearch.index.fielddata.GeoPointValues;
import org.elasticsearch.index.fielddata.IndexGeoPointFieldData;
import org.elasticsearch.index.fielddata.IndexNumericFieldData;
import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
/**
*
*/
@ -45,13 +44,13 @@ public class ValueGeoDistanceFacetExecutor extends GeoDistanceFacetExecutor {
@Override
public Collector collector() {
return new Collector();
return new Collector(new Aggregator(fixedSourceDistance, entries));
}
class Collector extends GeoDistanceFacetExecutor.Collector {
Collector() {
this.aggregator = new Aggregator(fixedSourceDistance, entries);
Collector(Aggregator aggregator) {
super(aggregator);
}
@Override
@ -61,59 +60,32 @@ public class ValueGeoDistanceFacetExecutor extends GeoDistanceFacetExecutor {
}
}
public static class Aggregator implements GeoPointValues.LatLonValueInDocProc {
private final GeoDistance.FixedSourceDistance fixedSourceDistance;
private final GeoDistanceFacet.Entry[] entries;
public static class Aggregator extends GeoDistanceFacetExecutor.Aggregator {
DoubleValues valueValues;
final ValueAggregator valueAggregator = new ValueAggregator();
public Aggregator(GeoDistance.FixedSourceDistance fixedSourceDistance, GeoDistanceFacet.Entry[] entries) {
this.fixedSourceDistance = fixedSourceDistance;
this.entries = entries;
super(fixedSourceDistance, entries);
}
@Override
public void onMissing(int docId) {
}
@Override
public void onValue(int docId, double lat, double lon) {
double distance = fixedSourceDistance.calculate(lat, lon);
for (GeoDistanceFacet.Entry entry : entries) {
if (entry.foundInDoc) {
continue;
protected void collectGeoPoint(GeoDistanceFacet.Entry entry, int docId, double distance) {
entry.foundInDoc = true;
entry.count++;
DoubleValues.Iter iter = valueValues.getIter(docId);
while(iter.hasNext()) {
double value = iter.next();
entry.totalCount++;
entry.total += value;
if (value < entry.min) {
entry.min = value;
}
if (distance >= entry.getFrom() && distance < entry.getTo()) {
entry.foundInDoc = true;
entry.count++;
valueAggregator.entry = entry;
valueValues.forEachValueInDoc(docId, valueAggregator);
if (value > entry.max) {
entry.max = value;
}
}
}
}
public static class ValueAggregator implements DoubleValues.ValueInDocProc {
GeoDistanceFacet.Entry entry;
@Override
public void onMissing(int docId) {
}
@Override
public void onValue(int docId, double value) {
entry.totalCount++;
entry.total += value;
if (value < entry.min) {
entry.min = value;
}
if (value > entry.max) {
entry.max = value;
}
}
}
}

View File

@ -64,18 +64,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(longValues.getValueMissing(1, -1), equalTo(1l));
assertThat(longValues.getValueMissing(2, -1), equalTo(3l));
LongArrayRef longArrayRef = longValues.getValues(0);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(2l));
longArrayRef = longValues.getValues(1);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(1l));
longArrayRef = longValues.getValues(2);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(3l));
LongValues.Iter longValuesIter = longValues.getIter(0);
assertThat(longValuesIter.hasNext(), equalTo(true));
assertThat(longValuesIter.next(), equalTo(2l));
@ -111,18 +99,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(doubleValues.getValueMissing(1, -1), equalTo(1d));
assertThat(doubleValues.getValueMissing(2, -1), equalTo(3d));
DoubleArrayRef doubleArrayRef = doubleValues.getValues(0);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(2d));
doubleArrayRef = doubleValues.getValues(1);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(1d));
doubleArrayRef = doubleValues.getValues(2);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(3d));
DoubleValues.Iter doubleValuesIter = doubleValues.getIter(0);
assertThat(doubleValuesIter.hasNext(), equalTo(true));
assertThat(doubleValuesIter.next(), equalTo(2d));
@ -183,17 +159,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(longValues.getValueMissing(1, -1), equalTo(-1l));
assertThat(longValues.getValueMissing(2, -1), equalTo(3l));
LongArrayRef longArrayRef = longValues.getValues(0);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(2l));
longArrayRef = longValues.getValues(1);
assertThat(longArrayRef.size(), equalTo(0));
longArrayRef = longValues.getValues(2);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(3l));
LongValues.Iter longValuesIter = longValues.getIter(0);
assertThat(longValuesIter.hasNext(), equalTo(true));
assertThat(longValuesIter.next(), equalTo(2l));
@ -226,17 +191,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(doubleValues.getValueMissing(1, -1), equalTo(-1d));
assertThat(doubleValues.getValueMissing(2, -1), equalTo(3d));
DoubleArrayRef doubleArrayRef = doubleValues.getValues(0);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(2d));
doubleArrayRef = doubleValues.getValues(1);
assertThat(doubleArrayRef.size(), equalTo(0));
doubleArrayRef = doubleValues.getValues(2);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(3d));
DoubleValues.Iter doubleValuesIter = doubleValues.getIter(0);
assertThat(doubleValuesIter.hasNext(), equalTo(true));
assertThat(doubleValuesIter.next(), equalTo(2d));
@ -324,19 +278,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(longValues.getValueMissing(1, -1), equalTo(1l));
assertThat(longValues.getValueMissing(2, -1), equalTo(3l));
LongArrayRef longArrayRef = longValues.getValues(0);
assertThat(longArrayRef.size(), equalTo(2));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(2l));
assertThat(longArrayRef.values[longArrayRef.start + 1], equalTo(4l));
longArrayRef = longValues.getValues(1);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(1l));
longArrayRef = longValues.getValues(2);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(3l));
LongValues.Iter longValuesIter = longValues.getIter(0);
assertThat(longValuesIter.hasNext(), equalTo(true));
assertThat(longValuesIter.next(), equalTo(2l));
@ -374,19 +315,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(doubleValues.getValueMissing(1, -1), equalTo(1d));
assertThat(doubleValues.getValueMissing(2, -1), equalTo(3d));
DoubleArrayRef doubleArrayRef = doubleValues.getValues(0);
assertThat(doubleArrayRef.size(), equalTo(2));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(2d));
assertThat(doubleArrayRef.values[doubleArrayRef.start + 1], equalTo(4d));
doubleArrayRef = doubleValues.getValues(1);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(1d));
doubleArrayRef = doubleValues.getValues(2);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(3d));
DoubleValues.Iter doubleValuesIter = doubleValues.getIter(0);
assertThat(doubleValuesIter.hasNext(), equalTo(true));
assertThat(doubleValuesIter.next(), equalTo(2d));
@ -432,18 +360,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(longValues.getValueMissing(1, -1), equalTo(-1l));
assertThat(longValues.getValueMissing(2, -1), equalTo(3l));
LongArrayRef longArrayRef = longValues.getValues(0);
assertThat(longArrayRef.size(), equalTo(2));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(2l));
assertThat(longArrayRef.values[longArrayRef.start + 1], equalTo(4l));
longArrayRef = longValues.getValues(1);
assertThat(longArrayRef.size(), equalTo(0));
longArrayRef = longValues.getValues(2);
assertThat(longArrayRef.size(), equalTo(1));
assertThat(longArrayRef.values[longArrayRef.start], equalTo(3l));
LongValues.Iter longValuesIter = longValues.getIter(0);
assertThat(longValuesIter.hasNext(), equalTo(true));
assertThat(longValuesIter.next(), equalTo(2l));
@ -478,18 +394,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(doubleValues.getValueMissing(1, -1), equalTo(-1d));
assertThat(doubleValues.getValueMissing(2, -1), equalTo(3d));
DoubleArrayRef doubleArrayRef = doubleValues.getValues(0);
assertThat(doubleArrayRef.size(), equalTo(2));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(2d));
assertThat(doubleArrayRef.values[doubleArrayRef.start + 1], equalTo(4d));
doubleArrayRef = doubleValues.getValues(1);
assertThat(doubleArrayRef.size(), equalTo(0));
doubleArrayRef = doubleValues.getValues(2);
assertThat(doubleArrayRef.size(), equalTo(1));
assertThat(doubleArrayRef.values[doubleArrayRef.start], equalTo(3d));
DoubleValues.Iter doubleValuesIter = doubleValues.getIter(0);
assertThat(doubleValuesIter.hasNext(), equalTo(true));
assertThat(doubleValuesIter.next(), equalTo(2d));
@ -532,15 +436,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(longValues.getValueMissing(1, -1), equalTo(-1l));
assertThat(longValues.getValueMissing(2, -1), equalTo(-1l));
LongArrayRef longArrayRef = longValues.getValues(0);
assertThat(longArrayRef.size(), equalTo(0));
longArrayRef = longValues.getValues(1);
assertThat(longArrayRef.size(), equalTo(0));
longArrayRef = longValues.getValues(2);
assertThat(longArrayRef.size(), equalTo(0));
LongValues.Iter longValuesIter = longValues.getIter(0);
assertThat(longValuesIter.hasNext(), equalTo(false));
@ -568,15 +463,6 @@ public abstract class NumericFieldDataTests extends StringFieldDataTests {
assertThat(doubleValues.getValueMissing(1, -1), equalTo(-1d));
assertThat(doubleValues.getValueMissing(2, -1), equalTo(-1d));
DoubleArrayRef doubleArrayRef = doubleValues.getValues(0);
assertThat(doubleArrayRef.size(), equalTo(0));
doubleArrayRef = doubleValues.getValues(1);
assertThat(doubleArrayRef.size(), equalTo(0));
doubleArrayRef = doubleValues.getValues(2);
assertThat(doubleArrayRef.size(), equalTo(0));
DoubleValues.Iter doubleValuesIter = doubleValues.getIter(0);
assertThat(doubleValuesIter.hasNext(), equalTo(false));

View File

@ -142,19 +142,6 @@ public abstract class StringFieldDataTests extends AbstractFieldDataTests {
assertThat(stringValues.getValue(1), equalTo(one()));
assertThat(stringValues.getValue(2), equalTo(three()));
StringArrayRef stringArrayRef;
stringArrayRef = stringValues.getValues(0);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(two()));
stringArrayRef = stringValues.getValues(1);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(one()));
stringArrayRef = stringValues.getValues(2);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(three()));
StringValues.Iter stringValuesIter = stringValues.getIter(0);
assertThat(stringValuesIter.hasNext(), equalTo(true));
assertThat(stringValuesIter.next(), equalTo(two()));
@ -283,18 +270,6 @@ public abstract class StringFieldDataTests extends AbstractFieldDataTests {
assertThat(stringValues.getValue(1), nullValue());
assertThat(stringValues.getValue(2), equalTo(three()));
StringArrayRef stringArrayRef;
stringArrayRef = stringValues.getValues(0);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(two()));
stringArrayRef = stringValues.getValues(1);
assertThat(stringArrayRef.size(), equalTo(0));
stringArrayRef = stringValues.getValues(2);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(three()));
StringValues.Iter stringValuesIter = stringValues.getIter(0);
assertThat(stringValuesIter.hasNext(), equalTo(true));
assertThat(stringValuesIter.next(), equalTo(two()));
@ -397,19 +372,6 @@ public abstract class StringFieldDataTests extends AbstractFieldDataTests {
assertThat(stringValues.getValue(1), equalTo(one()));
assertThat(stringValues.getValue(2), equalTo(three()));
StringArrayRef stringArrayRef;
stringArrayRef = stringValues.getValues(0);
assertThat(stringArrayRef.size(), equalTo(2));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(two()));
assertThat(stringArrayRef.values[stringArrayRef.start + 1], equalTo(four()));
stringArrayRef = stringValues.getValues(1);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(one()));
stringArrayRef = stringValues.getValues(2);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(three()));
StringValues.Iter stringValuesIter = stringValues.getIter(0);
assertThat(stringValuesIter.hasNext(), equalTo(true));
@ -535,19 +497,6 @@ public abstract class StringFieldDataTests extends AbstractFieldDataTests {
assertThat(stringValues.getValue(1), nullValue());
assertThat(stringValues.getValue(2), equalTo(three()));
StringArrayRef stringArrayRef;
stringArrayRef = stringValues.getValues(0);
assertThat(stringArrayRef.size(), equalTo(2));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(two()));
assertThat(stringArrayRef.values[stringArrayRef.start + 1], equalTo(four()));
stringArrayRef = stringValues.getValues(1);
assertThat(stringArrayRef.size(), equalTo(0));
stringArrayRef = stringValues.getValues(2);
assertThat(stringArrayRef.size(), equalTo(1));
assertThat(stringArrayRef.values[stringArrayRef.start], equalTo(three()));
StringValues.Iter stringValuesIter = stringValues.getIter(0);
assertThat(stringValuesIter.hasNext(), equalTo(true));
assertThat(stringValuesIter.next(), equalTo(two()));
@ -633,16 +582,6 @@ public abstract class StringFieldDataTests extends AbstractFieldDataTests {
assertThat(stringValues.getValue(1), nullValue());
assertThat(stringValues.getValue(2), nullValue());
StringArrayRef stringArrayRef;
stringArrayRef = stringValues.getValues(0);
assertThat(stringArrayRef.size(), equalTo(0));
stringArrayRef = stringValues.getValues(1);
assertThat(stringArrayRef.size(), equalTo(0));
stringArrayRef = stringValues.getValues(2);
assertThat(stringArrayRef.size(), equalTo(0));
StringValues.Iter stringValuesIter = stringValues.getIter(0);
assertThat(stringValuesIter.hasNext(), equalTo(false));