Class CheckIndex
As this tool checks every byte in the index, on a large index it can take quite a long time to run.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Returned fromcheckIndex()
detailing the health and status of the index. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns aCheckIndex.Status
instance detailing the state of the index.checkIndex
(List<String> onlySegments) Returns aCheckIndex.Status
instance detailing the state of the index.void
fixIndex
(CheckIndex.Status result) Repairs the index using previously returned result fromcheckIndex()
.boolean
static void
Command-line interface to check and fix an index.void
setCrossCheckTermVectors
(boolean v) If true, term vectors are compared against postings to make sure they are the same.void
setInfoStream
(PrintStream out) Set infoStream where messages should go.void
setInfoStream
(PrintStream out, boolean verbose) Set infoStream where messages should go.testDocValues
(AtomicReader reader, PrintStream infoStream) Test docvalues.testFieldNorms
(AtomicReader reader, PrintStream infoStream) Test field norms.testPostings
(AtomicReader reader, PrintStream infoStream) Test the term index.testPostings
(AtomicReader reader, PrintStream infoStream, boolean verbose) Test the term index.testStoredFields
(AtomicReader reader, PrintStream infoStream) Test stored fields.testTermVectors
(AtomicReader reader, PrintStream infoStream) Test term vectors.testTermVectors
(AtomicReader reader, PrintStream infoStream, boolean verbose, boolean crossCheckTermVectors) Test term vectors.
-
Constructor Details
-
CheckIndex
Create a new CheckIndex on the directory.
-
-
Method Details
-
setCrossCheckTermVectors
public void setCrossCheckTermVectors(boolean v) If true, term vectors are compared against postings to make sure they are the same. This will likely drastically increase time it takes to run CheckIndex! -
getCrossCheckTermVectors
public boolean getCrossCheckTermVectors() -
setInfoStream
Set infoStream where messages should go. If null, no messages are printed. If verbose is true then more details are printed. -
setInfoStream
Set infoStream where messages should go. SeesetInfoStream(PrintStream,boolean)
. -
checkIndex
Returns aCheckIndex.Status
instance detailing the state of the index.As this method checks every byte in the index, on a large index it can take quite a long time to run.
WARNING: make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
checkIndex
Returns aCheckIndex.Status
instance detailing the state of the index.- Parameters:
onlySegments
- list of specific segment names to checkAs this method checks every byte in the specified segments, on a large index it can take quite a long time to run.
WARNING: make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
testFieldNorms
public static CheckIndex.Status.FieldNormStatus testFieldNorms(AtomicReader reader, PrintStream infoStream) Test field norms. -
testPostings
public static CheckIndex.Status.TermIndexStatus testPostings(AtomicReader reader, PrintStream infoStream) Test the term index. -
testPostings
public static CheckIndex.Status.TermIndexStatus testPostings(AtomicReader reader, PrintStream infoStream, boolean verbose) Test the term index. -
testStoredFields
public static CheckIndex.Status.StoredFieldStatus testStoredFields(AtomicReader reader, PrintStream infoStream) Test stored fields. -
testDocValues
public static CheckIndex.Status.DocValuesStatus testDocValues(AtomicReader reader, PrintStream infoStream) Test docvalues. -
testTermVectors
public static CheckIndex.Status.TermVectorStatus testTermVectors(AtomicReader reader, PrintStream infoStream) Test term vectors. -
testTermVectors
public static CheckIndex.Status.TermVectorStatus testTermVectors(AtomicReader reader, PrintStream infoStream, boolean verbose, boolean crossCheckTermVectors) Test term vectors. -
fixIndex
Repairs the index using previously returned result fromcheckIndex()
. Note that this does not remove any of the unreferenced files after it's done; you must separately open anIndexWriter
, which deletes unreferenced files when it's created.WARNING: this writes a new segments file into the index, effectively removing all documents in broken segments from the index. BE CAREFUL.
WARNING: Make sure you only call this when the index is not opened by any writer.
- Throws:
IOException
-
main
Command-line interface to check and fix an index.Run it like this:
java -ea:org.apache.lucene... org.apache.lucene.index.CheckIndex pathToIndex [-fix] [-verbose] [-segment X] [-segment Y]
-fix
: actually write a new segments_N file, removing any problematic segments-segment X
: only check the specified segment(s). This can be specified multiple times, to check more than one segment, eg-segment _2 -segment _a
. You can't use this with the -fix option.
WARNING:
-fix
should only be used on an emergency basis as it will cause documents (perhaps many) to be permanently removed from the index. Always make a backup copy of your index before running this! Do not run this tool on an index that is actively being written to. You have been warned!Run without -fix, this tool will open the index, report version information and report any exceptions it hits and what action it would take if -fix were specified. With -fix, this tool will remove any segments that have issues and write a new segments_N file. This means all documents contained in the affected segments will be removed.
This tool exits with exit code 1 if the index cannot be opened or has any corruption, else 0.
- Throws:
IOException
InterruptedException
-