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]

Reply via email to