You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/12/02 18:58:19 UTC

svn commit: r1416215 - in /lucene/dev/branches/lucene4547/lucene/core/src: java/org/apache/lucene/codecs/ java/org/apache/lucene/codecs/lucene41/ java/org/apache/lucene/codecs/perfield/ java/org/apache/lucene/index/ test/org/apache/lucene/search/

Author: mikemccand
Date: Sun Dec  2 17:58:17 2012
New Revision: 1416215

URL: http://svn.apache.org/viewvc?rev=1416215&view=rev
Log:
SimpleDVConsumer.merge takes list of sources

Modified:
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BinaryDocValuesConsumer.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/NumericDocValuesConsumer.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SimpleDVConsumer.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SortedDocValuesConsumer.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41Codec.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeState.java
    lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
    lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BinaryDocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BinaryDocValuesConsumer.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BinaryDocValuesConsumer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/BinaryDocValuesConsumer.java Sun Dec  2 17:58:17 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.codecs;
  */
 
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.BinaryDocValues;
@@ -29,21 +30,18 @@ public abstract class BinaryDocValuesCon
   public abstract void add(BytesRef value) throws IOException;
   public abstract void finish() throws IOException;
   
-  public int merge(MergeState mergeState) throws IOException {
+  public int merge(MergeState mergeState, List<BinaryDocValues> toMerge) throws IOException {
     int docCount = 0;
     final BytesRef bytes = new BytesRef();
-    for (AtomicReader reader : mergeState.readers) {
-      final int maxDoc = reader.maxDoc();
-      final Bits liveDocs = reader.getLiveDocs();
-
-      BinaryDocValues source = reader.getBinaryDocValues(mergeState.fieldInfo.name);
-      if (source == null) {
-        source = new BinaryDocValues.EMPTY(maxDoc);
-      }
+    for (int readerIDX=0;readerIDX<toMerge.size();readerIDX++) {
+      AtomicReader reader = mergeState.readers.get(readerIDX);
+      int maxDoc = reader.maxDoc();
+      Bits liveDocs = reader.getLiveDocs();
 
+      BinaryDocValues values = toMerge.get(readerIDX);
       for (int i = 0; i < maxDoc; i++) {
         if (liveDocs == null || liveDocs.get(i)) {
-          source.get(i, bytes);
+          values.get(i, bytes);
           add(bytes);
         }
         docCount++;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/NumericDocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/NumericDocValuesConsumer.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/NumericDocValuesConsumer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/NumericDocValuesConsumer.java Sun Dec  2 17:58:17 2012
@@ -18,6 +18,7 @@ package org.apache.lucene.codecs;
  */
 
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.MergeState;
@@ -28,19 +29,16 @@ public abstract class NumericDocValuesCo
   public abstract void add(long value) throws IOException;
   public abstract void finish() throws IOException;
 
-  // nocommit bogus forceNorms
-  public int merge(MergeState mergeState, boolean forceNorms) throws IOException {
+  public int merge(MergeState mergeState, List<NumericDocValues> toMerge) throws IOException {
     int docCount = 0;
-    for (AtomicReader reader : mergeState.readers) {
-      final int maxDoc = reader.maxDoc();
-      final Bits liveDocs = reader.getLiveDocs();
-      NumericDocValues source = forceNorms ? reader.simpleNormValues(mergeState.fieldInfo.name) : reader.getNumericDocValues(mergeState.fieldInfo.name);
-      if (source == null) {
-        source = new NumericDocValues.EMPTY(maxDoc);
-      }
+    for (int readerIDX=0;readerIDX<toMerge.size();readerIDX++) {
+      AtomicReader reader = mergeState.readers.get(readerIDX);
+      int maxDoc = reader.maxDoc();
+      Bits liveDocs = reader.getLiveDocs();
+      NumericDocValues values = toMerge.get(readerIDX);
       for (int i = 0; i < maxDoc; i++) {
         if (liveDocs == null || liveDocs.get(i)) {
-          add(source.get(i));
+          add(values.get(i));
         }
         docCount++;
         mergeState.checkAbort.work(300);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SimpleDVConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SimpleDVConsumer.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SimpleDVConsumer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SimpleDVConsumer.java Sun Dec  2 17:58:17 2012
@@ -19,6 +19,7 @@ package org.apache.lucene.codecs;
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.BinaryDocValues;
@@ -26,6 +27,7 @@ import org.apache.lucene.index.DocValues
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.MergeState;
 import org.apache.lucene.index.NumericDocValues;
+import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
 
@@ -40,90 +42,46 @@ public abstract class SimpleDVConsumer i
   // nocommit: figure out whats fair here.
   public abstract SortedDocValuesConsumer addSortedField(FieldInfo field, int valueCount, boolean fixedLength, int maxLength) throws IOException;
 
-  // nocommit bogus forceNorms param:
-  public void merge(MergeState mergeState, boolean forceNorms) throws IOException {
-    for (FieldInfo field : mergeState.fieldInfos) {
-      if ((!forceNorms && field.hasDocValues()) || (forceNorms && field.isIndexed() && !field.omitsNorms())) {
-        mergeState.fieldInfo = field;
-        //System.out.println("merge field=" + field.name + " forceNorms=" + forceNorms);
-        // nocommit a field can never have doc values AND norms!?
-        DocValues.Type type = forceNorms ? DocValues.Type.FIXED_INTS_8 : field.getDocValuesType();
-        switch(type) {
-          case VAR_INTS:
-          case FIXED_INTS_8:
-          case FIXED_INTS_16:
-          case FIXED_INTS_32:
-          case FIXED_INTS_64:
-          case FLOAT_64:
-          case FLOAT_32:
-            mergeNumericField(mergeState, forceNorms);
-            break;
-          case BYTES_VAR_SORTED:
-          case BYTES_FIXED_SORTED:
-          case BYTES_VAR_DEREF:
-          case BYTES_FIXED_DEREF:
-            mergeSortedField(mergeState);
-            break;
-          case BYTES_VAR_STRAIGHT:
-          case BYTES_FIXED_STRAIGHT:
-            mergeBinaryField(mergeState);
-            break;
-          default:
-            throw new AssertionError();
-        }
-      }
-    }
-  }
-
-  // nocommit bogus forceNorms:
   // dead simple impl: codec can optimize
-  protected void mergeNumericField(MergeState mergeState, boolean forceNorms) throws IOException {
+  public void mergeNumericField(FieldInfo fieldInfo, MergeState mergeState, List<NumericDocValues> toMerge) throws IOException {
     // first compute min and max value of live ones to be merged.
     long minValue = Long.MAX_VALUE;
     long maxValue = Long.MIN_VALUE;
-    for (AtomicReader reader : mergeState.readers) {
-      final int maxDoc = reader.maxDoc();
-      final Bits liveDocs = reader.getLiveDocs();
-      //System.out.println("merge field=" + mergeState.fieldInfo.name);
-      NumericDocValues docValues = forceNorms ? reader.simpleNormValues(mergeState.fieldInfo.name) : reader.getNumericDocValues(mergeState.fieldInfo.name);
-      if (docValues == null) {
-        // nocommit this isn't correct i think?  ie this one
-        // segment may have no docs containing this
-        // field... and that doesn't mean norms are omitted ...
-        //assert !forceNorms;
-        docValues = new NumericDocValues.EMPTY(maxDoc);
-      }
+    for (int readerIDX=0;readerIDX<toMerge.size();readerIDX++) {
+      AtomicReader reader = mergeState.readers.get(readerIDX);
+      int maxDoc = reader.maxDoc();
+      Bits liveDocs = reader.getLiveDocs();
+      NumericDocValues values = toMerge.get(readerIDX);
       for (int i = 0; i < maxDoc; i++) {
         if (liveDocs == null || liveDocs.get(i)) {
-          long val = docValues.get(i);
+          long val = values.get(i);
           minValue = Math.min(val, minValue);
           maxValue = Math.max(val, maxValue);
         }
         mergeState.checkAbort.work(300);
       }
     }
+
     // now we can merge
-    NumericDocValuesConsumer field = addNumericField(mergeState.fieldInfo, minValue, maxValue);
-    field.merge(mergeState, forceNorms);
+    NumericDocValuesConsumer field = addNumericField(fieldInfo, minValue, maxValue);
+    field.merge(mergeState, toMerge);
   }
   
   // dead simple impl: codec can optimize
-  protected void mergeBinaryField(MergeState mergeState) throws IOException {
+  public void mergeBinaryField(FieldInfo fieldInfo, MergeState mergeState, List<BinaryDocValues> toMerge) throws IOException {
     // first compute fixedLength and maxLength of live ones to be merged.
     // nocommit: messy, and can be simplified by using docValues.maxLength/fixedLength in many cases.
     boolean fixedLength = true;
     int maxLength = -1;
     BytesRef bytes = new BytesRef();
-    for (AtomicReader reader : mergeState.readers) {
-      final int maxDoc = reader.maxDoc();
-      final Bits liveDocs = reader.getLiveDocs();
-      BinaryDocValues docValues = reader.getBinaryDocValues(mergeState.fieldInfo.name);
-      if (docValues == null) {
-        docValues = new BinaryDocValues.EMPTY(maxDoc);
-      }
+    for (int readerIDX=0;readerIDX<toMerge.size();readerIDX++) {
+      AtomicReader reader = mergeState.readers.get(readerIDX);      
+      int maxDoc = reader.maxDoc();
+      Bits liveDocs = reader.getLiveDocs();
+      BinaryDocValues values = toMerge.get(readerIDX);
       for (int i = 0; i < maxDoc; i++) {
         if (liveDocs == null || liveDocs.get(i)) {
-          docValues.get(i, bytes);
+          values.get(i, bytes);
           if (maxLength == -1) {
             maxLength = bytes.length;
           } else {
@@ -136,14 +94,14 @@ public abstract class SimpleDVConsumer i
     }
     // now we can merge
     assert maxLength >= 0; // could this happen (nothing to do?)
-    BinaryDocValuesConsumer field = addBinaryField(mergeState.fieldInfo, fixedLength, maxLength);
-    field.merge(mergeState);
+    BinaryDocValuesConsumer field = addBinaryField(fieldInfo, fixedLength, maxLength);
+    field.merge(mergeState, toMerge);
   }
 
-  protected void mergeSortedField(MergeState mergeState) throws IOException {
+  public void mergeSortedField(FieldInfo fieldInfo, MergeState mergeState, List<SortedDocValues> toMerge) throws IOException {
     SortedDocValuesConsumer.Merger merger = new SortedDocValuesConsumer.Merger();
-    merger.merge(mergeState);
-    SortedDocValuesConsumer consumer = addSortedField(mergeState.fieldInfo, merger.numMergedTerms, merger.fixedLength >= 0, merger.maxLength);
+    merger.merge(mergeState, toMerge);
+    SortedDocValuesConsumer consumer = addSortedField(fieldInfo, merger.numMergedTerms, merger.fixedLength >= 0, merger.maxLength);
     consumer.merge(mergeState, merger);
   }
 }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SortedDocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SortedDocValuesConsumer.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SortedDocValuesConsumer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/SortedDocValuesConsumer.java Sun Dec  2 17:58:17 2012
@@ -94,19 +94,17 @@ public abstract class SortedDocValuesCon
       }
     }
 
-    public void merge(MergeState mergeState) throws IOException {
+    public void merge(MergeState mergeState, List<SortedDocValues> toMerge) throws IOException {
 
       // First pass: mark "live" terms
-      for (AtomicReader reader : mergeState.readers) {
+      for (int readerIDX=0;readerIDX<toMerge.size();readerIDX++) {
+        AtomicReader reader = mergeState.readers.get(readerIDX);      
         // nocommit what if this is null...?  need default source?
         int maxDoc = reader.maxDoc();
 
         SegmentState state = new SegmentState();
         state.reader = reader;
-        state.values = reader.getSortedDocValues(mergeState.fieldInfo.name);
-        if (state.values == null) {
-          state.values = new SortedDocValues.EMPTY(maxDoc);
-        }
+        state.values = toMerge.get(readerIDX);
 
         segStates.add(state);
         assert state.values.getValueCount() < Integer.MAX_VALUE;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41Codec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41Codec.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41Codec.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/lucene41/Lucene41Codec.java Sun Dec  2 17:58:17 2012
@@ -140,7 +140,9 @@ public class Lucene41Codec extends Codec
   
   @Override
   public SimpleDocValuesFormat simpleDocValuesFormat() {
-    return simpleDocValuesFormat ;
+    // nocommit tests seem to fail if we use this:
+    //return simpleDocValuesFormat;
+    return null;
   }
 
   private final PostingsFormat defaultFormat = PostingsFormat.forName("Lucene41");

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java Sun Dec  2 17:58:17 2012
@@ -123,7 +123,7 @@ public abstract class PerFieldDocValuesF
       final String formatName = format.getName();
       
       String previousValue = field.putAttribute(PER_FIELD_FORMAT_KEY, formatName);
-      assert previousValue == null;
+      assert previousValue == null: "formatName=" + formatName + " prevValue=" + previousValue;
       
       Integer suffix;
       

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeState.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeState.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeState.java Sun Dec  2 17:58:17 2012
@@ -218,6 +218,7 @@ public class MergeState {
   public InfoStream infoStream;
 
   /** Current field being merged. */
+  // nocommit shouldn't this be ... a param?:
   public FieldInfo fieldInfo;
   
   // TODO: get rid of this? it tells you which segments are 'aligned' (e.g. for bulk merging)

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java Sun Dec  2 17:58:17 2012
@@ -109,36 +109,13 @@ final class SegmentMerger {
     
     if (mergeState.fieldInfos.hasNorms()) {
       mergeNorms(segmentWriteState);
-      if (codec.simpleNormsFormat() != null) {
-        SimpleDVConsumer consumer = codec.simpleNormsFormat().normsConsumer(segmentWriteState);
-        boolean success = false;
-        try {
-          consumer.merge(mergeState, true);
-        } finally {
-          if (success) {
-            IOUtils.close(consumer);
-          } else {
-            IOUtils.closeWhileHandlingException(consumer);            
-          }
-        }
-      }
+      mergeSimpleNorms(segmentWriteState);
     }
 
+    // Merge simple doc values:
     if (mergeState.fieldInfos.hasDocValues()) {
       // nocommit shouldn't need null check:
-      if (codec.simpleDocValuesFormat() != null) {
-        SimpleDVConsumer consumer = codec.simpleDocValuesFormat().fieldsConsumer(segmentWriteState);
-        boolean success = false;
-        try {
-          consumer.merge(mergeState, false);
-        } finally {
-          if (success) {
-            IOUtils.close(consumer);
-          } else {
-            IOUtils.closeWhileHandlingException(consumer);            
-          }
-        }
-      }
+      mergeSimpleDocValues(segmentWriteState);
     }
 
     if (mergeState.fieldInfos.hasVectors()) {
@@ -153,6 +130,88 @@ final class SegmentMerger {
     return mergeState;
   }
 
+  private void mergeSimpleDocValues(SegmentWriteState segmentWriteState) throws IOException {
+
+    if (codec.simpleDocValuesFormat() != null) {
+      SimpleDVConsumer consumer = codec.simpleDocValuesFormat().fieldsConsumer(segmentWriteState);
+      boolean success = false;
+      try {
+        for (FieldInfo field : mergeState.fieldInfos) {
+          DocValues.Type type = field.getDocValuesType();
+          if (type != null) {
+            if (DocValues.isNumber(type) || DocValues.isFloat(type)) {
+              List<NumericDocValues> toMerge = new ArrayList<NumericDocValues>();
+              for (AtomicReader reader : mergeState.readers) {
+                NumericDocValues values = reader.getNumericDocValues(field.name);
+                if (values == null) {
+                  values = new NumericDocValues.EMPTY(reader.maxDoc());
+                }
+                toMerge.add(values);
+              }
+              consumer.mergeNumericField(field, mergeState, toMerge);
+            } else if (DocValues.isBytes(type)) {
+              List<BinaryDocValues> toMerge = new ArrayList<BinaryDocValues>();
+              for (AtomicReader reader : mergeState.readers) {
+                BinaryDocValues values = reader.getBinaryDocValues(field.name);
+                if (values == null) {
+                  values = new BinaryDocValues.EMPTY(reader.maxDoc());
+                }
+                toMerge.add(values);
+              }
+              consumer.mergeBinaryField(field, mergeState, toMerge);
+            } else if (DocValues.isSortedBytes(type)) {
+              List<SortedDocValues> toMerge = new ArrayList<SortedDocValues>();
+              for (AtomicReader reader : mergeState.readers) {
+                SortedDocValues values = reader.getSortedDocValues(field.name);
+                if (values == null) {
+                  values = new SortedDocValues.EMPTY(reader.maxDoc());
+                }
+                toMerge.add(values);
+              }
+              consumer.mergeSortedField(field, mergeState, toMerge);
+            } else {
+              throw new AssertionError("type=" + type);
+            }
+          }
+        }
+      } finally {
+        if (success) {
+          IOUtils.close(consumer);
+        } else {
+          IOUtils.closeWhileHandlingException(consumer);            
+        }
+      }
+    }
+  }
+
+  private void mergeSimpleNorms(SegmentWriteState segmentWriteState) throws IOException {
+    if (codec.simpleNormsFormat() != null) {
+      SimpleDVConsumer consumer = codec.simpleNormsFormat().normsConsumer(segmentWriteState);
+      boolean success = false;
+      try {
+        for (FieldInfo field : mergeState.fieldInfos) {
+          if (field.isIndexed() && !field.omitsNorms()) {
+            List<NumericDocValues> toMerge = new ArrayList<NumericDocValues>();
+            for (AtomicReader reader : mergeState.readers) {
+              NumericDocValues norms = reader.simpleNormValues(field.name);
+              if (norms == null) {
+                norms = new NumericDocValues.EMPTY(reader.maxDoc());
+              }
+              toMerge.add(norms);
+            }
+            consumer.mergeNumericField(field, mergeState, toMerge);
+          }
+        }
+      } finally {
+        if (success) {
+          IOUtils.close(consumer);
+        } else {
+          IOUtils.closeWhileHandlingException(consumer);            
+        }
+      }
+    }
+  }
+
   private void setMatchingSegmentReaders() {
     // If the i'th reader is a SegmentReader and has
     // identical fieldName -> number mapping, then this

Modified: lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java?rev=1416215&r1=1416214&r2=1416215&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/test/org/apache/lucene/search/TestBooleanOr.java Sun Dec  2 17:58:17 2012
@@ -18,11 +18,13 @@ package org.apache.lucene.search;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.AtomicReaderContext;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.index.SerialMergeScheduler;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.FixedBitSet;
@@ -160,7 +162,8 @@ public class TestBooleanOr extends Lucen
 
   public void testBooleanScorerMax() throws IOException {
     Directory dir = newDirectory();
-    RandomIndexWriter riw = new RandomIndexWriter(random(), dir);
+    // nocommit remove SMS:
+    RandomIndexWriter riw = new RandomIndexWriter(random(), dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).setMergeScheduler(new SerialMergeScheduler()));
 
     int docCount = atLeast(10000);