Skip to content

Commit 5ea82aa

Browse files
committed
iter
1 parent 0ab34c2 commit 5ea82aa

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

server/src/main/java/org/elasticsearch/action/search/QueryPhaseResultConsumer.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.elasticsearch.common.io.stream.DelayableWriteable;
1919
import org.elasticsearch.common.lucene.search.TopDocsAndMaxScore;
2020
import org.elasticsearch.common.util.concurrent.AbstractRunnable;
21-
import org.elasticsearch.index.query.RankDocsQueryBuilder;
2221
import org.elasticsearch.search.SearchPhaseResult;
2322
import org.elasticsearch.search.SearchService;
2423
import org.elasticsearch.search.SearchShardTarget;
@@ -63,7 +62,6 @@ public class QueryPhaseResultConsumer extends ArraySearchPhaseResults<SearchPhas
6362
private final boolean hasTopDocs;
6463
private final boolean hasAggs;
6564
private final boolean performFinalReduce;
66-
private final boolean isRankQuery;
6765

6866
private final Consumer<Exception> onPartialMergeFailure;
6967

@@ -118,7 +116,6 @@ public QueryPhaseResultConsumer(
118116
this.aggReduceContextBuilder = hasAggs ? controller.getReduceContext(isCanceled, source.aggregations()) : null;
119117
batchReduceSize = (hasAggs || hasTopDocs) ? Math.min(request.getBatchedReduceSize(), expectedResultSize) : expectedResultSize;
120118
topDocsStats = new TopDocsStats(request.resolveTrackTotalHitsUpTo());
121-
isRankQuery = source != null && source.query() instanceof RankDocsQueryBuilder;
122119
}
123120

124121
@Override

server/src/main/java/org/elasticsearch/search/retriever/CompoundRetrieverBuilder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,7 @@ public void onResponse(MultiSearchResponse items) {
181181
failures.forEach(ex::addSuppressed);
182182
listener.onFailure(ex);
183183
} else {
184-
RankDoc[] combinedResults = combineInnerRetrieverResults(topDocs, ctx.isExplain());
185-
results.set(normalizeRankDocs(combinedResults));
184+
results.set(combineInnerRetrieverResults(topDocs, ctx.isExplain()));
186185
listener.onResponse(null);
187186
}
188187
}

server/src/test/java/org/elasticsearch/index/query/RankDocsQueryBuilderTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,16 @@ public void testUnknownField() throws IOException {
251251
public void testValidOutput() throws IOException {
252252
// no-op since RankDocsQueryBuilder is an internal only API
253253
}
254+
255+
public void shouldThrowForNegativeScores() throws IOException {
256+
try (Directory directory = newDirectory(); RandomIndexWriter iw = new RandomIndexWriter(random(), directory)) {
257+
iw.addDocument(new Document());
258+
try (IndexReader reader = iw.getReader()) {
259+
SearchExecutionContext context = createSearchExecutionContext(newSearcher(reader));
260+
RankDocsQueryBuilder queryBuilder = new RankDocsQueryBuilder(new RankDoc[] { new RankDoc(0, -1.0f, 0) }, null, false);
261+
IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, () -> queryBuilder.doToQuery(context));
262+
assertEquals("RankDoc scores must be positive values. Missing a normalization step?", ex.getMessage());
263+
}
264+
}
265+
}
254266
}

0 commit comments

Comments
 (0)