|
26 | 26 | import org.apache.lucene.codecs.KnnVectorsWriter;
|
27 | 27 | import org.apache.lucene.index.FieldInfo;
|
28 | 28 | import org.apache.lucene.index.IndexFileNames;
|
29 |
| -import org.apache.lucene.index.MergeState; |
30 | 29 | import org.apache.lucene.index.RandomAccessVectorValuesProducer;
|
31 | 30 | import org.apache.lucene.index.SegmentWriteState;
|
32 | 31 | import org.apache.lucene.index.VectorSimilarityFunction;
|
@@ -114,79 +113,16 @@ public final class Lucene90HnswVectorsWriter extends KnnVectorsWriter {
|
114 | 113 | public void writeField(FieldInfo fieldInfo, KnnVectorsReader knnVectorsReader)
|
115 | 114 | throws IOException {
|
116 | 115 | long vectorDataOffset = vectorData.alignFilePointer(Float.BYTES);
|
117 |
| - |
118 | 116 | VectorValues vectors = knnVectorsReader.getVectorValues(fieldInfo.name);
|
119 |
| - // TODO - use a better data structure; a bitset? DocsWithFieldSet is p.p. in o.a.l.index |
120 |
| - int[] docIds = writeVectorData(vectorData, vectors); |
121 |
| - assert vectors.size() == docIds.length; |
122 |
| - |
123 |
| - long[] offsets = new long[docIds.length]; |
124 |
| - long vectorIndexOffset = vectorIndex.getFilePointer(); |
125 |
| - if (vectors instanceof RandomAccessVectorValuesProducer) { |
126 |
| - writeGraph( |
127 |
| - vectorIndex, |
128 |
| - (RandomAccessVectorValuesProducer) vectors, |
129 |
| - fieldInfo.getVectorSimilarityFunction(), |
130 |
| - vectorIndexOffset, |
131 |
| - offsets, |
132 |
| - maxConn, |
133 |
| - beamWidth); |
134 |
| - } else { |
135 |
| - throw new IllegalArgumentException( |
136 |
| - "Indexing an HNSW graph requires a random access vector values, got " + vectors); |
137 |
| - } |
138 |
| - |
139 |
| - long vectorDataLength = vectorData.getFilePointer() - vectorDataOffset; |
140 |
| - long vectorIndexLength = vectorIndex.getFilePointer() - vectorIndexOffset; |
141 |
| - writeMeta( |
142 |
| - fieldInfo, |
143 |
| - vectorDataOffset, |
144 |
| - vectorDataLength, |
145 |
| - vectorIndexOffset, |
146 |
| - vectorIndexLength, |
147 |
| - docIds); |
148 |
| - writeGraphOffsets(meta, offsets); |
149 |
| - } |
150 |
| - |
151 |
| - @Override |
152 |
| - public void merge(MergeState mergeState) throws IOException { |
153 |
| - for (int i = 0; i < mergeState.fieldInfos.length; i++) { |
154 |
| - KnnVectorsReader reader = mergeState.knnVectorsReaders[i]; |
155 |
| - assert reader != null || mergeState.fieldInfos[i].hasVectorValues() == false; |
156 |
| - if (reader != null) { |
157 |
| - reader.checkIntegrity(); |
158 |
| - } |
159 |
| - } |
160 |
| - |
161 |
| - for (FieldInfo fieldInfo : mergeState.mergeFieldInfos) { |
162 |
| - if (fieldInfo.hasVectorValues()) { |
163 |
| - if (mergeState.infoStream.isEnabled("VV")) { |
164 |
| - mergeState.infoStream.message("VV", "merging " + mergeState.segmentInfo); |
165 |
| - } |
166 |
| - mergeField(fieldInfo, mergeState); |
167 |
| - if (mergeState.infoStream.isEnabled("VV")) { |
168 |
| - mergeState.infoStream.message("VV", "merge done " + mergeState.segmentInfo); |
169 |
| - } |
170 |
| - } |
171 |
| - } |
172 |
| - finish(); |
173 |
| - } |
174 | 117 |
|
175 |
| - private void mergeField(FieldInfo fieldInfo, MergeState mergeState) throws IOException { |
176 |
| - if (mergeState.infoStream.isEnabled("VV")) { |
177 |
| - mergeState.infoStream.message("VV", "merging " + mergeState.segmentInfo); |
178 |
| - } |
179 |
| - |
180 |
| - long vectorDataOffset = vectorData.alignFilePointer(Float.BYTES); |
181 |
| - |
182 |
| - VectorValues vectors = MergedVectorValues.mergeVectorValues(fieldInfo, mergeState); |
183 | 118 | IndexOutput tempVectorData =
|
184 | 119 | segmentWriteState.directory.createTempOutput(
|
185 | 120 | vectorData.getName(), "temp", segmentWriteState.context);
|
186 | 121 | IndexInput vectorDataInput = null;
|
187 | 122 | boolean success = false;
|
188 | 123 | try {
|
189 |
| - // write the merged vector data to a temporary file |
| 124 | + // write the vector data to a temporary file |
| 125 | + // TODO - use a better data structure; a bitset? DocsWithFieldSet is p.p. in o.a.l.index |
190 | 126 | int[] docIds = writeVectorData(tempVectorData, vectors);
|
191 | 127 | CodecUtil.writeFooter(tempVectorData);
|
192 | 128 | IOUtils.close(tempVectorData);
|
@@ -235,10 +171,6 @@ private void mergeField(FieldInfo fieldInfo, MergeState mergeState) throws IOExc
|
235 | 171 | segmentWriteState.directory, tempVectorData.getName());
|
236 | 172 | }
|
237 | 173 | }
|
238 |
| - |
239 |
| - if (mergeState.infoStream.isEnabled("VV")) { |
240 |
| - mergeState.infoStream.message("VV", "merge done " + mergeState.segmentInfo); |
241 |
| - } |
242 | 174 | }
|
243 | 175 |
|
244 | 176 | /**
|
|
0 commit comments