Skip to content

Commit 1dd6008

Browse files
committed
Add boosting support
1 parent 204efda commit 1dd6008

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/querydsl/query/KnnQuery.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Map;
1818
import java.util.Objects;
1919

20+
import static org.elasticsearch.index.query.AbstractQueryBuilder.BOOST_FIELD;
2021
import static org.elasticsearch.search.vectors.KnnVectorQueryBuilder.K_FIELD;
2122
import static org.elasticsearch.search.vectors.KnnVectorQueryBuilder.NUM_CANDS_FIELD;
2223
import static org.elasticsearch.search.vectors.KnnVectorQueryBuilder.VECTOR_SIMILARITY_FIELD;
@@ -48,7 +49,12 @@ protected QueryBuilder asBuilder() {
4849
}
4950
Float vectorSimilarity = (Float) options.get(VECTOR_SIMILARITY_FIELD.getPreferredName());
5051

51-
return new KnnVectorQueryBuilder(field, query, k, numCands, rescoreVectorBuilder, vectorSimilarity);
52+
KnnVectorQueryBuilder queryBuilder = new KnnVectorQueryBuilder(field, query, k, numCands, rescoreVectorBuilder, vectorSimilarity);
53+
Number boost = (Number) options.get(BOOST_FIELD.getPreferredName());
54+
if (boost != null) {
55+
queryBuilder.boost(boost.floatValue());
56+
}
57+
return queryBuilder;
5258
}
5359

5460
@Override

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1909,7 +1909,7 @@ public void testMultiMatchOptionsPushDown() {
19091909
public void testKnnOptionsPushDown() {
19101910
String query = """
19111911
from test
1912-
| where KNN(dense_vector, [0.1, 0.2, 0.3], { "k": 5, "similarity": 0.001, "num_candidates": 10, "rescore_oversample": 7 })
1912+
| where KNN(dense_vector, [0.1, 0.2, 0.3], { "k": 5, "similarity": 0.001, "num_candidates": 10, "rescore_oversample": 7, "boost": 3.5 })
19131913
""";
19141914
var analyzer = makeAnalyzer("mapping-all-types.json");
19151915
var plan = plannerOptimizer.plan(query, IS_SV_STATS, analyzer);
@@ -1924,7 +1924,7 @@ public void testKnnOptionsPushDown() {
19241924
10,
19251925
new RescoreVectorBuilder(7),
19261926
0.001f
1927-
);
1927+
).boost(3.5f);
19281928
assertThat(expectedQuery.toString(), is(planStr.get()));
19291929
}
19301930

0 commit comments

Comments
 (0)