summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java')
-rw-r--r--core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java30
1 files changed, 23 insertions, 7 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java b/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java
index f7db724c35..27f0aadee8 100644
--- a/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java
+++ b/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java
@@ -20,14 +20,15 @@
package org.elasticsearch.index.fielddata.ordinals;
import org.apache.lucene.index.DocValues;
-import org.apache.lucene.index.RandomAccessOrds;
-import org.apache.lucene.index.SortedDocValues;
+import org.apache.lucene.index.SortedSetDocValues;
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.RamUsageEstimator;
import org.apache.lucene.util.packed.PackedInts;
+import org.elasticsearch.index.fielddata.AbstractSortedDocValues;
+import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
@@ -57,16 +58,19 @@ public class SinglePackedOrdinals extends Ordinals {
}
@Override
- public RandomAccessOrds ordinals(ValuesHolder values) {
- return (RandomAccessOrds) DocValues.singleton(new Docs(this, values));
+ public SortedSetDocValues ordinals(ValuesHolder values) {
+ return (SortedSetDocValues) DocValues.singleton(new Docs(this, values));
}
- private static class Docs extends SortedDocValues {
+ private static class Docs extends AbstractSortedDocValues {
private final int maxOrd;
private final PackedInts.Reader reader;
private final ValuesHolder values;
+ private int currentDoc = -1;
+ private int currentOrd;
+
Docs(SinglePackedOrdinals parent, ValuesHolder values) {
this.maxOrd = parent.valueCount;
this.reader = parent.reader;
@@ -84,8 +88,20 @@ public class SinglePackedOrdinals extends Ordinals {
}
@Override
- public int getOrd(int docID) {
- return (int) (reader.get(docID) - 1);
+ public int ordValue() {
+ return currentOrd;
+ }
+
+ @Override
+ public boolean advanceExact(int docID) throws IOException {
+ currentDoc = docID;
+ currentOrd = (int) (reader.get(docID) - 1);
+ return currentOrd != -1;
+ }
+
+ @Override
+ public int docID() {
+ return currentDoc;
}
}
}