Hi Adrien,

Yes, that can be done. I just wanted to make sure my understanding is
correct and that's how the future API is going to look like before we do
this refactoring. Thank you.

--
Regards,
Alex


On Tue, Jul 18, 2023 at 3:26 PM Adrien Grand <jpou...@gmail.com> wrote:

> Hi Alexander,
>
> You mentioned that your current implementation relies on a single
> IndexSearcher. Could you have two instead? One that configures an executor
> for long running queries and another one that doesn't?
>
> For reference, IndexSearchers are cheap to create, it would be ok to
> create one per query if that helps.
>
>
> Le mar. 18 juil. 2023, 23:59, Alexander Lukyanchikov <
> alexanderlukyanchi...@gmail.com> a écrit :
>
>> 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