Skip to content

Commit 1e21f96

Browse files
working commit
1 parent 84161fd commit 1e21f96

File tree

5 files changed

+91
-8
lines changed

5 files changed

+91
-8
lines changed

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ private QueryBuilder buildInferenceQueryWithMultipleInferenceIds(
9494
return boolQueryBuilder;
9595
}
9696

97-
@Override
98-
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
97+
private QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
9998
QueryBuilder queryBuilder,
10099
InferenceIndexInformationForField indexInformation
101100
) {
@@ -121,6 +120,21 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
121120
return boolQueryBuilder;
122121
}
123122

123+
@Override
124+
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
125+
QueryBuilder queryBuilder,
126+
InferenceIndexInformationForField indexInformation,
127+
Float fieldWeight
128+
) {
129+
QueryBuilder inferenceQuery = buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation);
130+
131+
if (fieldWeight != null && fieldWeight.equals(1.0f) == false) {
132+
inferenceQuery.boost(fieldWeight);
133+
}
134+
135+
return inferenceQuery;
136+
}
137+
124138
private QueryBuilder buildNestedQueryFromKnnVectorQuery(
125139
KnnVectorQueryBuilder knnVectorQueryBuilder,
126140
List<String> indices,

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceI
5454
return inferenceQuery;
5555
}
5656

57-
@Override
5857
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
5958
QueryBuilder queryBuilder,
6059
InferenceIndexInformationForField indexInformation
@@ -78,6 +77,21 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
7877
return boolQueryBuilder;
7978
}
8079

80+
@Override
81+
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
82+
QueryBuilder queryBuilder,
83+
InferenceIndexInformationForField indexInformation,
84+
Float fieldWeight
85+
) {
86+
QueryBuilder inferenceQuery = buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation);
87+
88+
if (fieldWeight != null && fieldWeight.equals(1.0f) == false) {
89+
inferenceQuery.boost(fieldWeight);
90+
}
91+
92+
return inferenceQuery;
93+
}
94+
8195
@Override
8296
public String getQueryName() {
8397
return MatchQueryBuilder.NAME;

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

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.elasticsearch.xpack.inference.queries;
99

1010
import org.elasticsearch.index.query.BoolQueryBuilder;
11+
import org.elasticsearch.index.query.MatchQueryBuilder;
1112
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
1213
import org.elasticsearch.index.query.QueryBuilder;
1314

@@ -50,8 +51,7 @@ protected QueryBuilder buildInferenceQuery(QueryBuilder queryBuilder, InferenceI
5051
return inferenceQuery;
5152
}
5253

53-
@Override
54-
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation) {
54+
private QueryBuilder buildCombinedInferenceAndNonInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation) {
5555
assert (queryBuilder instanceof MultiMatchQueryBuilder);
5656
MultiMatchQueryBuilder originalMultiMatchQueryBuilder = (MultiMatchQueryBuilder) queryBuilder;
5757

@@ -82,6 +82,42 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(QueryBuilder q
8282
return boolQueryBuilder;
8383
}
8484

85+
@Override
86+
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(QueryBuilder queryBuilder, InferenceIndexInformationForField indexInformation, Float fieldWeight) {
87+
assert (queryBuilder instanceof MultiMatchQueryBuilder);
88+
MultiMatchQueryBuilder originalMultiMatchQueryBuilder = (MultiMatchQueryBuilder) queryBuilder;
89+
90+
MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder(indexInformation.fieldName(), getQuery(queryBuilder));
91+
92+
// Create a copy for non-inference fields with only this specific field
93+
// MultiMatchQueryBuilder multiMatchQueryBuilder = createSingleFieldMultiMatch(
94+
// originalMultiMatchQueryBuilder,
95+
// indexInformation.fieldName()
96+
// );
97+
98+
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
99+
100+
// Add semantic query for inference indices
101+
boolQueryBuilder.should(
102+
createSemanticSubQuery(
103+
indexInformation.getInferenceIndices(),
104+
indexInformation.fieldName(),
105+
getQuery(matchQueryBuilder)
106+
)
107+
);
108+
109+
// Add regular query for non-inference indices
110+
boolQueryBuilder.should(
111+
createSubQueryForIndices(indexInformation.nonInferenceIndices(), matchQueryBuilder)
112+
);
113+
114+
if (fieldWeight != null && fieldWeight.equals(1.0f) == false) {
115+
boolQueryBuilder.boost(fieldWeight);
116+
}
117+
boolQueryBuilder.queryName(queryBuilder.queryName());
118+
return boolQueryBuilder;
119+
}
120+
85121
@Override
86122
public String getQueryName() {
87123
return MultiMatchQueryBuilder.NAME;

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
5353
// Combined case where the field name requested by this query contains both
5454
// semantic_text and non-inference fields, so we have to combine queries per index
5555
// containing each field type.
56-
finalQueryBuilder.should(buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation));
56+
finalQueryBuilder.should(buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation, fieldWeight));
5757
} else {
5858
// The only fields we've identified are inference fields (e.g. semantic_text),
5959
// so rewrite the entire query to work on a semantic_text field.
@@ -93,9 +93,15 @@ public QueryBuilder interceptAndRewrite(QueryRewriteContext context, QueryBuilde
9393
* @param indexInformation {@link InferenceIndexInformationForField}
9494
* @return {@link QueryBuilder}
9595
*/
96+
// protected abstract QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
97+
// QueryBuilder queryBuilder,
98+
// InferenceIndexInformationForField indexInformation
99+
// );
100+
96101
protected abstract QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
97102
QueryBuilder queryBuilder,
98-
InferenceIndexInformationForField indexInformation
103+
InferenceIndexInformationForField indexInformation,
104+
Float fieldWeight
99105
);
100106

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

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ private QueryBuilder buildInferenceQueryWithMultipleInferenceIds(
8383
return boolQueryBuilder;
8484
}
8585

86-
@Override
8786
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
8887
QueryBuilder queryBuilder,
8988
InferenceIndexInformationForField indexInformation
@@ -121,6 +120,20 @@ protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
121120
return boolQueryBuilder;
122121
}
123122

123+
protected QueryBuilder buildCombinedInferenceAndNonInferenceQuery(
124+
QueryBuilder queryBuilder,
125+
InferenceIndexInformationForField indexInformation,
126+
Float fieldWeight
127+
) {
128+
QueryBuilder inferenceQuery = buildCombinedInferenceAndNonInferenceQuery(queryBuilder, indexInformation);
129+
130+
if (fieldWeight != null && fieldWeight.equals(1.0f) == false) {
131+
inferenceQuery.boost(fieldWeight);
132+
}
133+
134+
return inferenceQuery;
135+
}
136+
124137
private QueryBuilder buildNestedQueryFromSparseVectorQuery(QueryBuilder queryBuilder, String searchInferenceId) {
125138
assert (queryBuilder instanceof SparseVectorQueryBuilder);
126139
SparseVectorQueryBuilder sparseVectorQueryBuilder = (SparseVectorQueryBuilder) queryBuilder;

0 commit comments

Comments
 (0)