Skip to content

Commit 9ab2811

Browse files
update intercept framework to handle per field boost
1 parent 7650e9f commit 9ab2811

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/SemanticKnnVectorQueryRewriteInterceptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public class SemanticKnnVectorQueryRewriteInterceptor extends SemanticQueryRewri
3333
public SemanticKnnVectorQueryRewriteInterceptor() {}
3434

3535
@Override
36-
protected String getFieldName(QueryBuilder queryBuilder) {
36+
protected Map<String, Float> getFieldNamesWithBoosts(QueryBuilder queryBuilder) {
3737
assert (queryBuilder instanceof KnnVectorQueryBuilder);
3838
KnnVectorQueryBuilder knnVectorQueryBuilder = (KnnVectorQueryBuilder) queryBuilder;
39-
return knnVectorQueryBuilder.getFieldName();
39+
return Map.of(knnVectorQueryBuilder.getFieldName(), 1.0f);
4040
}
4141

4242
@Override

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/SemanticMatchQueryRewriteInterceptor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.elasticsearch.index.query.MatchQueryBuilder;
1313
import org.elasticsearch.index.query.QueryBuilder;
1414

15+
import java.util.Map;
16+
1517
public class SemanticMatchQueryRewriteInterceptor extends SemanticQueryRewriteInterceptor {
1618

1719
public static final NodeFeature SEMANTIC_MATCH_QUERY_REWRITE_INTERCEPTION_SUPPORTED = new NodeFeature(
@@ -21,10 +23,10 @@ public class SemanticMatchQueryRewriteInterceptor extends SemanticQueryRewriteIn
2123
public SemanticMatchQueryRewriteInterceptor() {}
2224

2325
@Override
24-
protected String getFieldName(QueryBuilder queryBuilder) {
26+
protected Map<String, Float> getFieldNamesWithBoosts(QueryBuilder queryBuilder) {
2527
assert (queryBuilder instanceof MatchQueryBuilder);
2628
MatchQueryBuilder matchQueryBuilder = (MatchQueryBuilder) queryBuilder;
27-
return matchQueryBuilder.fieldName();
29+
return Map.of(matchQueryBuilder.fieldName(), 1.0f);
2830
}
2931

3032
@Override

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/SemanticQueryRewriteInterceptor.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@ public SemanticQueryRewriteInterceptor() {}
3333

3434
@Override
3535
public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilder queryBuilder) {
36-
String fieldName = getFieldName(queryBuilder);
36+
Map<String, Float> fieldsWithBoosts = getFieldNamesWithBoosts(queryBuilder);
3737
ResolvedIndices resolvedIndices = context.getResolvedIndices();
3838

3939
if (resolvedIndices == null) {
4040
// No resolved indices, so return the original query.
4141
return queryBuilder;
4242
}
4343

44+
String fieldName = fieldsWithBoosts.keySet().stream().findFirst().get();
4445
InferenceIndexInformationForField indexInformation = resolveIndicesForField(fieldName, resolvedIndices);
4546
if (indexInformation.getInferenceIndices().isEmpty()) {
4647
// No inference fields were identified, so return the original query.
@@ -58,10 +59,12 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
5859
}
5960

6061
/**
61-
* @param queryBuilder {@link QueryBuilder}
62-
* @return The singular field name requested by the provided query builder.
62+
* Extracts field names and their associated boost values from the query builder.
63+
*
64+
* @param queryBuilder the query builder to extract field information from
65+
* @return a map where keys are field names and values are their boost multipliers
6366
*/
64-
protected abstract String getFieldName(QueryBuilder queryBuilder);
67+
protected abstract Map<String, Float> getFieldNamesWithBoosts(QueryBuilder queryBuilder);
6568

6669
/**
6770
* @param queryBuilder {@link QueryBuilder}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/queries/SemanticSparseVectorQueryRewriteInterceptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ public class SemanticSparseVectorQueryRewriteInterceptor extends SemanticQueryRe
2727
public SemanticSparseVectorQueryRewriteInterceptor() {}
2828

2929
@Override
30-
protected String getFieldName(QueryBuilder queryBuilder) {
30+
protected Map<String, Float> getFieldNamesWithBoosts(QueryBuilder queryBuilder) {
3131
assert (queryBuilder instanceof SparseVectorQueryBuilder);
3232
SparseVectorQueryBuilder sparseVectorQueryBuilder = (SparseVectorQueryBuilder) queryBuilder;
33-
return sparseVectorQueryBuilder.getFieldName();
33+
return Map.of(sparseVectorQueryBuilder.getFieldName(), 1.0f);
3434
}
3535

3636
@Override

0 commit comments

Comments
 (0)