diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index 08f379c23db6..8ecc7015817c 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -168,6 +168,8 @@ Optimizations * GITHUB#15597, GITHUB#15777: Reduce memory usage of NeighborArray (Viliam Durina) +* GITHUB#12324: ELiminate redundant work in AbstractKnnVectorQuery.rewrite (Mike Sokolov) + Bug Fixes --------------------- * GITHUB#14049: Randomize KNN codec params in RandomCodec. Fixes scalar quantization div-by-zero diff --git a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java index 4bdd821ccba0..b877e81a1997 100644 --- a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java +++ b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java @@ -146,7 +146,9 @@ public Query rewrite(IndexSearcher indexSearcher) throws IOException { } assert leafReaderContexts.size() == tasks.size(); assert perLeafResults.size() == reader.leaves().size(); - topK = runSearchTasks(tasks, taskExecutor, perLeafResults, leafReaderContexts); + if (tasks.size() > 0) { + topK = runSearchTasks(tasks, taskExecutor, perLeafResults, leafReaderContexts); + } } if (topK.scoreDocs.length == 0) { return MatchNoDocsQuery.INSTANCE;