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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to