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]
