Hello All,
  First of all I’m new to Lucene, and have written code using it to search
over 1 to man indexes, using a user defined query. 
 I don't have any code on this system so have to type everything in here... 
I have the following design but am getting
 An Input / Output error exception which I have typed in a part of it below. 
My question is this?  Do I have  glaring flaw
In this design?  I am reusing the IndexSearchers/IndexReaders and not
closing them.   The input/output error arises when 2 or
More searches occur at the same time over some of the same indexes.  Can you
give me some direction where I should look 
For the solution to the exception?

Here is an explanation of my  
    Data:
        Up to 60 different indexes used at a time  
         1 directory per 1 day of data
        Millions of documents per day
        Data  is received and indexes  merged on a continual bases - whole
separate process

    Index contains
            value: content    eventType: type of data   eventTime: time data
collected

    1 to many users can create individual queries containing 1 or more of
the fields and values
    searching over 1 to many indexes 

    Design:
         Utilize the IndexAccessor classes  to cache
IndexSearcher/IndexReaders i.e. they are made one per index  and never
closed.
       

         Use a ParallelMultiSearcher  - create one per request using 1 to
many of the indexes

         try {
         QueryParser parser = new QueryParser("value", new
StandardAnalyzer(0);
         parser.setDefaultOperator(QueryParser.AND_OPERATOR);
         Query query = parser.parse(queryString);

        TopDocCollector col = new TopDocCollector(MAX_NUMBER_HITS);
        multiSearcher.search(query, new
RangeFilter("eventTime",startTime,endTime,true,true),col);
        int numHits = col.getTotalHits(0);
        TopDocs docs = col.topDocs();
    
        if (numHits > 0))
          for (int i=0; i< numHits && i< MAX_NUMBER_HITS; i++)[
            Document doc = multiSearcher.doc(docs.scoreDocs[i].doc);
              ....
          }
      
     }catch(Exception e  ){
         e.printStackTrace();
  } finally{
      //IndexSearchers are not closed since shared by many users
}
           


         
When the second user accesses directories used by the first query then I get
the following error:

java.io.IOException: Input/output error
 java.io.RandomAccessFile.readBytes(Native Method)
 java.io.RandomAccessFile.read(RandomAccessFile.java:315)
 at
org.apache.lucene.store.FSDirecotry$FSIndexInput.readInternal(FSDirectory.java:550)
 at
org.apache.lucene.store.BufferedIndexInput.readBytes(BufferedInputInput.java:131)
 at
org.apache.lucene.index.CompoundFileReader$CSIndexInput.readInternal(CompoundFileReader.java:240)
at
org.apache.lucene.instoreBufferedIndexInput.refill(BufferedIndexInput.java:
152)
at
org.apache.lucene.instoreBufferedIndexInput.readByte(BufferedIndexInput.java:
152)
at org.lucene.store.IndexInput.readVInt(IndexInput.java:76)
at org.apache.lucene.index.TermBuffer.read(TermBuffer.java:63)
at org.apache.lucene.index.SegmentTermEnum.next(SegmentTermEnum.java:123)
at org.apache.lucene.index.SegmentTermEnum.scanTo(SegmentTermEnum.java:154)
at
org.apache.lucene.index.TermInfosReader.scanEnum(TermInfosReader.java:223)
at org.apache.lucene.index.TermInfosReader.get(TermInfosReader.java:217)
at org.apache.lucene.index.SegmentReader.docFreq(SegmentReader.java:678)
at org.apache.lucene.search.IndexSearcher.docFreq(IndexSearcher.java:87)
at org.apache.lucene.search.Searcher.docFreqs(searcher.java:118)
at
org.apache.lucene.search.MultiSearcher.createWeight(MultiSearcher.java:311)
at org.apache.lucene.search.Searcher.search(Searcher.java:178)

Thanks!

-- 
View this message in context: 
http://www.nabble.com/Lucene-Input-Output-error-tp20156805p20156805.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to