summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java')
-rw-r--r--core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java55
1 files changed, 38 insertions, 17 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java b/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
index 293ddf430d..3eda112674 100644
--- a/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
+++ b/core/src/main/java/org/elasticsearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
@@ -20,22 +20,23 @@
package org.elasticsearch.index.fielddata.ordinals;
import org.apache.lucene.index.MultiDocValues.OrdinalMap;
-import org.apache.lucene.index.RandomAccessOrds;
+import org.apache.lucene.index.SortedSetDocValues;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LongValues;
-import org.elasticsearch.index.fielddata.AbstractRandomAccessOrds;
+
+import java.io.IOException;
/**
- * A {@link RandomAccessOrds} implementation that returns ordinals that are global.
+ * A {@link SortedSetDocValues} implementation that returns ordinals that are global.
*/
-public class GlobalOrdinalMapping extends AbstractRandomAccessOrds {
+public class GlobalOrdinalMapping extends SortedSetDocValues {
- private final RandomAccessOrds values;
+ private final SortedSetDocValues values;
private final OrdinalMap ordinalMap;
private final LongValues mapping;
- private final RandomAccessOrds[] bytesValues;
+ private final SortedSetDocValues[] bytesValues;
- GlobalOrdinalMapping(OrdinalMap ordinalMap, RandomAccessOrds[] bytesValues, int segmentIndex) {
+ GlobalOrdinalMapping(OrdinalMap ordinalMap, SortedSetDocValues[] bytesValues, int segmentIndex) {
super();
this.values = bytesValues[segmentIndex];
this.bytesValues = bytesValues;
@@ -53,25 +54,45 @@ public class GlobalOrdinalMapping extends AbstractRandomAccessOrds {
}
@Override
- public long ordAt(int index) {
- return getGlobalOrd(values.ordAt(index));
- }
-
- @Override
- public void doSetDocument(int docId) {
- values.setDocument(docId);
+ public boolean advanceExact(int target) throws IOException {
+ return values.advanceExact(target);
}
@Override
- public int cardinality() {
- return values.cardinality();
+ public long nextOrd() throws IOException {
+ long segmentOrd = values.nextOrd();
+ if (segmentOrd == SortedSetDocValues.NO_MORE_ORDS) {
+ return SortedSetDocValues.NO_MORE_ORDS;
+ } else {
+ return getGlobalOrd(segmentOrd);
+ }
}
@Override
- public BytesRef lookupOrd(long globalOrd) {
+ public BytesRef lookupOrd(long globalOrd) throws IOException {
final long segmentOrd = ordinalMap.getFirstSegmentOrd(globalOrd);
int readerIndex = ordinalMap.getFirstSegmentNumber(globalOrd);
return bytesValues[readerIndex].lookupOrd(segmentOrd);
}
+ @Override
+ public int docID() {
+ return values.docID();
+ }
+
+ @Override
+ public int nextDoc() throws IOException {
+ return values.nextDoc();
+ }
+
+ @Override
+ public int advance(int target) throws IOException {
+ return values.advance(target);
+ }
+
+ @Override
+ public long cost() {
+ return values.cost();
+ }
+
}