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