Yes, 1 IndexWriter + multiple IndexSearchers definitely work together :) I can't tell what you're doing wrong with the threads... it looks like you might be opening multiple IndexWriters on the same index/directory (big no no).
Otis ----- Original Message ---- From: Nikhil Goel <[EMAIL PROTECTED]> To: java-user@lucene.apache.org Sent: Wednesday, March 22, 2006 6:04:41 PM Subject: Multiple threads in Lucene Hi Lucene Developers, According to Lucene Documentation, IndexWriter can exist with multiple IndexSearcher and its thread safe. To verify that: I wrote a simple program to simulate that condition but unfortunately I get an exception. Please let me know if anyone has ever tested the Lucene claim that IndexWriter and IndexSearcher are thread safe. I have a program in which I have 4 threads. 1) One IndexWriter Thread 2) 3 IndexSearcher Thread. Everytime when we need to index a file. We run the following code in IndexWriter Thread:- function IndexFile(Document doc) { writer = new IndexWriter(directory, new StandardAnalyzer(), false); writer.addDocument(doc); writer.close(); } Our IndexSearcherThread looks like this:- function IndexSearch(String termToBeSearched) { IndexSearchersearcher = new IndexSearcher(directory); //Note: This directory is the same reference as used to initiate IndexWriter in Indexfile function. Hence this directory //reference is used across all the threads. Query query = QueryParser.parse(termToBeSearched, "contents", new StandardAnalyzer()); Hits hits = searcher.search(query); } If I execute these 4 threads above together, then whenever a search routine gets executed and IndexWriter is also in use, then I get an error at the following line:- writer.close(); Stack Strace looks like this:- unable to close the writer stream java.io.IOException: read past EOF at org.apache.lucene.store.InputStream.refill(InputStream.java:192) at org.apache.lucene.store.InputStream.readByte(InputStream.java:81) at org.apache.lucene.store.InputStream.readBytes(InputStream.java:95) at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java:375) at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java:342) at org.apache.lucene.index.SegmentMerger.mergeNorms(SegmentMerger.java :306) at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:99) at org.apache.lucene.index.IndexWriter.mergeSegments(IndexWriter.java :430) at org.apache.lucene.index.IndexWriter.flushRamSegments(IndexWriter.java :383) at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:193) Thanks in advance -Nikhil --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]