jpountz commented on a change in pull request #656:
URL: https://github.com/apache/lucene/pull/656#discussion_r801354469



##########
File path: 
lucene/core/src/java/org/apache/lucene/codecs/lucene91/Lucene91HnswVectorsReader.java
##########
@@ -227,16 +231,36 @@ public TopDocs search(String field, float[] target, int 
k, Bits acceptDocs) thro
 
     // bound k by total number of vectors to prevent oversizing data structures
     k = Math.min(k, fieldEntry.size());
-
     OffHeapVectorValues vectorValues = getOffHeapVectorValues(fieldEntry);
+
+    DocIdSetIterator acceptIterator = null;
+    int visitedLimit = Integer.MAX_VALUE;
+
+    if (acceptDocs instanceof BitSet acceptBitSet) {

Review comment:
       I think I have a preference for option 2
    - This feels like a high-level query planning decision, which belongs more 
to the query API than to the codec API.
    - My gut feeling is that a limit on the number of considered candidates is 
something that would be generalizable to most NN algorithms.
    - Queries might have better options than a BitSet at times, e.g. if the 
filter is a `IndexSortSortedNumericDocValuesRangeQuery`, then you could have 
both a Bits and DocIdSetIterator view of the matches that do not require 
materializing a BitSet.
    - Vectors are currently not handled by `ExitableDirectoryReader`. Option 1 
would require adding a BitSet wrapper, while we'd like to keep the number of 
sub classes of `BitSet` to exactly 2, a case that the JVM handles better. With 
option 2 we could go with just a `Bits` wrapper that would check the timeout 
whenever `Bit#get` is called?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to