diff --git a/docs/changelog/139240.yaml b/docs/changelog/139240.yaml new file mode 100644 index 0000000000000..ef5e7326452cc --- /dev/null +++ b/docs/changelog/139240.yaml @@ -0,0 +1,5 @@ +pr: 139240 +summary: Don't use index() to populate rerank score array +area: Relevance +type: bug +issues: [] diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankFeaturePhaseRankCoordinatorContext.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankFeaturePhaseRankCoordinatorContext.java index 725443bc01e0d..ba095965c6f26 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankFeaturePhaseRankCoordinatorContext.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankFeaturePhaseRankCoordinatorContext.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.List; import java.util.Map; @@ -193,9 +194,13 @@ protected InferenceAction.Request generateRequest(List docFeatures) { } float[] extractScoresFromRankedDocs(List rankedDocs) { - float[] scores = new float[rankedDocs.size()]; - for (RankedDocsResults.RankedDoc rankedDoc : rankedDocs) { - scores[rankedDoc.index()] = rankedDoc.relevanceScore(); + List sortedRankedDocs = rankedDocs.stream() + .sorted(Comparator.comparingInt(RankedDocsResults.RankedDoc::index)) + .toList(); + + float[] scores = new float[sortedRankedDocs.size()]; + for (int i = 0; i < sortedRankedDocs.size(); i++) { + scores[i] = sortedRankedDocs.get(i).relevanceScore(); } return scores; }