Hi everyone,
We performed testing of the concurrent rewrite for knn vector queries in
Lucene 9.7 and the results look great, we see up to x9 improvement on large
datasets.

Our current implementation for intra-query concurrency relies on a single
IndexSearcher per index which is always configured with an executor. The
intention is to execute only heavy / long running queries in concurrent
mode, so we use either Collector or CollectorManager API to control this
behavior. But the concurrent rewrite in KnnVectorQuery is effectively
always enabled if the IndexSearcher is configured with an executor, so we
need to find another way to turn it on and off when needed.

Knowing that IndexSearcher#search(Query, Collector) is going to be removed
<https://issues.apache.org/jira/browse/LUCENE-10002> eventually, and a similar
change <https://github.com/apache/lucene/pull/632> was implemented for
DrillSideays, my understanding is that the long-term plan is to rely only
on the presence of the executor in IndexSearcher to select the
sequential/concurrent code path. Is this correct, or would people be open
to introducing an additional flag (e.g. in IndexSearch#search) to be able
to override the default behavior?

--
Regards,
Alex

Reply via email to