Skip to content

Commit 0640099

Browse files
committed
Modified builder
1 parent a5d9e34 commit 0640099

File tree

2 files changed

+8
-15
lines changed

2 files changed

+8
-15
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.elasticsearch.xcontent.XContentParser;
3030
import org.elasticsearch.xpack.core.XPackPlugin;
3131
import org.elasticsearch.xpack.rank.MultiFieldsInnerRetrieverUtils;
32-
import org.elasticsearch.xpack.rank.linear.LinearRetrieverComponent;
3332

3433
import java.io.IOException;
3534
import java.util.ArrayList;
@@ -40,7 +39,6 @@
4039

4140
import static org.elasticsearch.action.ValidateActions.addValidationError;
4241
import static org.elasticsearch.xpack.rank.rrf.RRFRetrieverComponent.DEFAULT_WEIGHT;
43-
import static org.elasticsearch.xpack.rank.rrf.RRFRetrieverComponent.RETRIEVER_FIELD;
4442

4543
/**
4644
* An rrf retriever is used to represent an rrf rank element, but
@@ -292,12 +290,15 @@ protected RetrieverBuilder doRewrite(QueryRewriteContext ctx) {
292290
if (fieldsInnerRetrievers.isEmpty() == false) {
293291
// TODO: This is a incomplete solution as it does not address other incomplete copy issues
294292
// (such as dropping the retriever name and min score)
295-
RRFRetrieverBuilder generated = (RRFRetrieverBuilder) fieldsInnerRetrievers.get(0);
296-
rewritten = new RRFRetrieverBuilder(generated.innerRetrievers, null, null, rankWindowSize, rankConstant, generated.weights);
293+
List<CompoundRetrieverBuilder.RetrieverSource> sources = new ArrayList<>();
294+
float[] weights = new float[fieldsInnerRetrievers.size()];
295+
Arrays.fill(weights, RRFRetrieverComponent.DEFAULT_WEIGHT);
296+
for (int i = 0; i < fieldsInnerRetrievers.size(); i++) {
297+
sources.add(CompoundRetrieverBuilder.RetrieverSource.from(fieldsInnerRetrievers.get(i)));
298+
weights[i] = RRFRetrieverComponent.DEFAULT_WEIGHT;
299+
}
300+
rewritten = new RRFRetrieverBuilder(sources, null, null, rankWindowSize, rankConstant, weights);
297301
rewritten.getPreFilterQueryBuilders().addAll(preFilterQueryBuilders);
298-
} else {
299-
// Inner retriever list can be empty when using an index wildcard pattern that doesn't match any indices
300-
rewritten = new StandardRetrieverBuilder(new MatchNoneQueryBuilder());
301302
}
302303
}
303304

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,12 @@
1111
import org.elasticsearch.search.retriever.RetrieverBuilder;
1212
import org.elasticsearch.search.retriever.RetrieverParserContext;
1313
import org.elasticsearch.xcontent.ConstructingObjectParser;
14-
import org.elasticsearch.xcontent.CopyingXContentParser;
15-
import org.elasticsearch.xcontent.ObjectParser;
1614
import org.elasticsearch.xcontent.ParseField;
1715
import org.elasticsearch.xcontent.ToXContentObject;
1816
import org.elasticsearch.xcontent.XContentBuilder;
19-
import org.elasticsearch.xcontent.XContentFactory;
20-
import org.elasticsearch.xcontent.XContentParseException;
2117
import org.elasticsearch.xcontent.XContentParser;
22-
import org.elasticsearch.xcontent.XContentSubParser;
23-
import org.elasticsearch.xcontent.XContentType;
2418

2519
import java.io.IOException;
26-
import java.util.HashMap;
27-
import java.util.Map;
2820

2921
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
3022
import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg;

0 commit comments

Comments
 (0)