Skip to content

Commit 43c8806

Browse files
authored
Fix test testMultiKnnClauses (#93047)
The test uses random vectors, consequently it is possible that vector_1 values are much closer than vector_2 values. Increasing boost to ensure order.
1 parent 26c0a35 commit 43c8806

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

server/src/test/java/org/elasticsearch/action/search/KnnSearchSingleNodeTests.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,13 @@ public void testMultiKnnClauses() throws IOException {
186186
createIndex("index", indexSettings, builder);
187187

188188
for (int doc = 0; doc < 10; doc++) {
189-
client().prepareIndex("index").setSource("vector", randomVector(), "text", "hello world", "number", 1).get();
190-
client().prepareIndex("index").setSource("vector_2", randomVector(), "text", "hello world", "number", 2).get();
189+
client().prepareIndex("index").setSource("vector", randomVector(1.0f, 2.0f), "text", "hello world", "number", 1).get();
190+
client().prepareIndex("index").setSource("vector_2", randomVector(20f, 21f), "text", "hello world", "number", 2).get();
191191
client().prepareIndex("index").setSource("text", "goodnight world", "number", 3).get();
192192
}
193193
client().admin().indices().prepareRefresh("index").get();
194194

195-
float[] queryVector = randomVector();
195+
float[] queryVector = randomVector(20f, 21f);
196196
KnnSearchBuilder knnSearch = new KnnSearchBuilder("vector", queryVector, 5, 50).boost(5.0f);
197197
KnnSearchBuilder knnSearch2 = new KnnSearchBuilder("vector_2", queryVector, 5, 50).boost(10.0f);
198198
SearchResponse response = client().prepareSearch("index")
@@ -213,7 +213,7 @@ public void testMultiKnnClauses() throws IOException {
213213
assertThat(agg.getAvg(), equalTo(2.25));
214214
assertThat(agg.getSum(), equalTo(45.0));
215215

216-
// Because of the boost, vector_2 results should appear first
216+
// Because of the boost & vector distributions, vector_2 results should appear first
217217
assertNotNull(response.getHits().getAt(0).field("vector_2"));
218218
}
219219

@@ -372,4 +372,12 @@ private float[] randomVector() {
372372
}
373373
return vector;
374374
}
375+
376+
private float[] randomVector(float dimLower, float dimUpper) {
377+
float[] vector = new float[VECTOR_DIMENSION];
378+
for (int i = 0; i < vector.length; i++) {
379+
vector[i] = (float) randomDoubleBetween(dimLower, dimUpper, true);
380+
}
381+
return vector;
382+
}
375383
}

0 commit comments

Comments
 (0)