Yesterday, when typing a reply I noticed an error ... the
CheckIndex.check
was not checking a good directory.. so the segments not found error
was not
correct. I apologize. I made the correction and this is the
correct error
that occurs when an i/o error is thrown. I ran the CheckIndex.check
method
after the i/o exception was caught:
Segments file=segments_296 numSegments=1
version=FORMAT_SHARED_DOC_STORE
[Lucene 2.3]
1 of 1: name=+1dq docCount=1788454
compund=true
numFiles=1
size (MB) = 331.125
no deletions
test: open reader....... OK
test: fields, norms...... OK [4 fields]
test: terms, freq, prox...2008-11-05 15:12:33,357 INFO Cache:195 -
Purging 0 of 4 Cached results.
2008-11-05 15:12:33,358 INFO Cache: 196 - 956018816 of 1073676288
bytes of
memory are currently free
OK [3409802 terms; 19311204 terms/docs pairs; 19842525 tokens]
test: stored fields....... Wed Nov 05 15:12:59 UTC 2008: Purging
Query
Cache 0 of 9 query cached results.
Wed Nov 05 15:12:59 UTC 2008: 955521656 of 1073676288 bytes of
memory are
currently free.
FAILED
WARNING: would remove reference to this segment (-fix was not
specified); full exception:
java.io.IOException: Input/Output error
at java.io.RandomAccessfile.readBytes(Native Method)
at java.io.RandomAccessFile.read(RandomAccessfile.java:315)
at
org.apache.lucene.store.FSDirectory
$FSIndexInput.readInternal(FSDirectory.java:550)
at
org
.apache
.lucene.store.BufferedIndexInput.readBytes(BufferedIndexInput.java:
131)
at
org.apache.lucene.index.CompoundFileReader
$CSIndexInput.readInternal(CompoundFileReader.java:240)
at
org
.apache
.lucene.store.BufferedIndexInput.refill(bufferedIndexInput.java:152)
at
org
.apache
.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:38)
at org.apache.lucene.store.IndexInput.readChars(IndexInput.java:126)
at org.apache.lucene.store.IndexInput.readString(IndexInput.java:112)
at org.apache.lucene.index.FieldsReader.addfield(FieldsReader.java:
324)
at org.apache.lucene.index.FieldsReader.doc(FieldsReader.java:166)
at
org.apache.lucene.index.SegmentReader.document(SegmentReader.java:659)
at org.apache.lucene.index.IndexReader.document(IndexReader.java:525)
at org.apache.lucene.index.CheckIndex.check(checkIndex.java:234)
at
gminer
.rest
.content
.RestContentSearchServlet.doGet(RestContentSearchServlet.java:269)
.................. continues on and then
WARNING: 1 broken segments detected
WARNING: 1788454 documents would be lost if -fix were specified
NOTE: would write new segments file [-fix was not specified]
************************************************
Then I wrote out the return status from the check method call and it
was "
false".
The Normal Input/Output error follows...
NOW, I am leaving the IndexSearcher open for the current day and if I
resubmit the query... the query will most likely work the 2nd
time... Is
there something to be done to the index so that there are not the
errors
above?
I appreciate all your help.
Julie
JulieSoko wrote:
I am narrowing down this problem that I have had for a week
now... I am
using lucene version 2.3.1 and 64 bit java versio 1.5.0-12-b04
running on
Linux box. We are merging indexes every 60 seconds and there are
1..*
searches occuring at anytime on the indexes. The problem is that
we will
get an Input /Output error trying to read the index for a search
randomly... say every 5th search. I have posted the error before,
but
have narrowed it down, I believe, to a merge issue.
This is the error that a searcher will output at random times:
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)
******************************************************************************
NOW, when I get the above Exception, I check the index using the
CheckIndex.check method... As part of the check , this exception is
thrown:
Error: could not read any segments file in directory
java.io.FileNotFoundException: no segments* file found in
[EMAIL PROTECTED]/rt10/jetty/20081103
at
org.apache.lucene.index.SegmentInfos
$findSegmentsFile.run(SegementInfos.java:587)
.....
Is there any point in the merging of indexes that the segment files
are
removed? If I rerun the search, right after this error occurs, the
search is ok... I do open a new IndexSearcher...
The IndexWriter code is this:
IndexWriter combinedWriter = new IndexWriter(currentMergeDir, new
StandardAnalyzer());
combinedWriter.addIndexes(dirToMerge);
combinedWriter.flush();
combinedWriter.close();
As you can see above, each time there is a merge a new IndexWriter is
created, indexes added, flushed and closed.
I know you are not supposed to have synchronization issues between
writing
and flushing , but could there be an issue when you are creating a
new
searcher at the instant where the files are merged and there are no
segments in a dir???
Thanks,
Julie
--
View this message in context:
http://www.nabble.com/No-segment-files-found--Searcher-error-tp20305354p20343211.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]