org.apache.lucene.index

## Class SegmentInfo

- java.lang.Object
- - org.apache.lucene.index.SegmentInfo

    public final class SegmentInfo
    extends Object

Information about a segment such as its name, directory, and files related to the segment.

WARNING: This API is experimental and might change in incompatible ways in the next release.

### Field Summary

Fields
`Directory` `dir` Where this segment resides.
`String` `name` Unique segment name in the directory.
`static int` `NO` Used by some member fields to mean not present (e.g., norms, deletions).
`static int` `YES` Used by some member fields to mean present (e.g., norms, deletions).

### Constructor Summary

Constructors
Constructor and Description
`SegmentInfo(Directory dir, Version version, Version minVersion, String name, int maxDoc, boolean isCompoundFile, Codec codec, Map<String,String> diagnostics, byte[] id, Map<String,String> attributes, Sort indexSort)` Construct a new complete SegmentInfo instance from input.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addFile(String file)` Add this file to the set of files written for this segment.
`void` `addFiles(Collection<String> files)` Add these files to the set of files written for this segment.
`boolean` `equals(Object obj)` We consider another SegmentInfo instance equal if it has the same dir and same name.
`Set<String>` `files()` Return all files referenced by this SegmentInfo.
`String` `getAttribute(String key)` Get a codec attribute value, or null if it does not exist
`Map<String,String>` `getAttributes()` Returns the internal codec attributes map.
`Codec` `getCodec()` Return `Codec` that wrote this segment.
`Map<String,String>` `getDiagnostics()` Returns diagnostics saved into the segment when it was written.
`byte[]` `getId()` Return the id that uniquely identifies this segment.
`Sort` `getIndexSort()` Return the sort order of this segment, or null if the index has no sort.
`Version` `getMinVersion()` Return the minimum Lucene version that contributed documents to this segment, or `null` if it is unknown.
`boolean` `getUseCompoundFile()` Returns true if this segment is stored as a compound file; else, false.
`Version` `getVersion()` Returns the version of the code which wrote the segment.
`int` `hashCode()`
`int` `maxDoc()` Returns number of documents in this segment (deletions are not taken into account).
`String` `putAttribute(String key, String value)` Puts a codec attribute value.
`void` `setCodec(Codec codec)` Can only be called once.
`void` `setFiles(Collection<String> files)` Sets the files written for this segment.
`String` `toString()`
`String` `toString(int delCount)` Used for debugging.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### NO

    public static final int NO

Used by some member fields to mean not present (e.g., norms, deletions).

See Also:
  Constant Field Values

#### YES

    public static final int YES

Used by some member fields to mean present (e.g., norms, deletions).

See Also:
  Constant Field Values

#### name

    public final String name

Unique segment name in the directory.

#### dir

    public final Directory dir

Where this segment resides.

### Constructor Detail

#### SegmentInfo

    public SegmentInfo(Directory dir,
                       Version version,
                       Version minVersion,
                       String name,
                       int maxDoc,
                       boolean isCompoundFile,
                       Codec codec,
                       Map<String,String> diagnostics,
                       byte[] id,
                       Map<String,String> attributes,
                       Sort indexSort)

Construct a new complete SegmentInfo instance from input.

Note: this is public only to allow access from the codecs package.

### Method Detail

#### getDiagnostics

    public Map<String,String> getDiagnostics()

Returns diagnostics saved into the segment when it was written. The map is immutable.

#### getUseCompoundFile

    public boolean getUseCompoundFile()

Returns true if this segment is stored as a compound file; else, false.

#### setCodec

    public void setCodec(Codec codec)

Can only be called once.

#### getCodec

    public Codec getCodec()

Return `Codec` that wrote this segment.

#### maxDoc

    public int maxDoc()

Returns number of documents in this segment (deletions are not taken into account).

#### files

    public Set<String> files()

Return all files referenced by this SegmentInfo.

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### toString

    public String toString(int delCount)

Used for debugging. Format may suddenly change.

Current format looks like `_a(3.1):c45/4:[sorter=<long: "timestamp">!]`, which means the segment's name is `_a`; it was created with Lucene 3.1 (or '?' if it's unknown); it's using compound file format (would be `C` if not compound); it has 45 documents; it has 4 deletions (this part is left off when there are no deletions); it is sorted by the timestamp field in descending order (this part is omitted for unsorted segments).

#### equals

    public boolean equals(Object obj)

We consider another SegmentInfo instance equal if it has the same dir and same name.

Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### getVersion

    public Version getVersion()

Returns the version of the code which wrote the segment.

#### getMinVersion

    public Version getMinVersion()

Return the minimum Lucene version that contributed documents to this segment, or `null` if it is unknown.

#### getId

    public byte[] getId()

Return the id that uniquely identifies this segment.

#### setFiles

    public void setFiles(Collection<String> files)

Sets the files written for this segment.

#### addFiles

    public void addFiles(Collection<String> files)

Add these files to the set of files written for this segment.

#### addFile

    public void addFile(String file)

Add this file to the set of files written for this segment.

#### getAttribute

    public String getAttribute(String key)

Get a codec attribute value, or null if it does not exist

#### putAttribute

    public String putAttribute(String key,
                               String value)

Puts a codec attribute value.

This is a key-value mapping for the field that the codec can use to store additional metadata, and will be available to the codec when reading the segment via `getAttribute(String)`

If a value already exists for the field, it will be replaced with the new value. This method make a copy on write for every attribute change.

#### getAttributes

    public Map<String,String> getAttributes()

Returns the internal codec attributes map.

Returns:
  internal codec attributes map.

#### getIndexSort

    public Sort getIndexSort()

Return the sort order of this segment, or null if the index has no sort.