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.


-- 
Regards,
Samar

Reply via email to