org.apache.lucene.index

## Class PersistentSnapshotDeletionPolicy

- java.lang.Object
- - org.apache.lucene.index.IndexDeletionPolicy
  - - org.apache.lucene.index.SnapshotDeletionPolicy
    - - org.apache.lucene.index.PersistentSnapshotDeletionPolicy

-     public class PersistentSnapshotDeletionPolicy
      extends SnapshotDeletionPolicy

  A `SnapshotDeletionPolicy` which adds a persistence layer so that snapshots can be maintained across the life of an application. The snapshots are persisted in a `Directory` and are committed as soon as `snapshot()` or `release(IndexCommit)` is called.

  NOTE: Sharing `PersistentSnapshotDeletionPolicy`s that write to the same directory across `IndexWriter`s will corrupt snapshots. You should make sure every `IndexWriter` has its own `PersistentSnapshotDeletionPolicy` and that they all write to a different `Directory`. It is OK to use the same Directory that holds the index.

  This class adds a `release(long)` method to release commits from a previous snapshot's `IndexCommit.getGeneration()`.

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

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `SNAPSHOTS_PREFIX` Prefix used for the save file.

    - ### Fields inherited from class org.apache.lucene.index.SnapshotDeletionPolicy

      `indexCommits, lastCommit, refCounts`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary, Directory dir)` `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting, passing `IndexWriterConfig.OpenMode.CREATE_OR_APPEND` by default.
    `PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary, Directory dir, IndexWriterConfig.OpenMode mode)` `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `getLastSaveFile()` Returns the file name the snapshots are currently saved to, or null if no snapshots have been saved.
    `void` | `release(IndexCommit commit)` Deletes a snapshotted commit.
    `void` | `release(long gen)` Deletes a snapshotted commit by generation.
    `IndexCommit` | `snapshot()` Snapshots the last commit.

    - ### Methods inherited from class org.apache.lucene.index.SnapshotDeletionPolicy

      `getIndexCommit, getSnapshotCount, getSnapshots, incRef, onCommit, onInit, releaseGen`

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SNAPSHOTS_PREFIX

          public static final String SNAPSHOTS_PREFIX

      Prefix used for the save file.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PersistentSnapshotDeletionPolicy

          public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary,
                                                  Directory dir)
                                           throws IOException

      `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting, passing `IndexWriterConfig.OpenMode.CREATE_OR_APPEND` by default.
      Parameters:
        `primary` - the `IndexDeletionPolicy` that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released via `release(org.apache.lucene.index.IndexCommit)`.
        `dir` - the `Directory` which will be used to persist the snapshots information.
      Throws:
        `IOException`

    - #### PersistentSnapshotDeletionPolicy

          public PersistentSnapshotDeletionPolicy(IndexDeletionPolicy primary,
                                                  Directory dir,
                                                  IndexWriterConfig.OpenMode mode)
                                           throws IOException

      `PersistentSnapshotDeletionPolicy` wraps another `IndexDeletionPolicy` to enable flexible snapshotting.
      Parameters:
        `primary` - the `IndexDeletionPolicy` that is used on non-snapshotted commits. Snapshotted commits, by definition, are not deleted until explicitly released via `release(org.apache.lucene.index.IndexCommit)`.
        `dir` - the `Directory` which will be used to persist the snapshots information.
        `mode` - specifies whether a new index should be created, deleting all existing snapshots information (immediately), or open an existing index, initializing the class with the snapshots information.
      Throws:
        `IOException`

  - ### Method Detail

    - #### snapshot

          public IndexCommit snapshot()
                               throws IOException

      Snapshots the last commit. Once this method returns, the snapshot information is persisted in the directory.
      Overrides:
        `snapshot` in class `SnapshotDeletionPolicy`
      Returns:
        the `IndexCommit` that was snapshotted.
      Throws:
        `IOException`
      See Also:
        `SnapshotDeletionPolicy.snapshot()`

    - #### release

          public void release(IndexCommit commit)
                       throws IOException

      Deletes a snapshotted commit. Once this method returns, the snapshot information is persisted in the directory.
      Overrides:
        `release` in class `SnapshotDeletionPolicy`
      Parameters:
        `commit` - the commit previously returned by `SnapshotDeletionPolicy.snapshot()`
      Throws:
        `IOException`
      See Also:
        `SnapshotDeletionPolicy.release(org.apache.lucene.index.IndexCommit)`

    - #### release

          public void release(long gen)
                       throws IOException

      Deletes a snapshotted commit by generation. Once this method returns, the snapshot information is persisted in the directory.
      Throws:
        `IOException`
      See Also:
        `IndexCommit.getGeneration()`, `SnapshotDeletionPolicy.release(org.apache.lucene.index.IndexCommit)`

    - #### getLastSaveFile

          public String getLastSaveFile()

      Returns the file name the snapshots are currently saved to, or null if no snapshots have been saved.

Copyright © 2000-2024 Apache Software Foundation. All Rights Reserved.