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]