Skip to content

Commit 5bcac49

Browse files
committed
Fix merge
1 parent b763bcc commit 5bcac49

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.io.IOException;
3939

4040
import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.COSINE_MAGNITUDE_FIELD_SUFFIX;
41+
import static org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType.BYTE;
4142

4243
/**
4344
* A reader that supports reading doc-values from a Lucene segment in Block fashion.
@@ -540,9 +541,8 @@ public AllReader reader(LeafReaderContext context) throws IOException {
540541
.getNumericDocValues(fieldType.name() + COSINE_MAGNITUDE_FIELD_SUFFIX);
541542
return new FloatDenseVectorNormalizedValuesBlockReader(floatVectorValues, dimensions, magnitudeDocValues);
542543
}
543-
}
544-
return new FloatDenseVectorValuesBlockReader(floatVectorValues, dimensions);
545544
}
545+
return new FloatDenseVectorValuesBlockReader(floatVectorValues, dimensions);
546546
}
547547
case BYTE -> {
548548
ByteVectorValues byteVectorValues = context.reader().getByteVectorValues(fieldName);
@@ -657,7 +657,6 @@ protected void appendDoc(BlockLoader.FloatBuilder builder) throws IOException {
657657
@Override
658658
public String toString() {
659659
return "BlockDocValuesReader.FloatDenseVectorNormalizedValuesBlockReader";
660-
return "BlockDocValuesReader.FloatDenseVectorNormalizedValuesBlockReader";
661660
}
662661
}
663662

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/DenseVectorFieldTypeIT.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,14 @@ public void setup() throws IOException {
219219
default -> throw new IllegalArgumentException("Unexpected element type: " + elementType);
220220
}
221221
}
222-
if (similarity == DenseVectorFieldMapper.VectorSimilarity.DOT_PRODUCT || rarely()) {
222+
if ((elementType == ElementType.FLOAT) && (similarity == DenseVectorFieldMapper.VectorSimilarity.DOT_PRODUCT || rarely())) {
223223
// Normalize the vector
224224
float magnitude = DenseVector.getMagnitude(vector);
225-
switch (elementType) {
226-
case FLOAT -> vector.replaceAll(number -> number.floatValue() / magnitude);
227-
case BYTE -> vector.replaceAll(number -> (byte) (number.byteValue() / magnitude));
228-
}
225+
vector.replaceAll(number -> number.floatValue() / magnitude);
226+
}
227+
if (vector.stream().allMatch(v -> v.floatValue() == 0.0f)) {
228+
// Avoid zero vectors
229+
vector.set(randomIntBetween(0, numDims - 1), 1.0f);
229230
}
230231
docs[i] = prepareIndex("test").setId("" + i).setSource("id", String.valueOf(i), "vector", vector);
231232
indexedVectors.put(i, vector);

0 commit comments

Comments
 (0)