You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2008/07/04 11:43:13 UTC

svn commit: r673979 - in /lucene/java/trunk: ./ src/java/org/apache/lucene/index/ src/test/org/apache/lucene/index/

Author: mikemccand
Date: Fri Jul  4 02:43:12 2008
New Revision: 673979

URL: http://svn.apache.org/viewvc?rev=673979&view=rev
Log:
LUCENE-1325: add IndexCommit.isOptimized() method

Modified:
    lucene/java/trunk/CHANGES.txt
    lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryIndexReader.java
    lucene/java/trunk/src/java/org/apache/lucene/index/IndexCommit.java
    lucene/java/trunk/src/java/org/apache/lucene/index/IndexFileDeleter.java
    lucene/java/trunk/src/test/org/apache/lucene/index/TestDeletionPolicy.java
    lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReader.java

Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Fri Jul  4 02:43:12 2008
@@ -83,6 +83,9 @@
     DeletionPolicy that keeps more than the last commit around.
     (Jason Rutherglen via Mike McCandless)
 
+12. LUCENE-1325: Added IndexCommit.isOptimized().  (Shalin Shekhar
+    Mangar via Mike McCandless)
+
 Bug fixes
     
  1. LUCENE-1134: Fixed BooleanQuery.rewrite to only optimize a single 

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryIndexReader.java?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryIndexReader.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/DirectoryIndexReader.java Fri Jul  4 02:43:12 2008
@@ -360,6 +360,7 @@
     Directory dir;
     long generation;
     long version;
+    final boolean isOptimized;
 
     ReaderCommit(SegmentInfos infos, Directory dir) throws IOException {
       segmentsFileName = infos.getCurrentSegmentFileName();
@@ -374,6 +375,11 @@
       }
       version = infos.getVersion();
       generation = infos.getGeneration();
+      isOptimized = infos.size() == 1 && !infos.info(0).hasDeletions();
+    }
+
+    public boolean isOptimized() {
+      return isOptimized;
     }
     public String getSegmentsFileName() {
       return segmentsFileName;

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/IndexCommit.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/IndexCommit.java?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/IndexCommit.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/IndexCommit.java Fri Jul  4 02:43:12 2008
@@ -75,6 +75,13 @@
   }
 
   /**
+   * Returns true if this commit is an optimized index.
+   */
+  public boolean isOptimized() {
+    throw new UnsupportedOperationException("This IndexCommit does not support this method.");
+  }
+
+  /**
    * Two IndexCommits are equal if both their Directory and versions are equal.
    */
   public boolean equals(Object other) {

Modified: lucene/java/trunk/src/java/org/apache/lucene/index/IndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/index/IndexFileDeleter.java?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/index/IndexFileDeleter.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/index/IndexFileDeleter.java Fri Jul  4 02:43:12 2008
@@ -579,6 +579,7 @@
     Collection commitsToDelete;
     long version;
     long generation;
+    final boolean isOptimized;
 
     public CommitPoint(Collection commitsToDelete, Directory directory, SegmentInfos segmentInfos) throws IOException {
       this.directory = directory;
@@ -595,7 +596,12 @@
         if (segmentInfo.dir == directory) {
           files.addAll(segmentInfo.files());
         }
-      }
+      } 
+      isOptimized = segmentInfos.size() == 1 && !segmentInfos.info(0).hasDeletions();
+    }
+
+    public boolean isOptimized() {
+      return isOptimized;
     }
 
     public String getSegmentsFileName() {

Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestDeletionPolicy.java?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestDeletionPolicy.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestDeletionPolicy.java Fri Jul  4 02:43:12 2008
@@ -61,11 +61,16 @@
   class KeepAllDeletionPolicy implements IndexDeletionPolicy {
     int numOnInit;
     int numOnCommit;
+    Directory dir;
     public void onInit(List commits) {
       verifyCommitOrder(commits);
       numOnInit++;
     }
-    public void onCommit(List commits) {
+    public void onCommit(List commits) throws IOException {
+      IndexCommit lastCommit = (IndexCommit) commits.get(commits.size()-1);
+      IndexReader r = IndexReader.open(dir);
+      assertEquals("lastCommit.isOptimized()=" + lastCommit.isOptimized() + " vs IndexReader.isOptimized=" + r.isOptimized(), r.isOptimized(), lastCommit.isOptimized());
+      r.close();
       verifyCommitOrder(commits);
       numOnCommit++;
     }
@@ -263,10 +268,12 @@
       KeepAllDeletionPolicy policy = new KeepAllDeletionPolicy();
 
       Directory dir = new RAMDirectory();
+      policy.dir = dir;
 
       IndexWriter writer = new IndexWriter(dir, autoCommit, new WhitespaceAnalyzer(), true, policy, IndexWriter.MaxFieldLength.LIMITED);
       writer.setMaxBufferedDocs(10);
       writer.setUseCompoundFile(useCompoundFile);
+      writer.setMergeScheduler(new SerialMergeScheduler());
       for(int i=0;i<107;i++) {
         addDoc(writer);
         if (autoCommit && i%10 == 0)

Modified: lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReader.java?rev=673979&r1=673978&r2=673979&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReader.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestIndexReader.java Fri Jul  4 02:43:12 2008
@@ -1315,6 +1315,16 @@
 
       IndexReader r2 = r.reopen();
       assertFalse(c.equals(r2.getIndexCommit()));
+      assertFalse(r2.getIndexCommit().isOptimized());
+      r2.close();
+
+      writer = new IndexWriter(d, new StandardAnalyzer(), false, IndexWriter.MaxFieldLength.LIMITED);
+      writer.optimize();
+      writer.close();
+
+      r2 = r.reopen();
+      assertTrue(r2.getIndexCommit().isOptimized());
+
       r.close();
       r2.close();
       d.close();