lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Erick Erickson" <erickerick...@gmail.com>
Subject Re: IndexSearcher cache
Date Mon, 05 Mar 2007 12:34:38 GMT
There was quite a long discussion thread on this topic relatively
recently, try searching the archive for concurrence, perhaps
IndexReader, etc.

The short take-away is that you should share a single instance
of the reader, since opening one is an expensive operation, and
the first searches you perform will incur some overhead while
underlying caches are built. You have to build in some mechanisms
for gracefully shutting it down when you need to re-open them if they
are being shared....

Erick


On 3/4/07, MC Moisei <mcmoisei@comcast.net> wrote:
>
> Daniel,
>
> Thanks for replying. THe only reason I don't close my indexSearcher is
> that I got the "Too Many File Open Exception" and I decided to make my
> searcher static in the SearchService.
>
> If I do go and close then open a new one I may expose myself to some
> concurent access issues while people can update their files other can do
> the searches for those files ( My searcheables are files entities)
>
> Since the IndexSearcher has an underlying IndexReader I should use that
> one to handle the reads in the Interceptor but that won't do me too much
> good since I need certain methods that are no in IndexReader ( and  BTW
> i thought I've mentioned that I use the IndexModifier that is a mixture
> of the IndexReader and IndexWriter ).
>
> Any ideas ?
>
> MC
>
>
>
> Daniel Noll wrote:
> > MC Moisei wrote:
> >> Hi to all members of the user group!
> >>
> >> Let me get to my problem. I use Lucene in two different parts of the
> >> application. One is the SearchService and one is an AOP interceptor
> that
> >> intercepts any changes in the Searcheable entities. This last part is
> >> removing the document from the index and add the document again.
> >>
> >> That being said, here's my test case.
> >>
> >> My searcheable item has in content "apple banana" if I search for apple
> >> or banana I get it back amoung the results.
> >> If I modify it and remove banana from content when I search for apple
> or
> >> banana I get same results as above (!?)
> >> If I restart my application so the IndexSearcher is recreated, I run
> the
> >> test above I only get my document if I search for apple - that leads me
> >> to conclude that the IndexSearcher caches the results.
> >
> > It doesn't "cache" the results, but what happens is the underlying
> > IndexReader effectively sees no changes for its lifetime (this is
> > presumably for safety; since usually you don't want the index changing
> > underneath while trying to do queries.)
> >
> >> Is there a way to clear IndexSeacher when I do the reindexing ( I use
> >> IndexModifer for the AOP interceptor) ?
> >
> > Yep.  Close the IndexSearcher and the IndexReader, and reopen them.
> >
> > If you need to do queries quite often then it probably makes sense to
> > do this only every now and then.
> >
> > Daniel
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message