Подтвердить что ты не робот

Как восстановить поврежденный индекс lucene?

Мой сервер потерял мощность, и индекс lucene был поврежден. Я запустил IndexChecker, но он не работает:

java -cp /home/dthoai/programs/paesia/checker/lucene-core-3.5.0.jar -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex /mnt/peda/paesia/index -fix


Opening index @ /mnt/peda/paesia/index

ERROR: could not read any segments file in directory
java.io.IOException: read past EOF: MMapIndexInput(path="/mnt/peda/paesia/index/segments_ls0l")
at org.apache.lucene.store.MMapDirectory$MMapIndexInput.readByte(MMapDirectory.java:279)
at org.apache.lucene.store.ChecksumIndexInput.readByte(ChecksumIndexInput.java:41)
at org.apache.lucene.store.DataInput.readInt(DataInput.java:84)
at org.apache.lucene.store.DataInput.readLong(DataInput.java:126)
at org.apache.lucene.index.SegmentInfo.<init>(SegmentInfo.java:202)
at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:286)
at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:363)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:754)
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:593)
at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:359)
at org.apache.lucene.index.CheckIndex.checkIndex(CheckIndex.java:327)
at org.apache.lucene.index.CheckIndex.main(CheckIndex.java:1007)

Как я могу восстановить свой индекс lucene?

4b9b3361

Ответ 1

Похоже, что основной файл каталога, segment_N поврежден. Вероятно, это означает, что потери мощности произошли во время выполнения фиксации.

Если это так, это означает, что есть некоторый шанс, что в вашем каталоге присутствует более старый файл segment_N и что ссылочные сегменты все еще присутствуют и действительны. Если есть такой файл, попробуйте удалить поврежденный файл segments_ls0l и посмотрите:

  • может ли Lucene открыть индекс,
  • какие данные вам не хватает.

В противном случае есть несколько потоков, которые один пользовательский список рассылки Lucene говорит о восстановлении файла segment_N.

Перед выполнением любых изменений обязательно создайте резервную копию своего каталога.