Skip to content

Commit d062b31

Browse files
Mikep86ioanatia
andauthored
[8.19] Retrievers - Fix rank_window_size validation (#128108) (#128150)
* Retrievers - Fix rank_window_size validation (#128108) (cherry picked from commit e9a8efe) # Conflicts: # x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankRetrieverBuilder.java * Fix build error --------- Co-authored-by: Ioana Tagirta <[email protected]>
1 parent 8580981 commit d062b31

File tree

6 files changed

+56
-12
lines changed

6 files changed

+56
-12
lines changed

server/src/main/java/org/elasticsearch/search/retriever/CompoundRetrieverBuilder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,13 @@ public ActionRequestValidationException validate(
247247
if (isScroll) {
248248
validationException = addValidationError("cannot specify [" + getName() + "] and [scroll]", validationException);
249249
}
250+
if (rankWindowSize < 0) {
251+
validationException = addValidationError(
252+
"[" + getRankWindowSizeField().getPreferredName() + "] parameter cannot be negative, found [" + rankWindowSize + "]",
253+
validationException
254+
);
255+
}
256+
250257
for (RetrieverSource innerRetriever : innerRetrievers) {
251258
validationException = innerRetriever.retriever().validate(source, validationException, isScroll, allowPartialSearchResults);
252259
if (innerRetriever.retriever() instanceof CompoundRetrieverBuilder<?> compoundChild) {
@@ -279,6 +286,10 @@ public int doHashCode() {
279286
return Objects.hash(innerRetrievers);
280287
}
281288

289+
public int rankWindowSize() {
290+
return rankWindowSize;
291+
}
292+
282293
protected final SearchSourceBuilder createSearchSourceBuilder(PointInTimeBuilder pit, RetrieverBuilder retrieverBuilder) {
283294
var sourceBuilder = new SearchSourceBuilder().pointInTimeBuilder(pit)
284295
.trackTotalHits(false)

server/src/main/java/org/elasticsearch/search/retriever/RetrieversFeatures.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* retrievers can be added individually with additional functionality.
2020
*/
2121
public class RetrieversFeatures implements FeatureSpecification {
22+
public static final NodeFeature NEGATIVE_RANK_WINDOW_SIZE_FIX = new NodeFeature("retriever.negative_rank_window_size_fix");
2223

2324
@Override
2425
public Set<NodeFeature> getFeatures() {
@@ -28,4 +29,9 @@ public Set<NodeFeature> getFeatures() {
2829
KnnRetrieverBuilder.KNN_RETRIEVER_SUPPORTED
2930
);
3031
}
32+
33+
@Override
34+
public Set<NodeFeature> getTestFeatures() {
35+
return Set.of(NEGATIVE_RANK_WINDOW_SIZE_FIX);
36+
}
3137
}

x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/retriever/QueryRuleRetrieverBuilder.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,6 @@ public String getName() {
124124
return NAME;
125125
}
126126

127-
public int rankWindowSize() {
128-
return rankWindowSize;
129-
}
130-
131127
@Override
132128
protected SearchSourceBuilder finalizeSourceBuilder(SearchSourceBuilder source) {
133129
checkValidSort(source.sorts());

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankRetrieverBuilder.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,6 @@ public String inferenceId() {
195195
return inferenceId;
196196
}
197197

198-
public int rankWindowSize() {
199-
return rankWindowSize;
200-
}
201-
202198
@Override
203199
protected void doToXContent(XContentBuilder builder, Params params) throws IOException {
204200
builder.field(RETRIEVER_FIELD.getPreferredName(), innerRetrievers.get(0).retriever());

x-pack/plugin/rank-rrf/src/yamlRestTest/resources/rest-api-spec/test/linear/10_linear_retriever.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,3 +1063,42 @@ setup:
10631063
- close_to: { hits.hits.0._score: { value: 10.5, error: 0.001 } }
10641064
- match: { hits.hits.1._id: "1" }
10651065
- match: { hits.hits.1._score: 10 }
1066+
1067+
---
1068+
"should throw when rank_window_size is negative":
1069+
- requires:
1070+
cluster_features: [ "retriever.negative_rank_window_size_fix" ]
1071+
reason: "Fix for negative rank_window_size error message"
1072+
- do:
1073+
catch: /\[rank_window_size\] parameter cannot be negative, found \[-10\]/
1074+
search:
1075+
index: test
1076+
body:
1077+
retriever:
1078+
linear:
1079+
retrievers: [
1080+
{
1081+
retriever: {
1082+
standard: {
1083+
query: {
1084+
match_all: { }
1085+
}
1086+
}
1087+
},
1088+
weight: 10.0,
1089+
normalizer: "minmax"
1090+
},
1091+
{
1092+
retriever: {
1093+
knn: {
1094+
field: "vector",
1095+
query_vector: [ 4 ],
1096+
k: 1,
1097+
num_candidates: 1
1098+
}
1099+
},
1100+
weight: 2.0
1101+
}
1102+
]
1103+
rank_window_size: -10
1104+
- match: { status: 400 }

x-pack/plugin/search-business-rules/src/main/java/org/elasticsearch/xpack/searchbusinessrules/retriever/PinnedRetrieverBuilder.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,6 @@ public String getName() {
151151
return NAME;
152152
}
153153

154-
public int rankWindowSize() {
155-
return rankWindowSize;
156-
}
157-
158154
/**
159155
* Creates a PinnedQueryBuilder with the appropriate pinned documents.
160156
*

0 commit comments

Comments
 (0)