Helen, I don't know what version of Lucene you are using. The version in CVS has IndexSearcher that can close the underlying IndexReader for you.
Otis --- Helen Warren <[EMAIL PROTECTED]> wrote: > Hi All, > I'm having some trouble closing an index reader. I'm getting a > IOException (bad file descriptor). Can anybody tell me what I'm doing > > wrong and how I should be closing this object? > > An outline of an extract of my code: > > // Make a new searcher (indexName passed in as string). > IndexReader myReader = IndexReader.open(indexName); > searcher = new IndexSearcher(myReader); > > //Create a snowball analyzer object. > //Create a MultifieldQueryParser object with the snowball analyzer > and > build a luceneQuery from a user entered search string. > //Create a new BooleanQuery (overallQuery), add the luceneQuery to it > > and add several other BooleanQueries specific to other fields in the > documents. > > // Do the search > hits = searcher.search(overallQuery); > > //close the IndexSearcher object > searcher.close(); > > //close the IndexReader object > myReader.close(); > > //return results > return hits; > > The myReader.close() line causes the IOException to be thrown. To try > > to debug, I wrote a simplified code to open and close a reader and > searcher, and in the process discovered something else that I have > found confusing: > Here's an extract of the simplified code: > > String indexName = "foo"; > > // Make a new searcher > IndexReader myReader = IndexReader.open(indexName); > IndexSearcher searcher = new IndexSearcher(myReader); > > //try to do something with the reader > Collection theseFields = myReader.getFieldNames(); > > //close the IndexSearcher object > searcher.close(); > > //try to close the reader now > myReader.close(); > > //now try to do something with the reader again; > try { > int maximum = myReader.maxDoc(); > System.err.println("Next document would be: "+maximum); > } > catch (Exception e) { > System.err.println("Exception: "+e.getMessage()); > } > In this case, the reader appears to close without error but even > after > I've called myReader.close() I can execute the maxDoc() method on > that > object and return results. Anybody shed any light? > > Thanks, > Helen. > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]