SegmentInfo (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.index, class: SegmentInfo

Package 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
  Modifier and Type
  Field
  Description
  `final Directory`
  `dir`
  Where this segment resides.
  `final String`
  `name`
  Unique segment name in the directory.
  `static final int`
  `NO`
  Used by some member fields to mean not present (e.g., norms, deletions).
  `static final int`
  `YES`
  Used by some member fields to mean present (e.g., norms, deletions).

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addDiagnostics(Map<String,String> diagnostics)`
  Adds or modifies this segment's diagnostics.
  `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.
  `boolean`
  `getHasBlocks()`
  Returns true if this segment contains documents written as blocks.
  `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 Details

  - ### 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 Details

  - ### SegmentInfo

    public SegmentInfo(Directory dir, Version version, Version minVersion, String name, int maxDoc, boolean isCompoundFile, boolean hasBlocks, 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 Details

  - ### addDiagnostics

    public void addDiagnostics(Map<String,String> diagnostics)
    Adds or modifies this segment's diagnostics.

    Entries in the given map whose keys are not present in the current diagnostics are added. Otherwise, existing entries are modified with the given map's value.

    Parameters:
      `diagnostics` - the additional diagnostics

  - ### 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.

  - ### getHasBlocks

    public boolean getHasBlocks()
    Returns true if this segment contains documents written as blocks.
    See Also:
      - `LeafMetaData.hasBlocks()`

  - ### 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(int delCount)
    Used for debugging. Format may suddenly change.

    Current format looks like `_a(3.1):c45/4`, 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).

    There is also `toStringVerbose()` that includes more info about the segment. It is be used to print detailed info when the segment is first written or read.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### 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.