Skip to content

Commit b9535e1

Browse files
committed
Small iter
1 parent 38f784a commit b9535e1

File tree

3 files changed

+23
-21
lines changed

3 files changed

+23
-21
lines changed

server/src/main/java/org/elasticsearch/index/mapper/DocumentParserContext.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void processArrayOffsets(DocumentParserContext context) throws IOExceptio
9898
}
9999

100100
@Override
101-
public ArrayOffsetContext getOffSetContext() {
101+
public FieldArrayContext getOffSetContext() {
102102
return in.getOffSetContext();
103103
}
104104

@@ -166,7 +166,7 @@ private enum Scope {
166166
private final SeqNoFieldMapper.SequenceIDFields seqID;
167167
private final Set<String> fieldsAppliedFromTemplates;
168168

169-
private ArrayOffsetContext arrayOffsetContext;
169+
private FieldArrayContext fieldArrayContext;
170170

171171
/**
172172
* Fields that are copied from values of other fields via copy_to.
@@ -488,16 +488,16 @@ public boolean isCopyToDestinationField(String name) {
488488
}
489489

490490
public void processArrayOffsets(DocumentParserContext context) throws IOException {
491-
if (arrayOffsetContext != null) {
492-
arrayOffsetContext.processArrayOffsets(context);
491+
if (fieldArrayContext != null) {
492+
fieldArrayContext.addToLuceneDocument(context);
493493
}
494494
}
495495

496-
public ArrayOffsetContext getOffSetContext() {
497-
if (arrayOffsetContext == null) {
498-
arrayOffsetContext = new ArrayOffsetContext();
496+
public FieldArrayContext getOffSetContext() {
497+
if (fieldArrayContext == null) {
498+
fieldArrayContext = new FieldArrayContext();
499499
}
500-
return arrayOffsetContext;
500+
return fieldArrayContext;
501501
}
502502

503503
private XContentParser.Token token;

server/src/main/java/org/elasticsearch/index/mapper/ArrayOffsetContext.java renamed to server/src/main/java/org/elasticsearch/index/mapper/FieldArrayContext.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import java.util.Map;
2121
import java.util.TreeMap;
2222

23-
public class ArrayOffsetContext {
23+
public class FieldArrayContext {
2424

2525
private final Map<String, Offsets> offsetsPerField = new HashMap<>();
2626

@@ -41,7 +41,7 @@ void maybeRecordEmptyArray(String field) {
4141
offsetsPerField.computeIfAbsent(field, k -> new Offsets());
4242
}
4343

44-
void processArrayOffsets(DocumentParserContext context) throws IOException {
44+
void addToLuceneDocument(DocumentParserContext context) throws IOException {
4545
for (var entry : offsetsPerField.entrySet()) {
4646
var fieldName = entry.getKey();
4747
var offset = entry.getValue();
@@ -70,11 +70,13 @@ void processArrayOffsets(DocumentParserContext context) throws IOException {
7070
}
7171
}
7272

73-
static class Offsets {
73+
private static class Offsets {
7474

75-
public int currentOffset;
76-
public final Map<String, List<Integer>> valueToOffsets = new TreeMap<>();
77-
public final List<Integer> nullValueOffsets = new ArrayList<>(2);
75+
int currentOffset;
76+
// Need to use TreeMap here, so that we maintain the order in which each value (with offset) gets inserted,
77+
// (which is in the same order was document gets parsed) so we store offsets in right order.
78+
final Map<String, List<Integer>> valueToOffsets = new TreeMap<>();
79+
final List<Integer> nullValueOffsets = new ArrayList<>(2);
7880

7981
}
8082

server/src/test/java/org/elasticsearch/index/mapper/ArrayOffsetContextTests.java renamed to server/src/test/java/org/elasticsearch/index/mapper/FieldArrayContextTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616

1717
import static org.elasticsearch.index.mapper.SortedSetWithOffsetsDocValuesSyntheticFieldLoaderLayer.parseOffsetArray;
1818

19-
public class ArrayOffsetContextTests extends ESTestCase {
19+
public class FieldArrayContextTests extends ESTestCase {
2020

2121
public void testOffsets() throws IOException {
22-
var context = new ArrayOffsetContext();
22+
var context = new FieldArrayContext();
2323
context.recordOffset("field", "a");
2424
context.recordOffset("field", "a");
2525
context.recordOffset("field", "b");
@@ -28,15 +28,15 @@ public void testOffsets() throws IOException {
2828
context.recordOffset("field", "b");
2929

3030
var parserContext = new TestDocumentParserContext();
31-
context.processArrayOffsets(parserContext);
31+
context.addToLuceneDocument(parserContext);
3232

3333
var binaryDocValues = parserContext.doc().getField("field");
3434
int[] offsetToOrd = parseOffsetArray(new ByteArrayStreamInput(binaryDocValues.binaryValue().bytes));
3535
assertArrayEquals(new int[] { 0, 0, 1, 2, 0, 1 }, offsetToOrd);
3636
}
3737

3838
public void testOffsetsWithNull() throws IOException {
39-
var context = new ArrayOffsetContext();
39+
var context = new FieldArrayContext();
4040
context.recordNull("field");
4141
context.recordOffset("field", "a");
4242
context.recordOffset("field", "b");
@@ -45,19 +45,19 @@ public void testOffsetsWithNull() throws IOException {
4545
context.recordOffset("field", "b");
4646

4747
var parserContext = new TestDocumentParserContext();
48-
context.processArrayOffsets(parserContext);
48+
context.addToLuceneDocument(parserContext);
4949

5050
var binaryDocValues = parserContext.doc().getField("field");
5151
int[] offsetToOrd = parseOffsetArray(new ByteArrayStreamInput(binaryDocValues.binaryValue().bytes));
5252
assertArrayEquals(new int[] { -1, 0, 1, 2, -1, 1 }, offsetToOrd);
5353
}
5454

5555
public void testEmptyOffset() throws IOException {
56-
var context = new ArrayOffsetContext();
56+
var context = new FieldArrayContext();
5757
context.maybeRecordEmptyArray("field");
5858

5959
var parserContext = new TestDocumentParserContext();
60-
context.processArrayOffsets(parserContext);
60+
context.addToLuceneDocument(parserContext);
6161

6262
var binaryDocValues = parserContext.doc().getField("field");
6363
int[] offsetToOrd = parseOffsetArray(new ByteArrayStreamInput(binaryDocValues.binaryValue().bytes));

0 commit comments

Comments
 (0)