Skip to content

Commit 7066b10

Browse files
committed
Component is modified
1 parent 83763e9 commit 7066b10

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

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

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,20 @@ public class LinearRetrieverComponent implements ToXContentObject {
2424

2525
public static final ParseField RETRIEVER_FIELD = new ParseField("retriever");
2626
public static final ParseField WEIGHT_FIELD = new ParseField("weight");
27-
public static final ScoreNormalizer DEFAULT_NORMALIZER = IdentityScoreNormalizer.INSTANCE;
28-
27+
public static final ParseField NORMALIZER_FIELD = new ParseField("normalizer");
28+
2929
static final float DEFAULT_WEIGHT = 1f;
30+
static final ScoreNormalizer DEFAULT_NORMALIZER = IdentityScoreNormalizer.INSTANCE;
3031

3132
RetrieverBuilder retriever;
3233
float weight;
34+
ScoreNormalizer normalizer;
3335

34-
public LinearRetrieverComponent(RetrieverBuilder retrieverBuilder, Float weight) {
36+
public LinearRetrieverComponent(RetrieverBuilder retrieverBuilder, Float weight, ScoreNormalizer normalizer) {
3537
assert retrieverBuilder != null;
3638
this.retriever = retrieverBuilder;
3739
this.weight = weight == null ? DEFAULT_WEIGHT : weight;
40+
this.normalizer = normalizer == null ? DEFAULT_NORMALIZER : normalizer;
3841
if (this.weight < 0) {
3942
throw new IllegalArgumentException("[weight] must be non-negative");
4043
}
@@ -44,6 +47,9 @@ public LinearRetrieverComponent(RetrieverBuilder retrieverBuilder, Float weight)
4447
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
4548
builder.field(RETRIEVER_FIELD.getPreferredName(), retriever);
4649
builder.field(WEIGHT_FIELD.getPreferredName(), weight);
50+
if (normalizer != null && !normalizer.equals(DEFAULT_NORMALIZER)) {
51+
builder.field(NORMALIZER_FIELD.getPreferredName(), normalizer.getName());
52+
}
4753
return builder;
4854
}
4955

@@ -54,7 +60,8 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
5460
args -> {
5561
RetrieverBuilder retrieverBuilder = (RetrieverBuilder) args[0];
5662
Float weight = (Float) args[1];
57-
return new LinearRetrieverComponent(retrieverBuilder, weight);
63+
ScoreNormalizer normalizer = (ScoreNormalizer) args[2];
64+
return new LinearRetrieverComponent(retrieverBuilder, weight, normalizer);
5865
}
5966
);
6067

@@ -65,6 +72,12 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
6572
return innerRetriever;
6673
}, RETRIEVER_FIELD);
6774
PARSER.declareFloat(optionalConstructorArg(), WEIGHT_FIELD);
75+
PARSER.declareField(
76+
optionalConstructorArg(),
77+
(p, c) -> ScoreNormalizer.valueOf(p.text()),
78+
NORMALIZER_FIELD,
79+
ObjectParser.ValueType.STRING
80+
);
6881
}
6982

7083
public static LinearRetrieverComponent fromXContent(XContentParser parser, RetrieverParserContext context) throws IOException {

0 commit comments

Comments
 (0)