lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Samarendra Pratap <>
Subject Reopening a Searcher for each request
Date Thu, 22 Apr 2010 10:38:44 GMT
Greetings to all.
 I have read at so many places that we should not open a Searcher for each
request for the sake of performance, but I have always been wondering
whether it is actually Searcher or Reader?

 I have a group of index amounting to 23G which actually contains of
different index directories. The structure is something like following

Main directory
|_________ country1
|                     |___ country1-time1 (actual index)
|                     |___ country1-time2 (actual index)
|                     |___ country1-time3 (actual index)
|_________ country2
                     |___ country2-time1 (actual index)
                     |___ country2-time2 (actual index)
                     |___ country2-time3 (actual index)

 When application starts I open IndexReaders on all of actual index
directories (country1-time1, country1-tim2, .... country2-time3) and keep
them in a pool.

 At the time of search, IndexSearchers are created by selecting the
appropriate IndexReaders from the pool. These IndexSearchers in turn are
used to create a ParallelMultiSearcher. Constructors of IndexSearcher and
ParallelMultiSearcher are run for every request.

 Now I believe that creating a pool of ParallelMultiSearcher itself is a
good idea but* I wanted to know if reopening **IndexSearchers** will really
degrade performance irrespective of **IndexReaders** being opened once*.

In my performance tests (which may not be very comprehensive) I didn't find
any noticeable difference.

Please throw some light.


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