You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/01/11 17:17:19 UTC

svn commit: r1432131 - in /lucene/dev/branches/lucene4547/lucene: core/src/java/org/apache/lucene/index/ test-framework/src/java/org/apache/lucene/index/

Author: rmuir
Date: Fri Jan 11 16:17:19 2013
New Revision: 1432131

URL: http://svn.apache.org/viewvc?rev=1432131&view=rev
Log:
get slow-wrapper working with dv2.0

Added:
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiSimpleDocValues.java
      - copied, changed from r1432113, lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/index/MultiSimpleDocValues.java
Removed:
    lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/index/MultiSimpleDocValues.java
Modified:
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java?rev=1432131&r1=1432130&r2=1432131&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java Fri Jan 11 16:17:19 2013
@@ -604,46 +604,5 @@ class MultiDocValues extends DocValues {
   @Override
   protected Source loadDirectSource() throws IOException {
     return new MultiSource(slices, starts, true, type);
-  }
-  
-  public static NumericDocValues simpleNormValues(final IndexReader r, final String field) throws IOException {
-    final List<AtomicReaderContext> leaves = r.leaves();
-    if (leaves.size() == 1) {
-      return leaves.get(0).reader().simpleNormValues(field);
-    }
-    FieldInfo fi = MultiFields.getMergedFieldInfos(r).fieldInfo(field);
-    if (fi == null || fi.hasNorms() == false) {
-      return null;
-    }
-    boolean anyReal = false;
-    for(AtomicReaderContext ctx : leaves) {
-      NumericDocValues norms = ctx.reader().simpleNormValues(field);
-
-      if (norms != null) {
-        anyReal = true;
-      }
-    }
-    
-    // assert anyReal; // nocommit: unsafe until 4.0 is done
-
-    return new NumericDocValues() {
-      @Override
-      public long get(int docID) {
-        int subIndex = ReaderUtil.subIndex(docID, leaves);
-        NumericDocValues norms;
-        try {
-          norms = leaves.get(subIndex).reader().simpleNormValues(field);
-        } catch (IOException ioe) {
-          throw new RuntimeException(ioe);
-        }
-        if (norms == null) { // WTF? should be EMPTY?
-          return 0;
-        } else {
-          return norms.get(docID - leaves.get(subIndex).docBase);
-        }
-      }
-    };
-  }
-  
-  
+  }  
 }

Copied: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiSimpleDocValues.java (from r1432113, lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/index/MultiSimpleDocValues.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiSimpleDocValues.java?p2=lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiSimpleDocValues.java&p1=lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/index/MultiSimpleDocValues.java&r1=1432113&r2=1432131&rev=1432131&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/test-framework/src/java/org/apache/lucene/index/MultiSimpleDocValues.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiSimpleDocValues.java Fri Jan 11 16:17:19 2013
@@ -18,15 +18,58 @@ package org.apache.lucene.index;
  */
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.index.IndexReader.ReaderClosedListener;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.RAMDirectory;
+import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.IOUtils;
+import org.apache.lucene.util.Version;
 
 public class MultiSimpleDocValues {
   
   // moved to src/java so SlowWrapper can use it... uggggggh
   public static NumericDocValues simpleNormValues(final IndexReader r, final String field) throws IOException {
-    return MultiDocValues.simpleNormValues(r, field);
+    final List<AtomicReaderContext> leaves = r.leaves();
+    if (leaves.size() == 1) {
+      return leaves.get(0).reader().simpleNormValues(field);
+    }
+    FieldInfo fi = MultiFields.getMergedFieldInfos(r).fieldInfo(field);
+    if (fi == null || fi.hasNorms() == false) {
+      return null;
+    }
+    boolean anyReal = false;
+    for(AtomicReaderContext ctx : leaves) {
+      NumericDocValues norms = ctx.reader().simpleNormValues(field);
+
+      if (norms != null) {
+        anyReal = true;
+      }
+    }
+    
+    // assert anyReal; // nocommit: unsafe until 4.0 is done
+
+    return new NumericDocValues() {
+      @Override
+      public long get(int docID) {
+        int subIndex = ReaderUtil.subIndex(docID, leaves);
+        NumericDocValues norms;
+        try {
+          norms = leaves.get(subIndex).reader().simpleNormValues(field);
+        } catch (IOException ioe) {
+          throw new RuntimeException(ioe);
+        }
+        if (norms == null) { // WTF? should be EMPTY?
+          return 0;
+        } else {
+          return norms.get(docID - leaves.get(subIndex).docBase);
+        }
+      }
+    };
   }
 
   public static NumericDocValues simpleNumericValues(final IndexReader r, final String field) throws IOException {
@@ -105,4 +148,51 @@ public class MultiSimpleDocValues {
       };
     }
   }
+  
+  public static SortedDocValues simpleSortedValues(final IndexReader r, final String field) throws IOException {
+    final List<AtomicReaderContext> leaves = r.leaves();
+    if (leaves.size() == 1) {
+      return leaves.get(0).reader().getSortedDocValues(field);
+    }
+    boolean anyReal = false;
+
+    for(AtomicReaderContext ctx : leaves) {
+      SortedDocValues values = ctx.reader().getSortedDocValues(field);
+
+      if (values != null) {
+        anyReal = true;
+      }
+    }
+
+    if (!anyReal) {
+      return null;
+    } else {
+      // its called slow-wrapper for a reason right?
+      final Directory scratch = new RAMDirectory();
+      IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_50, null);
+      config.setCodec(Codec.forName("SimpleText"));
+      IndexWriter writer = new IndexWriter(scratch, config);
+      List<AtomicReader> newLeaves = new ArrayList<AtomicReader>();
+      for (AtomicReaderContext ctx : leaves) {
+        final AtomicReader a = ctx.reader();
+        newLeaves.add(new FilterAtomicReader(a) {
+          @Override
+          public Bits getLiveDocs() {
+            return null; // lie
+          }
+        });
+      }
+      writer.addIndexes(newLeaves.toArray(new AtomicReader[0]));
+      writer.close();
+      final IndexReader newR = DirectoryReader.open(scratch);
+      assert newR.leaves().size() == 1;
+      r.addReaderClosedListener(new ReaderClosedListener() {
+        @Override
+        public void onClose(IndexReader reader) {
+          IOUtils.closeWhileHandlingException(newR, scratch);
+        }
+      });
+      return newR.leaves().get(0).reader().getSortedDocValues(field);
+    }
+  }
 }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java?rev=1432131&r1=1432130&r2=1432131&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java Fri Jan 11 16:17:19 2013
@@ -91,19 +91,19 @@ public final class SlowCompositeReaderWr
   @Override
   public NumericDocValues getNumericDocValues(String field) throws IOException {
     ensureOpen();
-    return null; // nocommit: UOE
+    return MultiSimpleDocValues.simpleNumericValues(in, field);
   }
 
   @Override
   public BinaryDocValues getBinaryDocValues(String field) throws IOException {
     ensureOpen();
-    return null; // nocommit: UOE
+    return MultiSimpleDocValues.simpleBinaryValues(in, field);
   }
 
   @Override
   public SortedDocValues getSortedDocValues(String field) throws IOException {
     ensureOpen();
-    return null; // nocommit: UOE
+    return MultiSimpleDocValues.simpleSortedValues(in, field);
   }
   
   @Override
@@ -121,7 +121,7 @@ public final class SlowCompositeReaderWr
   public NumericDocValues simpleNormValues(String field) throws IOException {
     ensureOpen();
     // nocommit hmm
-    return MultiDocValues.simpleNormValues(in, field);
+    return MultiSimpleDocValues.simpleNormValues(in, field);
   }
   
   @Override