Hi all, I have a client who has what appears to be a corrupted Lucene index. When they try and openthe index they get:
java.lang.IndexOutOfBoundsException: Index: 9634, Size: 97 at java.util.ArrayList.rangeCheck(ArrayList.java:638) at java.util.ArrayList.get(ArrayList.java:414) at org.apache.lucene.index.FieldInfos.fieldInfo(FieldInfos.java:255) at org.apache.lucene.index.FieldInfos.fieldName(FieldInfos.java:244) at org.apache.lucene.index.TermBuffer.read(TermBuffer.java:86) at org.apache.lucene.index.SegmentTermEnum.next(SegmentTermEnum.java:133) at org.apache.lucene.index.TermInfosReaderIndex.<init>(TermInfosReaderIndex.java:76) at org.apache.lucene.index.TermInfosReader.<init>(TermInfosReader.java:116) at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:83) at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:116) at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:94) at org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:105) at org.apache.lucene.index.ReadOnlyDirectoryReader.<init>(ReadOnlyDirectoryReader.java:27) at org.apache.lucene.index.DirectoryReader$1.doBody(DirectoryReader.java:78) at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:709) at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:72) at org.apache.lucene.index.IndexReader.open(IndexReader.java:256) Running CheckIndex didn't seem to really help: NOTE: testing will be more thorough if you run java with '-ea:org.apache.lucene...', so assertions are enabled Opening index @ C:\Issue\TextIndex Segments file=segments_2 numSegments=1 version=3.6.2 format=FORMAT_3_1 [Lucene 3.1+] 1 of 1: name=_64 docCount=1764481 compound=false hasProx=true numFiles=10 size (MB)=119.050,043 diagnostics = {os=Windows Server 2012, java.vendor=Oracle Corporation, java. version=1.8.0_05, lucene.version=3.6.2-SNAPSHOT - 2014-01-16 16:14:14, mergeMaxN umSegments=1, os.arch=amd64, source=merge, mergeFactor=20, os.version=6.2} no deletions test: open reader.........FAILED WARNING: fixIndex() would remove reference to this segment; full exception: java.lang.IndexOutOfBoundsException: Index: 9634, Size: 97 at java.util.ArrayList.rangeCheck(ArrayList.java:638) at java.util.ArrayList.get(ArrayList.java:414) at org.apache.lucene.index.FieldInfos.fieldInfo(FieldInfos.java:255) at org.apache.lucene.index.FieldInfos.fieldName(FieldInfos.java:244) at org.apache.lucene.index.TermBuffer.read(TermBuffer.java:86) at org.apache.lucene.index.SegmentTermEnum.next(SegmentTermEnum.java:133) at org.apache.lucene.index.TermInfosReaderIndex.<init>(TermInfosReaderIndex.java:76) at org.apache.lucene.index.TermInfosReader.<init>(TermInfosReader.java:116) at org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:83) at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:116) at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:94) at org.apache.lucene.index.CheckIndex.checkIndex(CheckIndex.java:523) at org.apache.lucene.index.CheckIndex.main(CheckIndex.java:1064) WARNING: 1 broken segments (containing 1764481 documents) detected WARNING: 1764481 documents will be lost NOTE: will write new segments file in 5 seconds; this will remove 1764481 docs f rom the index. THIS IS YOUR LAST CHANCE TO CTRL+C! 5... 4... 3... 2... 1... Writing... OK Wrote new segments file "segments_3" Are there any approaches to try and repair this index? It is 120 GB in size and there are no backups.. :-/ Cheers, David