john-mlika commented on issue #16586:
URL: https://github.com/apache/lucene/issues/16586#issuecomment-5477778918

   the units are milliseconds per query, one segment, k=100.
   
   a filtered knn query on a segment with deletions builds its accept set one 
doc at a time instead of copying the cached filter's bitset. moreover, on a 
field where some docs have no vector it also ANDs a FieldExistsQuery into the 
filter, which turns the cached bitset into a fresh conjunction that can't be 
bulk copied either. both are O(docs in the segment) and sit in front of a 
search that's O(k log n), so on a big segment they cost more than the search 
itself, 1.7x and 2.5x per query in the benchmark. separately, for small filters 
the reader falls back to scanning every vector in the segment to score the few 
hundred accepted ones, and the threshold for doing that is a guess that's wrong 
by a factor of 2-5x on real data.


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to