You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2025/03/31 14:45:06 UTC

(lucene) branch branch_10x updated: quick exit on filter query matching no docs when rewriting knn query (#14418)

This is an automated email from the ASF dual-hosted git repository.

jpountz pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/branch_10x by this push:
     new 1ae60d4f6dd quick exit on filter query matching no docs when rewriting knn query (#14418)
1ae60d4f6dd is described below

commit 1ae60d4f6dd3d7447f3fda6dcbe11fa786cfa819
Author: panguixin <pa...@bytedance.com>
AuthorDate: Mon Mar 31 22:44:33 2025 +0800

    quick exit on filter query matching no docs when rewriting knn query (#14418)
---
 lucene/CHANGES.txt                                                     | 2 +-
 .../core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 709d0b4354e..eadfeb68d2e 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -19,7 +19,7 @@ Improvements
 
 Optimizations
 ---------------------
-(No changes)
+* GITHUB#14418: Quick exit on filter query matching no docs when rewriting knn query. (Pan Guixin)
 
 Bug Fixes
 ---------------------
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 c7c9d27f39f..bdedc23fb88 100644
--- a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
@@ -81,6 +81,9 @@ abstract class AbstractKnnVectorQuery extends Query {
               .add(new FieldExistsQuery(field), BooleanClause.Occur.FILTER)
               .build();
       Query rewritten = indexSearcher.rewrite(booleanQuery);
+      if (rewritten.getClass() == MatchNoDocsQuery.class) {
+        return rewritten;
+      }
       filterWeight = indexSearcher.createWeight(rewritten, ScoreMode.COMPLETE_NO_SCORES, 1f);
     } else {
       filterWeight = null;