diff --git a/docs/changelog/124564.yaml b/docs/changelog/124564.yaml new file mode 100644 index 000000000000..ebfc2593db19 --- /dev/null +++ b/docs/changelog/124564.yaml @@ -0,0 +1,5 @@ +pr: 124564 +summary: Restore `TextSimilarityRankBuilder` XContent output +area: Ranking +type: bug +issues: [] diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankBuilder.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankBuilder.java index 8c76db40f832..cc23e8e3a337 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankBuilder.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankBuilder.java @@ -30,6 +30,12 @@ import java.io.IOException; import java.util.List; import java.util.Objects; +import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.FAILURES_ALLOWED_FIELD; +import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.FIELD_FIELD; +import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.INFERENCE_ID_FIELD; +import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.INFERENCE_TEXT_FIELD; +import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.MIN_SCORE_FIELD; + /** * A {@code RankBuilder} that enables ranking with text similarity model inference. Supports parameters for configuring the inference call. */ @@ -103,7 +109,17 @@ public class TextSimilarityRankBuilder extends RankBuilder { @Override public void doXContent(XContentBuilder builder, Params params) throws IOException { - throw new UnsupportedOperationException("This should not be XContent serialized"); + // this object is not parsed, but it sometimes needs to be output as xcontent + // rankWindowSize serialization is handled by the parent class RankBuilder + builder.field(INFERENCE_ID_FIELD.getPreferredName(), inferenceId); + builder.field(INFERENCE_TEXT_FIELD.getPreferredName(), inferenceText); + builder.field(FIELD_FIELD.getPreferredName(), field); + if (minScore != null) { + builder.field(MIN_SCORE_FIELD.getPreferredName(), minScore); + } + if (failuresAllowed) { + builder.field(FAILURES_ALLOWED_FIELD.getPreferredName(), true); + } } @Override