Skip to content

Commit 0f660d6

Browse files
committed
The RetrieverBuilder was cleaned and parsing tests were verified
1 parent ea07ab2 commit 0f660d6

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
5555

5656
private final float[] weights;
5757
private final ScoreNormalizer[] normalizers;
58-
private final Float minScore;
5958

6059
@SuppressWarnings("unchecked")
6160
static final ConstructingObjectParser<LinearRetrieverBuilder, RetrieverParserContext> PARSER = new ConstructingObjectParser<>(
@@ -64,7 +63,6 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
6463
args -> {
6564
List<LinearRetrieverComponent> retrieverComponents = (List<LinearRetrieverComponent>) args[0];
6665
int rankWindowSize = args[1] == null ? RankBuilder.DEFAULT_RANK_WINDOW_SIZE : (int) args[1];
67-
Float minScore = (Float) args[2];
6866
List<RetrieverSource> innerRetrievers = new ArrayList<>();
6967
float[] weights = new float[retrieverComponents.size()];
7068
ScoreNormalizer[] normalizers = new ScoreNormalizer[retrieverComponents.size()];
@@ -75,14 +73,13 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
7573
normalizers[index] = component.normalizer;
7674
index++;
7775
}
78-
return new LinearRetrieverBuilder(innerRetrievers, rankWindowSize, weights, normalizers, minScore);
76+
return new LinearRetrieverBuilder(innerRetrievers, rankWindowSize, weights, normalizers);
7977
}
8078
);
8179

8280
static {
8381
PARSER.declareObjectArray(constructorArg(), LinearRetrieverComponent::fromXContent, RETRIEVERS_FIELD);
8482
PARSER.declareInt(optionalConstructorArg(), RANK_WINDOW_SIZE_FIELD);
85-
PARSER.declareFloat(optionalConstructorArg(), MIN_SCORE_FIELD);
8683
RetrieverBuilder.declareBaseParserFields(PARSER);
8784
}
8885

@@ -113,17 +110,15 @@ public static LinearRetrieverBuilder fromXContent(XContentParser parser, Retriev
113110
innerRetrievers,
114111
rankWindowSize,
115112
getDefaultWeight(innerRetrievers.size()),
116-
getDefaultNormalizers(innerRetrievers.size()),
117-
null
113+
getDefaultNormalizers(innerRetrievers.size())
118114
);
119115
}
120116

121117
public LinearRetrieverBuilder(
122118
List<RetrieverSource> innerRetrievers,
123119
int rankWindowSize,
124120
float[] weights,
125-
ScoreNormalizer[] normalizers,
126-
Float minScore
121+
ScoreNormalizer[] normalizers
127122
) {
128123
super(innerRetrievers, rankWindowSize);
129124
if (weights.length != innerRetrievers.size()) {
@@ -132,19 +127,13 @@ public LinearRetrieverBuilder(
132127
if (normalizers.length != innerRetrievers.size()) {
133128
throw new IllegalArgumentException("The number of normalizers must match the number of inner retrievers");
134129
}
135-
if (minScore != null && minScore < 0.0f) {
136-
throw new IllegalArgumentException(
137-
"[" + MIN_SCORE_FIELD.getPreferredName() + "] must be greater than or equal to 0, was: " + minScore
138-
);
139-
}
140130
this.weights = weights;
141131
this.normalizers = normalizers;
142-
this.minScore = minScore;
143132
}
144133

145134
@Override
146135
protected LinearRetrieverBuilder clone(List<RetrieverSource> newChildRetrievers, List<QueryBuilder> newPreFilterQueryBuilders) {
147-
LinearRetrieverBuilder clone = new LinearRetrieverBuilder(newChildRetrievers, rankWindowSize, weights, normalizers, minScore);
136+
LinearRetrieverBuilder clone = new LinearRetrieverBuilder(newChildRetrievers, rankWindowSize, weights, normalizers);
148137
clone.preFilterQueryBuilders = newPreFilterQueryBuilders;
149138
clone.retrieverName = retrieverName;
150139
return clone;
@@ -194,6 +183,7 @@ protected RankDoc[] combineInnerRetrieverResults(List<ScoreDoc[]> rankResults, b
194183
Arrays.sort(sortedResults);
195184

196185
final LinearRankDoc[] resultsToConsider;
186+
Float minScore = minScore();
197187
if (minScore != null) { // Check if minScore was actually set
198188
List<LinearRankDoc> filteredList = new ArrayList<>(sortedResults.length);
199189
for (LinearRankDoc doc : sortedResults) {
@@ -235,6 +225,7 @@ public void doToXContent(XContentBuilder builder, Params params) throws IOExcept
235225
builder.endArray();
236226
}
237227
builder.field(RANK_WINDOW_SIZE_FIELD.getPreferredName(), rankWindowSize);
228+
Float minScore = minScore();
238229
if (minScore != null) {
239230
builder.field(MIN_SCORE_FIELD.getPreferredName(), minScore);
240231
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ protected LinearRetrieverBuilder createTestInstance() {
5454
weights[i] = randomFloat();
5555
normalizers[i] = randomScoreNormalizer();
5656
}
57-
return new LinearRetrieverBuilder(innerRetrievers, rankWindowSize, weights, normalizers, null);
57+
return new LinearRetrieverBuilder(innerRetrievers, rankWindowSize, weights, normalizers);
5858
}
5959

6060
@Override

0 commit comments

Comments
 (0)