Skip to content

Commit 6af62fe

Browse files
supply boost into existing intercepter builders
1 parent 9ab2811 commit 6af62fe

File tree

4 files changed

+25
-17
lines changed

4 files changed

+25
-17
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ protected String getQuery(QueryBuilder queryBuilder) {
4848
}
4949

5050
@Override
51-
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation) {
51+
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation, Float fieldBoost) {
5252
assert (queryBuilder instanceof KnnVectorQueryBuilder);
5353
KnnVectorQueryBuilder knnVectorQueryBuilder = (KnnVectorQueryBuilder) queryBuilder;
5454
Map<String, List<String>> inferenceIdsIndices = indexInformation.getInferenceIdsIndices();
@@ -63,7 +63,7 @@ protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceI
6363
// Multiple inference IDs, construct a boolean query
6464
finalQueryBuilder = buildInferenceQueryWithMultipleInferenceIds(knnVectorQueryBuilder, inferenceIdsIndices);
6565
}
66-
finalQueryBuilder.boost(queryBuilder.boost());
66+
finalQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
6767
finalQueryBuilder.queryName(queryBuilder.queryName());
6868
return finalQueryBuilder;
6969
}
@@ -87,7 +87,8 @@ private QueryBuilder buildInferenceQueryWithMultipleInferenceIds(
8787
@Override
8888
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
8989
QueryBuilder queryBuilder,
90-
InferenceIndexInformationForField indexInformation
90+
InferenceIndexInformationForField indexInformation,
91+
Float fieldBoost
9192
) {
9293
assert (queryBuilder instanceof KnnVectorQueryBuilder);
9394
KnnVectorQueryBuilder knnVectorQueryBuilder = (KnnVectorQueryBuilder) queryBuilder;
@@ -106,7 +107,7 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
106107
)
107108
);
108109
}
109-
boolQueryBuilder.boost(queryBuilder.boost());
110+
boolQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
110111
boolQueryBuilder.queryName(queryBuilder.queryName());
111112
return boolQueryBuilder;
112113
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,18 @@ protected String getQuery(QueryBuilder queryBuilder) {
3737
}
3838

3939
@Override
40-
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation) {
40+
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation, Float fieldBoost) {
4141
SemanticQueryBuilder semanticQueryBuilder = new SemanticQueryBuilder(indexInformation.fieldName(), getQuery(queryBuilder), false);
42-
semanticQueryBuilder.boost(queryBuilder.boost());
42+
semanticQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
4343
semanticQueryBuilder.queryName(queryBuilder.queryName());
4444
return semanticQueryBuilder;
4545
}
4646

4747
@Override
4848
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
4949
QueryBuilder queryBuilder,
50-
InferenceIndexInformationForField indexInformation
50+
InferenceIndexInformationForField indexInformation,
51+
Float fieldBoost
5152
) {
5253
assert (queryBuilder instanceof MatchQueryBuilder);
5354
MatchQueryBuilder originalMatchQueryBuilder = (MatchQueryBuilder) queryBuilder;
@@ -63,7 +64,7 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
6364
)
6465
);
6566
boolQueryBuilder.should(createSubQueryForIndices(indexInformation.nonInferenceIndices(), matchQueryBuilder));
66-
boolQueryBuilder.boost(queryBuilder.boost());
67+
boolQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
6768
boolQueryBuilder.queryName(queryBuilder.queryName());
6869
return boolQueryBuilder;
6970
}

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
4141
return queryBuilder;
4242
}
4343

44-
String fieldName = fieldsWithBoosts.keySet().stream().findFirst().get();
44+
String fieldName = fieldsWithBoosts.keySet().iterator().next();
45+
Float fieldBoost = fieldsWithBoosts.get(fieldName);
46+
4547
InferenceIndexInformationForField indexInformation = resolveIndicesForField(fieldName, resolvedIndices);
4648
if (indexInformation.getInferenceIndices().isEmpty()) {
4749
// No inference fields were identified, so return the original query.
@@ -50,11 +52,11 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
5052
// Combined case where the field name requested by this query contains both
5153
// semantic_text and non-inference fields, so we have to combine queries per index
5254
// containing each field type.
53-
return buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation);
55+
return buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation, fieldBoost);
5456
} else {
5557
// The only fields we've identified are inference fields (e.g. semantic_text),
5658
// so rewrite the entire query to work on a semantic_text field.
57-
return buildInferenceQuery(queryBuilder, indexInformation);
59+
return buildInferenceQuery(queryBuilder, indexInformation, fieldBoost);
5860
}
5961
}
6062

@@ -77,20 +79,23 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
7779
*
7880
* @param queryBuilder {@link QueryBuilder}
7981
* @param indexInformation {@link InferenceIndexInformationForField}
82+
* @param fieldBoost per field boost value
8083
* @return {@link QueryBuilder}
8184
*/
82-
protected abstract QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation);
85+
protected abstract QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation, Float fieldBoost);
8386

8487
/**
8588
* Builds a combined inference and non-inference query,
8689
* which separates the different queries into appropriate indices based on field type.
8790
* @param queryBuilder {@link QueryBuilder}
8891
* @param indexInformation {@link InferenceIndexInformationForField}
92+
* @param fieldBoost per field boost value
8993
* @return {@link QueryBuilder}
9094
*/
9195
protected abstract QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
9296
QueryBuilder queryBuilder,
93-
InferenceIndexInformationForField indexInformation
97+
InferenceIndexInformationForField indexInformation,
98+
Float fieldBoost
9499
);
95100

96101
private InferenceIndexInformationForField resolveIndicesForField(String fieldName, ResolvedIndices resolvedIndices) {

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected String getQuery(QueryBuilder queryBuilder) {
4141
}
4242

4343
@Override
44-
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation) {
44+
protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation, Float fieldBoost) {
4545
Map<String, List<String>> inferenceIdsIndices = indexInformation.getInferenceIdsIndices();
4646
QueryBuilder finalQueryBuilder;
4747
if (inferenceIdsIndices.size() == 1) {
@@ -53,7 +53,7 @@ protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceI
5353
finalQueryBuilder = buildInferenceQueryWithMultipleInferenceIds(queryBuilder, inferenceIdsIndices);
5454
}
5555
finalQueryBuilder.queryName(queryBuilder.queryName());
56-
finalQueryBuilder.boost(queryBuilder.boost());
56+
finalQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
5757
return finalQueryBuilder;
5858
}
5959

@@ -76,7 +76,8 @@ private QueryBuilder buildInferenceQueryWithMultipleInferenceIds(
7676
@Override
7777
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
7878
QueryBuilder queryBuilder,
79-
InferenceIndexInformationForField indexInformation
79+
InferenceIndexInformationForField indexInformation,
80+
Float fieldBoost
8081
) {
8182
assert (queryBuilder instanceof SparseVectorQueryBuilder);
8283
SparseVectorQueryBuilder sparseVectorQueryBuilder = (SparseVectorQueryBuilder) queryBuilder;
@@ -106,7 +107,7 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
106107
)
107108
);
108109
}
109-
boolQueryBuilder.boost(queryBuilder.boost());
110+
boolQueryBuilder.boost(queryBuilder.boost() * fieldBoost);
110111
boolQueryBuilder.queryName(queryBuilder.queryName());
111112
return boolQueryBuilder;
112113
}

0 commit comments

Comments
 (0)