org.apache.lucene.index
Class PersistentSnapshotDeletionPolicy

java.lang.Object
  extended by org.apache.lucene.index.IndexDeletionPolicy
      extended by org.apache.lucene.index.SnapshotDeletionPolicy
          extended by org.apache.lucene.index.PersistentSnapshotDeletionPolicy
All Implemented Interfaces:
Cloneable

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 PersistentSnapshotDeletionPolicys that write to the same directory across IndexWriters 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
static String SNAPSHOTS_PREFIX
          Prefix used for the save file.
 
Fields inherited from class org.apache.lucene.index.SnapshotDeletionPolicy
indexCommits, lastCommit, refCounts
 
Constructor Summary
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
 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
clone, getIndexCommit, getSnapshotCount, getSnapshots, incRef, onCommit, onInit, releaseGen
 
Methods inherited from class java.lang.Object
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-2014 Apache Software Foundation. All Rights Reserved.