Skip to content

Commit fd30387

Browse files
committed
Fixed the weights null
1 parent f1e14ce commit fd30387

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

x-pack/plugin/rank-rrf/src/main/java/org/elasticsearch/xpack/rank/rrf/RRFRetrieverBuilder.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,6 @@ public ActionRequestValidationException validate(
164164
) {
165165
validationException = super.validate(source, validationException, isScroll, allowPartialSearchResults);
166166

167-
if (this.weights != null) {
168-
for (float weight : this.weights) {
169-
if (weight < 0) {
170-
validationException = addValidationError("[weight] must be non-negative, found [" + weight + "]", validationException);
171-
}
172-
}
173-
}
174167
return MultiFieldsInnerRetrieverUtils.validateParams(
175168
innerRetrievers,
176169
fields,
@@ -283,11 +276,15 @@ protected RetrieverBuilder doRewrite(QueryRewriteContext ctx) {
283276
for (var retriever : r) {
284277
retrievers.add(retriever.retrieverSource());
285278
}
286-
return new RRFRetrieverBuilder(retrievers, null, null, rankWindowSize, rankConstant, null);
279+
float[] weights = new float[retrievers.size()];
280+
Arrays.fill(weights, 1.0f);
281+
return new RRFRetrieverBuilder(retrievers, null, null, rankWindowSize, rankConstant, weights);
287282
},
288283
w -> {
289-
if (w < 0) {
290-
throw new IllegalArgumentException("[" + NAME + "] per-field weights must be non-negative");
284+
if (w != 1.0f) {
285+
throw new IllegalArgumentException(
286+
"[" + NAME + "] does not support per-field weights in [" + FIELDS_FIELD.getPreferredName() + "]"
287+
);
291288
}
292289
}
293290
);

x-pack/plugin/rank-rrf/src/test/java/org/elasticsearch/xpack/rank/rrf/RRFRetrieverBuilderTests.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.util.Set;
4242

4343
import static org.elasticsearch.search.rank.RankBuilder.DEFAULT_RANK_WINDOW_SIZE;
44+
import static org.elasticsearch.xpack.rank.rrf.RRFRetrieverComponent.DEFAULT_WEIGHT;
4445
import static org.hamcrest.Matchers.instanceOf;
4546

4647
/** Tests for the rrf retriever. */
@@ -164,7 +165,7 @@ public void testMultiFieldsParamsRewrite() {
164165
"foo",
165166
DEFAULT_RANK_WINDOW_SIZE,
166167
RRFRetrieverBuilder.DEFAULT_RANK_CONSTANT,
167-
null
168+
new float[0]
168169
);
169170
assertMultiFieldsParamsRewrite(
170171
rrfRetrieverBuilder,
@@ -181,7 +182,7 @@ public void testMultiFieldsParamsRewrite() {
181182
"foo2",
182183
DEFAULT_RANK_WINDOW_SIZE * 2,
183184
RRFRetrieverBuilder.DEFAULT_RANK_CONSTANT / 2,
184-
null
185+
new float[0]
185186
);
186187
assertMultiFieldsParamsRewrite(
187188
rrfRetrieverBuilder,
@@ -198,7 +199,7 @@ public void testMultiFieldsParamsRewrite() {
198199
"bar",
199200
DEFAULT_RANK_WINDOW_SIZE,
200201
RRFRetrieverBuilder.DEFAULT_RANK_CONSTANT,
201-
null
202+
new float[0]
202203
);
203204
assertMultiFieldsParamsRewrite(
204205
rrfRetrieverBuilder,
@@ -215,7 +216,7 @@ public void testMultiFieldsParamsRewrite() {
215216
"baz",
216217
DEFAULT_RANK_WINDOW_SIZE,
217218
RRFRetrieverBuilder.DEFAULT_RANK_CONSTANT,
218-
null
219+
new float[0]
219220
);
220221
assertMultiFieldsParamsRewrite(
221222
rrfRetrieverBuilder,
@@ -247,7 +248,7 @@ public void testSearchRemoteIndex() {
247248
"foo",
248249
DEFAULT_RANK_WINDOW_SIZE,
249250
RRFRetrieverBuilder.DEFAULT_RANK_CONSTANT,
250-
null
251+
new float[0]
251252
);
252253

253254
IllegalArgumentException iae = expectThrows(

0 commit comments

Comments
 (0)