Sorry, those methods do indeed require 2.4.0 -- I forgot it was only with 2.4.0 that we made them public.

If for some reason you can't upgrade, then you can always put your own incRef/decRef wrapper around the IndexReader.

Mike

JulieSoko wrote:


I was able to upgrade to the 2.3.2 version of Lucene... We do not have the
2.4.0 version in house ...
I am trying to facilitate downloading that version. I did notice that the incRef and decRef methods for the IndexReader are protected in both the 2.3.1 and 2.3.2 versions... How did you get around this or are you using
lucene 2.4.0?
Thanks!


Michael McCandless-2 wrote:


That would definitely cause problems for any searches still in flight
on the old IndexReader (though I'm not certain that generic Input/
output error IOException is what would be thrown).

You can use the IndexReader's incRef/decRef methods to ensure the
reader stays open for all in flight queries.  Call incRef when the
query starts in a synchronized block that ensures the reader isn't
being closed at the same time, and then decRef (in a finally clause)
when the query is completely finished.  Then you can call close() on
the old reader, and it will in fact remain open until all in flight
queries have decRef'd it.

Mike

JulieSoko wrote:


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]



---------------------------------------------------------------------
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-tp20156805p20189082.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]

Reply via email to