Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/Lucene.Net.Light.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/Index/IndexDeletionPolicy.cs')
-rw-r--r--src/core/Index/IndexDeletionPolicy.cs99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/core/Index/IndexDeletionPolicy.cs b/src/core/Index/IndexDeletionPolicy.cs
new file mode 100644
index 0000000..bef9924
--- /dev/null
+++ b/src/core/Index/IndexDeletionPolicy.cs
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+
+namespace Lucene.Net.Index
+{
+
+ /// <summary> <p/>Expert: policy for deletion of stale <see cref="IndexCommit">index commits</see>.
+ ///
+ /// <p/>Implement this interface, and pass it to one
+ /// of the <see cref="IndexWriter" /> or <see cref="IndexReader" />
+ /// constructors, to customize when older
+ /// <see cref="IndexCommit">point-in-time commits</see>
+ /// are deleted from the index directory. The default deletion policy
+ /// is <see cref="KeepOnlyLastCommitDeletionPolicy" />, which always
+ /// removes old commits as soon as a new commit is done (this
+ /// matches the behavior before 2.2).<p/>
+ ///
+ /// <p/>One expected use case for this (and the reason why it
+ /// was first created) is to work around problems with an
+ /// index directory accessed via filesystems like NFS because
+ /// NFS does not provide the "delete on last close" semantics
+ /// that Lucene's "point in time" search normally relies on.
+ /// By implementing a custom deletion policy, such as "a
+ /// commit is only removed once it has been stale for more
+ /// than X minutes", you can give your readers time to
+ /// refresh to the new commit before <see cref="IndexWriter" />
+ /// removes the old commits. Note that doing so will
+ /// increase the storage requirements of the index. See <a
+ /// target="top"
+ /// href="http://issues.apache.org/jira/browse/LUCENE-710">LUCENE-710</a>
+ /// for details.<p/>
+ /// </summary>
+
+ public interface IndexDeletionPolicy
+ {
+
+ /// <summary> <p/>This is called once when a writer is first
+ /// instantiated to give the policy a chance to remove old
+ /// commit points.<p/>
+ ///
+ /// <p/>The writer locates all index commits present in the
+ /// index directory and calls this method. The policy may
+ /// choose to delete some of the commit points, doing so by
+ /// calling method <see cref="IndexCommit.Delete()" />
+ /// of <see cref="IndexCommit" />.<p/>
+ ///
+ /// <p/><u>Note:</u> the last CommitPoint is the most recent one,
+ /// i.e. the "front index state". Be careful not to delete it,
+ /// unless you know for sure what you are doing, and unless
+ /// you can afford to lose the index content while doing that.
+ ///
+ /// </summary>
+ /// <param name="commits">List of current
+ /// <see cref="IndexCommit">point-in-time commits</see>,
+ /// sorted by age (the 0th one is the oldest commit).
+ /// </param>
+ void OnInit<T>(IList<T> commits) where T : IndexCommit;
+
+ /// <summary>
+ /// <p>This is called each time the writer completed a commit.
+ /// This gives the policy a chance to remove old commit points
+ /// with each commit.</p>
+ ///
+ /// <p>The policy may now choose to delete old commit points
+ /// by calling method <see cref="IndexCommit.Delete()"/>
+ /// of <see cref="IndexCommit" />.</p>
+ ///
+ /// <p>This method is only called when <see cref="IndexWriter.Commit()"/>
+ /// or <see cref="IndexWriter.Close()"/> is called, or possibly not at
+ /// all if the <see cref="IndexWriter.Rollback()"/> is called.</p>
+ ///
+ /// <p><u>Note:</u> the last CommitPoint is the most recent one,
+ /// i.e. the "front index state". Be careful not to delete it,
+ /// unless you know for sure what you are doing, and unless
+ /// you can afford to lose the index content while doing that.</p>
+ /// </summary>
+ /// <param name="commits">
+ /// List of <see cref="IndexCommit" />, sorted by age (the 0th one is the oldest commit).
+ /// </param>
+ void OnCommit<T>(IList<T> commits) where T : IndexCommit;
+ }
+} \ No newline at end of file