If another thread is executing a query with the handle to one of readers[i] you're going to kill it since the IndexReader is now closed. Just don't call the IndexReader#close() method. If nothing is pointing at the readers they should be garbage collected. Also, you might want to warm up your new IndexSearcher before you switch to it, meaning run a few queries on it before you swap the old one out.
M On Tue, Feb 24, 2009 at 12:48 PM, Amin Mohammed-Coleman <ami...@gmail.com>wrote: > The reason for the indexreader.reopen is because I have a webapp which > enables users to upload files and then search for the documents. If I > don't > reopen i'm concerned that the facet hit counter won't be updated. > > On Tue, Feb 24, 2009 at 8:32 PM, Amin Mohammed-Coleman <ami...@gmail.com > >wrote: > > > Hi > > I have been able to get the code working for my scenario, however I have > a > > question and I was wondering if I could get some help. I have a list of > > IndexSearchers which are used in a MultiSearcher class. I use the > > indexsearchers to get each indexreader and put them into a > MultiIndexReader. > > > > IndexReader[] readers = new IndexReader[searchables.length]; > > > > for (int i =0 ; i < searchables.length;i++) { > > > > IndexSearcher indexSearcher = (IndexSearcher)searchables[i]; > > > > readers[i] = indexSearcher.getIndexReader(); > > > > IndexReader newReader = readers[i].reopen(); > > > > if (newReader != readers[i]) { > > > > readers[i].close(); > > > > } > > > > readers[i] = newReader; > > > > > > > > } > > > > multiReader = new MultiReader(readers); > > > > OpenBitSetFacetHitCounter facetHitCounter = > newOpenBitSetFacetHitCounter(); > > > > IndexSearcher indexSearcher = new IndexSearcher(multiReader); > > > > > > I then use the indexseacher to do the facet stuff. I end the code with > > closing the multireader. This is causing problems in another method > where I > > do some other search as the indexreaders are closed. Is it ok to not > close > > the multiindexreader or should I do some additional checks in the other > > method to see if the indexreader is closed? > > > > > > > > Cheers > > > > > > P.S. Hope that made sense...! > > > > > > On Mon, Feb 23, 2009 at 7:20 AM, Amin Mohammed-Coleman <ami...@gmail.com > >wrote: > > > >> Hi > >> > >> Thanks just what I needed! > >> > >> Cheers > >> Amin > >> > >> > >> On 22 Feb 2009, at 16:11, Marcelo Ochoa <marcelo.oc...@gmail.com> > wrote: > >> > >> Hi Amin: > >>> Please take a look a this blog post: > >>> > >>> > http://sujitpal.blogspot.com/2007/04/lucene-search-within-search-with.html > >>> Best regards, Marcelo. > >>> > >>> On Sun, Feb 22, 2009 at 1:18 PM, Amin Mohammed-Coleman < > ami...@gmail.com> > >>> wrote: > >>> > >>>> Hi > >>>> > >>>> Sorry to re send this email but I was wondering if I could get some > >>>> advice > >>>> on this. > >>>> > >>>> Cheers > >>>> > >>>> Amin > >>>> > >>>> On 16 Feb 2009, at 20:37, Amin Mohammed-Coleman <ami...@gmail.com> > >>>> wrote: > >>>> > >>>> Hi > >>>>> > >>>>> I am looking at building a faceted search using Lucene. I know that > >>>>> Solr > >>>>> comes with this built in, however I would like to try this by myself > >>>>> (something to add to my CV!). I have been looking around and I found > >>>>> that > >>>>> you can use the IndexReader and use TermVectors. This looks ok but > I'm > >>>>> not > >>>>> sure how to filter the results so that a particular user can only see > a > >>>>> subset of results. The next option I was looking at was something > like > >>>>> > >>>>> Term term1 = new Term("brand", "ford"); > >>>>> Term term2 = new Term("brand", "vw"); > >>>>> Term[] termsArray = new Term[] { term1, term2 };un > >>>>> int[] docFreqs = indexSearcher.docFreqs(termsArray); > >>>>> > >>>>> The only problem here is that I have to provide the brand type each > >>>>> time a > >>>>> new brand is created. Again I'm not sure how I can filter the > results > >>>>> here. > >>>>> It may be that I'm using the wrong api methods to do this. > >>>>> > >>>>> I would be grateful if I could get some advice on this. > >>>>> > >>>>> > >>>>> Cheers > >>>>> Amin > >>>>> > >>>>> P.S. I am basically trying to do something that displays the > following > >>>>> > >>>>> Personal Contact (23) Business Contact (45) and so on.. > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>> > >>> > >>> > >>> -- > >>> Marcelo F. Ochoa > >>> http://marceloochoa.blogspot.com/ > >>> http://marcelo.ochoa.googlepages.com/home > >>> ______________ > >>> Want to integrate Lucene and Oracle? > >>> > >>> > http://marceloochoa.blogspot.com/2007/09/running-lucene-inside-your-oracle-jvm.html > >>> Is Oracle 11g REST ready? > >>> http://marceloochoa.blogspot.com/2008/02/is-oracle-11g-rest-ready.html > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > >>> For additional commands, e-mail: java-user-h...@lucene.apache.org > >>> > >>> > > >