Skip to content

Commit f116869

Browse files
thecoopjimczi
authored andcommitted
Select a different reader to use for merges
1 parent 7e6b988 commit f116869

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

server/src/main/java/org/elasticsearch/index/codec/vectors/es818/DirectIOLucene99FlatVectorsFormat.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.lucene.codecs.hnsw.FlatVectorsReader;
2424
import org.apache.lucene.codecs.hnsw.FlatVectorsScorer;
2525
import org.apache.lucene.codecs.hnsw.FlatVectorsWriter;
26+
import org.apache.lucene.codecs.lucene99.Lucene99FlatVectorsReader;
2627
import org.apache.lucene.codecs.lucene99.Lucene99FlatVectorsWriter;
2728
import org.apache.lucene.index.SegmentReadState;
2829
import org.apache.lucene.index.SegmentWriteState;
@@ -62,7 +63,9 @@ public FlatVectorsWriter fieldsWriter(SegmentWriteState state) throws IOExceptio
6263

6364
@Override
6465
public FlatVectorsReader fieldsReader(SegmentReadState state) throws IOException {
65-
return new DirectIOLucene99FlatVectorsReader(state, vectorsScorer);
66+
return new MergeReaderWrapper(
67+
new DirectIOLucene99FlatVectorsReader(state, vectorsScorer),
68+
new Lucene99FlatVectorsReader(state, vectorsScorer));
6669
}
6770

6871
@Override
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.index.codec.vectors.es818;
11+
12+
import org.apache.lucene.codecs.hnsw.FlatVectorsReader;
13+
import org.apache.lucene.index.ByteVectorValues;
14+
import org.apache.lucene.index.FloatVectorValues;
15+
import org.apache.lucene.util.Accountable;
16+
import org.apache.lucene.util.IOUtils;
17+
import org.apache.lucene.util.hnsw.RandomVectorScorer;
18+
19+
import java.io.IOException;
20+
import java.util.Collection;
21+
22+
class MergeReaderWrapper extends FlatVectorsReader {
23+
24+
private final FlatVectorsReader mainReader;
25+
private final FlatVectorsReader mergeReader;
26+
27+
protected MergeReaderWrapper(FlatVectorsReader mainReader, FlatVectorsReader mergeReader) {
28+
super(mainReader.getFlatVectorScorer());
29+
this.mainReader = mainReader;
30+
this.mergeReader = mergeReader;
31+
}
32+
33+
@Override
34+
public RandomVectorScorer getRandomVectorScorer(String field, float[] target) throws IOException {
35+
return mainReader.getRandomVectorScorer(field, target);
36+
}
37+
38+
@Override
39+
public RandomVectorScorer getRandomVectorScorer(String field, byte[] target) throws IOException {
40+
return mainReader.getRandomVectorScorer(field, target);
41+
}
42+
43+
@Override
44+
public void checkIntegrity() throws IOException {
45+
mainReader.checkIntegrity();
46+
}
47+
48+
@Override
49+
public FloatVectorValues getFloatVectorValues(String field) throws IOException {
50+
return mainReader.getFloatVectorValues(field);
51+
}
52+
53+
@Override
54+
public ByteVectorValues getByteVectorValues(String field) throws IOException {
55+
return mainReader.getByteVectorValues(field);
56+
}
57+
58+
@Override
59+
public FlatVectorsReader getMergeInstance() {
60+
return mergeReader;
61+
}
62+
63+
@Override
64+
public long ramBytesUsed() {
65+
return mainReader.ramBytesUsed();
66+
}
67+
68+
@Override
69+
public Collection<Accountable> getChildResources() {
70+
return mainReader.getChildResources();
71+
}
72+
73+
@Override
74+
public void close() throws IOException {
75+
IOUtils.close(mainReader, mergeReader);
76+
}
77+
}

0 commit comments

Comments
 (0)