Thanks for the explanation, Uwe.


On Monday, January 5, 2015 7:30 PM, Uwe Schindler <u...@thetaphi.de> wrote:
Hi,

The documentation may be a bit incorrect, but in general it means: 
IndexSearcher is thread safe in regards to "searching". Getters/Setters are 
generally not thread safe for most classes. The documentation is mainly to 
prevent people from synchronizing any external calls, because this would be a 
disaster to do!

About your problem: Please use a new IndexSearcher for each different 
similarity. IndexSearcher is a very chaep object (it is just a Wrapper around 
the IndexReader), so it is only important to keep the IndexReader open. But for 
simplification, I would personally create a new IndexSearcher instance for 
every search request (...and I always do this).

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: u...@thetaphi.de


> -----Original Message-----
> From: Barry Coughlan [mailto:b.coughl...@gmail.com]
> Sent: Monday, January 05, 2015 3:40 PM
> To: java-user@lucene.apache.org; Ahmet Arslan
> Subject: Re: IndexSearcher.setSimilarity thread-safety
> 
> Hi Ahmet,
> 
> The IndexSearcher is "thread-safe", it's just that the similarity field is 
> shared
> between threads. I think that to most people it is implied that the 
> similarity is
> not thread-local, as this would be surprising behavior.
> 
> Ideally the similarity field would not be mutable to indicate this, but I
> suppose this would make the constructors very awkward.
> 
> Barry
> 
> On Mon, Jan 5, 2015 at 2:02 PM, Ahmet Arslan <iori...@yahoo.com.invalid>
> wrote:
> 
> > Hi Barry,
> >
> > Thanks for chiming in. Then javadocs needs correction, right?
> >
> > "multiple threads can call any of its methods, concurrently"
> >
> > Ahmet
> >
> >
> > On Monday, January 5, 2015 3:28 PM, Barry Coughlan
> > <b.coughl...@gmail.com>
> > wrote:
> > Just had a glance at the IndexSearcher code.
> >
> > Changing the similarity would not cause any failures. However the
> > change may not be immediately seen by all threads because the variable
> > is non-volatile (I'm open to correction on that...).
> >
> > If you need multiple threads to have different Similarity
> > implementations then you will need separate IndexSearcher instances.
> > You can use a single IndexReader for the IndexSearchers
> >
> > Barry
> >
> >
> > On Mon, Jan 5, 2015 at 1:10 PM, Ahmet Arslan
> > <iori...@yahoo.com.invalid>
> > wrote:
> >
> > >
> > >
> > > anyone?
> > >
> > >
> > >
> > > On Thursday, December 25, 2014 4:42 PM, Ahmet Arslan
> > > <iori...@yahoo.com.INVALID> wrote:
> > > Hi all,
> > >
> > > Javadocs says "IndexSearcher instances are completely thread safe,
> > meaning
> > > multiple threads can call any of its methods, concurrently"
> > >
> > > Is this true for setSimilarity() method?
> > >
> > > What happens when every thread uses different similarity
> implementations?
> > >
> > > Thanks,
> > > Ahmet
> > >
> > > --------------------------------------------------------------------
> > > - To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> > > For additional commands, e-mail: java-user-h...@lucene.apache.org

> > >
> > > --------------------------------------------------------------------
> > > - To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> > > For additional commands, e-mail: java-user-h...@lucene.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> > For additional commands, e-mail: java-user-h...@lucene.apache.org
> >
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to