Do not close the searcher until you are done with the Hits object.
See the javadocs for Searchable.close()
http://lucene.apache.org/java/docs/api/org/apache/lucene/search/Searchable.html#close()
/Ronnie
Huinan wrote:
Hi,
I'm having a weird problem:
I created an index using IndexWriter. Then I had a piece of code which
searches the index, then print out a particular field of the first document
of the hits.(See the following code) As simple as that.
Hits hits = IndexSearchUtil.getHits(defaultIndexLocation, "A", "a");
System.out.println(hits.length()); // This prints 1.
Document doc = hits.doc(0); // <------But this will throw an
IOException, and this is the problem.
System.out.println(doc.get("A"));
The strange thing is that it DOES NOT ALWAYS throw an IOException. When I
have a small number (tens) of index entries, this works fine. But beyond a
certain threshold, It begins to throw up. :-(
Does anyone have the same problem? or could suggest what might have gone
wrong?
Thanks a lot!
Regards.
Huinan
Appendix
(inside IndexSearchUtil class)
public static Hits getHits(String indexLocation, String fieldName,
String key) throws IOException {
return getHits(indexLocation, fieldName, key, true);
}
public static Hits getHits(String indexLocation, String fieldName,
String key, boolean fieldTokenized) throws IOException {
IndexSearcher searcher = new IndexSearcher(indexLocation);
if (!fieldTokenized)
key = "\"" + key + "\"";
QueryParser parser = new QueryParser(fieldName, new
KeywordAnalyzer());
Query query;
try {
query = parser.parse(key);
Hits hits = searcher.search(query);
searcher.close();
return hits;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]