I have been doing some reading and think something that I am doing icould be
a problem.  For each search of an index,  I first check to see if the
IndexReader is current and  if not reopen it... I think I should not reopen
the IndexReader until I make sure that there are no other queries running
using this searcher/reader.  Could this be causing my Input/Output error?


Michael McCandless-2 wrote:
> 
> 
> What OS/filesystem are you using?
> 
> The code looks fine to me.  2 or more searches running at the same  
> time on the same index should be harmless; this happens in Lucene all  
> the time in normal applications.
> 
> Are you sure you're re-using already opened Searchers, and not  
> accidentally opening a new searcher per user's search?
> 
> Is it possible you are running out of file descriptors? That  
> IOException (generic Input/output error) means there is a low level IO  
> issue.
> 
> Mike
> 
> JulieSoko wrote:
> 
>>
>> 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]
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Lucene-Input-Output-error-tp20156805p20169473.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