[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lucene-dev
Subject:    Re: Enabling concurrent search only for certain queries
From:       Adrien Grand <jpountz () gmail ! com>
Date:       2023-07-19 14:29:09
Message-ID: CAPsWd+NcXhnsKMPWzm75xftzE8Ww0zpSnGHfBeSvXb3K2VJiag () mail ! gmail ! com
[Download RAW message or body]

Hi Alexander,

It sounds likely that it will always be possible to pass an Executor
to IndexSearcher's constructor. So this sounds like a safe bet.

On Wed, Jul 19, 2023 at 7:22 AM Alexander Lukyanchikov
<alexanderlukyanchikov@gmail.com> wrote:
> 
> 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 <jpountz@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 \
> > <alexanderlukyanchikov@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 \
> > > eventually, and a similar change 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
> > > 


-- 
Adrien

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic