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 2016/06/11 15:49:30 UTC

[14/21] lucene-solr:branch_6x: LUCENE-6766: remove unused SortField.Type.BYTES; don't pass liveDocs to DocIDMerger (it's redundant with MergeState.DocMap)

LUCENE-6766: remove unused SortField.Type.BYTES; don't pass liveDocs to DocIDMerger (it's redundant with MergeState.DocMap)


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/365436ea
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/365436ea
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/365436ea

Branch: refs/heads/branch_6x
Commit: 365436ea582317f4af5499627a7a1aadde099db7
Parents: a30c263
Author: Mike McCandless <mi...@apache.org>
Authored: Sun May 8 05:00:19 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Sat Jun 11 11:48:40 2016 -0400

----------------------------------------------------------------------
 .../lucene/codecs/lucene60/Lucene60Codec.java   |  3 --
 .../apache/lucene/codecs/DocValuesConsumer.java | 34 ++++++++++----------
 .../org/apache/lucene/codecs/NormsConsumer.java |  6 ++--
 .../lucene/codecs/StoredFieldsWriter.java       |  6 ++--
 .../apache/lucene/codecs/TermVectorsWriter.java |  6 ++--
 .../org/apache/lucene/index/DocIDMerger.java    | 30 +++++++++--------
 .../org/apache/lucene/index/IndexWriter.java    |  2 --
 .../apache/lucene/index/IndexWriterConfig.java  |  5 ++-
 .../lucene/index/MappingMultiPostingsEnum.java  |  6 ++--
 .../apache/lucene/index/MergeReaderWrapper.java |  4 +--
 .../org/apache/lucene/index/MergeState.java     |  4 +--
 .../org/apache/lucene/index/MultiSorter.java    |  1 -
 .../org/apache/lucene/index/SegmentInfo.java    |  4 ---
 .../org/apache/lucene/search/SortField.java     |  3 --
 .../apache/lucene/index/TestDocIDMerger.java    | 12 +++----
 .../apache/lucene/index/TestIndexSorting.java   |  2 +-
 16 files changed, 58 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
----------------------------------------------------------------------
diff --git a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
index 7210b3f..fd6b6fe 100644
--- a/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
+++ b/lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene60/Lucene60Codec.java
@@ -16,9 +16,6 @@
  */
 package org.apache.lucene.codecs.lucene60;
 
-// nocommit if index time sorting is in use, don't try to bulk merge ... later we can make crazy bulk merger that looks for long runs from
-// one sub?
-
 import java.util.Objects;
 
 import org.apache.lucene.codecs.Codec;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java
index 79cc422..427b520 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/DocValuesConsumer.java
@@ -251,8 +251,8 @@ public abstract class DocValuesConsumer implements Closeable {
     private int docID = -1;
     private final int maxDoc;
 
-    public NumericDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, NumericDocValues values, Bits docsWithField, int maxDoc) {
-      super(docMap, liveDocs);
+    public NumericDocValuesSub(MergeState.DocMap docMap, NumericDocValues values, Bits docsWithField, int maxDoc) {
+      super(docMap);
       this.values = values;
       this.docsWithField = docsWithField;
       this.maxDoc = maxDoc;
@@ -285,7 +285,7 @@ public abstract class DocValuesConsumer implements Closeable {
                         List<NumericDocValuesSub> subs = new ArrayList<>();
                         assert mergeState.docMaps.length == toMerge.size();
                         for(int i=0;i<toMerge.size();i++) {
-                          subs.add(new NumericDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), docsWithField.get(i), mergeState.maxDocs[i]));
+                          subs.add(new NumericDocValuesSub(mergeState.docMaps[i], toMerge.get(i), docsWithField.get(i), mergeState.maxDocs[i]));
                         }
 
                         final DocIDMerger<NumericDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -338,8 +338,8 @@ public abstract class DocValuesConsumer implements Closeable {
     private int docID = -1;
     private final int maxDoc;
 
-    public BinaryDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, BinaryDocValues values, Bits docsWithField, int maxDoc) {
-      super(docMap, liveDocs);
+    public BinaryDocValuesSub(MergeState.DocMap docMap, BinaryDocValues values, Bits docsWithField, int maxDoc) {
+      super(docMap);
       this.values = values;
       this.docsWithField = docsWithField;
       this.maxDoc = maxDoc;
@@ -372,7 +372,7 @@ public abstract class DocValuesConsumer implements Closeable {
                        List<BinaryDocValuesSub> subs = new ArrayList<>();
                        assert mergeState.docMaps.length == toMerge.size();
                        for(int i=0;i<toMerge.size();i++) {
-                         subs.add(new BinaryDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), docsWithField.get(i), mergeState.maxDocs[i]));
+                         subs.add(new BinaryDocValuesSub(mergeState.docMaps[i], toMerge.get(i), docsWithField.get(i), mergeState.maxDocs[i]));
                        }
 
                        final DocIDMerger<BinaryDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -429,8 +429,8 @@ public abstract class DocValuesConsumer implements Closeable {
     private int docID = -1;
     private final int maxDoc;
 
-    public SortedNumericDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, SortedNumericDocValues values, int maxDoc) {
-      super(docMap, liveDocs);
+    public SortedNumericDocValuesSub(MergeState.DocMap docMap, SortedNumericDocValues values, int maxDoc) {
+      super(docMap);
       this.values = values;
       this.maxDoc = maxDoc;
     }
@@ -465,7 +465,7 @@ public abstract class DocValuesConsumer implements Closeable {
             List<SortedNumericDocValuesSub> subs = new ArrayList<>();
             assert mergeState.docMaps.length == toMerge.size();
             for(int i=0;i<toMerge.size();i++) {
-              subs.add(new SortedNumericDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i]));
+              subs.add(new SortedNumericDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i]));
             }
 
             final DocIDMerger<SortedNumericDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -516,7 +516,7 @@ public abstract class DocValuesConsumer implements Closeable {
             List<SortedNumericDocValuesSub> subs = new ArrayList<>();
             assert mergeState.docMaps.length == toMerge.size();
             for(int i=0;i<toMerge.size();i++) {
-              subs.add(new SortedNumericDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i]));
+              subs.add(new SortedNumericDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i]));
             }
 
             final DocIDMerger<SortedNumericDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -581,8 +581,8 @@ public abstract class DocValuesConsumer implements Closeable {
     private final int maxDoc;
     private final LongValues map;
 
-    public SortedDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, SortedDocValues values, int maxDoc, LongValues map) {
-      super(docMap, liveDocs);
+    public SortedDocValuesSub(MergeState.DocMap docMap, SortedDocValues values, int maxDoc, LongValues map) {
+      super(docMap);
       this.values = values;
       this.maxDoc = maxDoc;
       this.map = map;
@@ -678,7 +678,7 @@ public abstract class DocValuesConsumer implements Closeable {
             List<SortedDocValuesSub> subs = new ArrayList<>();
             assert mergeState.docMaps.length == toMerge.size();
             for(int i=0;i<toMerge.size();i++) {
-              subs.add(new SortedDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
+              subs.add(new SortedDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
             }
 
             final DocIDMerger<SortedDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -735,8 +735,8 @@ public abstract class DocValuesConsumer implements Closeable {
     private final int maxDoc;
     private final LongValues map;
 
-    public SortedSetDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, SortedSetDocValues values, int maxDoc, LongValues map) {
-      super(docMap, liveDocs);
+    public SortedSetDocValuesSub(MergeState.DocMap docMap, SortedSetDocValues values, int maxDoc, LongValues map) {
+      super(docMap);
       this.values = values;
       this.maxDoc = maxDoc;
       this.map = map;
@@ -837,7 +837,7 @@ public abstract class DocValuesConsumer implements Closeable {
             List<SortedSetDocValuesSub> subs = new ArrayList<>();
             assert mergeState.docMaps.length == toMerge.size();
             for(int i=0;i<toMerge.size();i++) {
-              subs.add(new SortedSetDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
+              subs.add(new SortedSetDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
             }
 
             final DocIDMerger<SortedSetDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);
@@ -895,7 +895,7 @@ public abstract class DocValuesConsumer implements Closeable {
             List<SortedSetDocValuesSub> subs = new ArrayList<>();
             assert mergeState.docMaps.length == toMerge.size();
             for(int i=0;i<toMerge.size();i++) {
-              subs.add(new SortedSetDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
+              subs.add(new SortedSetDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i], map.getGlobalOrds(i)));
             }
 
             final DocIDMerger<SortedSetDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
index 76f8be7..39d3902 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/NormsConsumer.java
@@ -107,8 +107,8 @@ public abstract class NormsConsumer implements Closeable {
     private int docID = -1;
     private final int maxDoc;
 
-    public NumericDocValuesSub(MergeState.DocMap docMap, Bits liveDocs, NumericDocValues values, int maxDoc) {
-      super(docMap, liveDocs);
+    public NumericDocValuesSub(MergeState.DocMap docMap, NumericDocValues values, int maxDoc) {
+      super(docMap);
       this.values = values;
       this.maxDoc = maxDoc;
     }
@@ -142,7 +142,7 @@ public abstract class NormsConsumer implements Closeable {
                         List<NumericDocValuesSub> subs = new ArrayList<>();
                         assert mergeState.docMaps.length == toMerge.size();
                         for(int i=0;i<toMerge.size();i++) {
-                          subs.add(new NumericDocValuesSub(mergeState.docMaps[i], mergeState.liveDocs[i], toMerge.get(i), mergeState.maxDocs[i]));
+                          subs.add(new NumericDocValuesSub(mergeState.docMaps[i], toMerge.get(i), mergeState.maxDocs[i]));
                         }
 
                         final DocIDMerger<NumericDocValuesSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
index b76247d..26652aa 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/StoredFieldsWriter.java
@@ -85,8 +85,8 @@ public abstract class StoredFieldsWriter implements Closeable {
     private final MergeVisitor visitor;
     int docID = -1;
 
-    public StoredFieldsMergeSub(MergeVisitor visitor, MergeState.DocMap docMap, Bits liveDocs, StoredFieldsReader reader, int maxDoc) {
-      super(docMap, liveDocs);
+    public StoredFieldsMergeSub(MergeVisitor visitor, MergeState.DocMap docMap, StoredFieldsReader reader, int maxDoc) {
+      super(docMap);
       this.maxDoc = maxDoc;
       this.reader = reader;
       this.visitor = visitor;
@@ -115,7 +115,7 @@ public abstract class StoredFieldsWriter implements Closeable {
     for(int i=0;i<mergeState.storedFieldsReaders.length;i++) {
       StoredFieldsReader storedFieldsReader = mergeState.storedFieldsReaders[i];
       storedFieldsReader.checkIntegrity();
-      subs.add(new StoredFieldsMergeSub(new MergeVisitor(mergeState, i), mergeState.docMaps[i], mergeState.liveDocs[i], storedFieldsReader, mergeState.maxDocs[i]));
+      subs.add(new StoredFieldsMergeSub(new MergeVisitor(mergeState, i), mergeState.docMaps[i], storedFieldsReader, mergeState.maxDocs[i]));
     }
 
     final DocIDMerger<StoredFieldsMergeSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
index 6ab1157..81dd095 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/TermVectorsWriter.java
@@ -169,8 +169,8 @@ public abstract class TermVectorsWriter implements Closeable {
     private final int maxDoc;
     int docID = -1;
 
-    public TermVectorsMergeSub(MergeState.DocMap docMap, Bits liveDocs, TermVectorsReader reader, int maxDoc) {
-      super(docMap, liveDocs);
+    public TermVectorsMergeSub(MergeState.DocMap docMap, TermVectorsReader reader, int maxDoc) {
+      super(docMap);
       this.maxDoc = maxDoc;
       this.reader = reader;
     }
@@ -204,7 +204,7 @@ public abstract class TermVectorsWriter implements Closeable {
         reader.checkIntegrity();
       }
       // nocommit make sure the else case tested here
-      subs.add(new TermVectorsMergeSub(mergeState.docMaps[i], mergeState.liveDocs[i], reader, mergeState.maxDocs[i]));
+      subs.add(new TermVectorsMergeSub(mergeState.docMaps[i], reader, mergeState.maxDocs[i]));
     }
 
     final DocIDMerger<TermVectorsMergeSub> docIDMerger = new DocIDMerger<>(subs, mergeState.segmentInfo.getIndexSort() != null);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java b/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
index fb1cdf2..7db7081 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocIDMerger.java
@@ -45,12 +45,9 @@ public class DocIDMerger<T extends DocIDMerger.Sub> {
   public static abstract class Sub {
     public int mappedDocID;
     final MergeState.DocMap docMap;
-    final Bits liveDocs;
 
-    // nocommit isn't liveDocs redundant?  docMap returns -1 for us?
-    public Sub(MergeState.DocMap docMap, Bits liveDocs) {
+    public Sub(MergeState.DocMap docMap) {
       this.docMap = docMap;
-      this.liveDocs = liveDocs;
     }
 
     /** Returns the next document ID from this sub reader, and {@link DocIdSetIterator#NO_MORE_DOCS} when done */
@@ -91,12 +88,14 @@ public class DocIDMerger<T extends DocIDMerger.Sub> {
           if (docID == NO_MORE_DOCS) {
             // all docs in this sub were deleted; do not add it to the queue!
             break;
-          } else if (sub.liveDocs != null && sub.liveDocs.get(docID) == false) {
-            // nocommit is it sub's job to skip deleted docs?
+          }
+
+          int mappedDocID = sub.docMap.get(docID);
+          if (mappedDocID == -1) {
+            // doc was deleted
             continue;
           } else {
-            sub.mappedDocID = sub.docMap.get(docID);
-            assert sub.mappedDocID != -1;
+            sub.mappedDocID = mappedDocID;
             queue.add(sub);
             break;
           }
@@ -131,10 +130,13 @@ public class DocIDMerger<T extends DocIDMerger.Sub> {
             queue.pop();
             top = queue.top();
             break;
-          } else if (top.liveDocs != null && top.liveDocs.get(docID) == false) {
+          }
+          int mappedDocID = top.docMap.get(docID);
+          if (mappedDocID == -1) {
+            // doc was deleted
             continue;
           } else {
-            top.mappedDocID = top.docMap.get(docID);
+            top.mappedDocID = mappedDocID;
             top = queue.updateTop();
             break;
           }
@@ -160,12 +162,14 @@ public class DocIDMerger<T extends DocIDMerger.Sub> {
           current = subs.get(nextIndex);
           nextIndex++;
           continue;
-        } else if (current.liveDocs != null && current.liveDocs.get(docID) == false) {
-          // Document is deleted
+        }
+        int mappedDocID = current.docMap.get(docID);
+        if (mappedDocID == -1) {
+          // doc is deleted
           continue;
         }
 
-        current.mappedDocID = current.docMap.get(docID);
+        current.mappedDocID = mappedDocID;
         return current;
       }
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index 2254ba4..0289c61 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -1004,8 +1004,6 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
     }
   }
 
-  // nocommit can we improve this from just best effort?
-
   /** Confirms that the incoming index sort (if any) matches the existing index sort (if any).  This is unfortunately just best effort,
    *  because it could be the old index only has flushed segments. */
   private void validateIndexSort() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
index a6b5599..e2957d7 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriterConfig.java
@@ -444,11 +444,10 @@ public final class IndexWriterConfig extends LiveIndexWriterConfig {
 
   /** We only allow sorting on these types */
   private static final EnumSet<SortField.Type> ALLOWED_INDEX_SORT_TYPES = EnumSet.of(SortField.Type.STRING,
-                                                                                     SortField.Type.INT,
-                                                                                     SortField.Type.FLOAT,
                                                                                      SortField.Type.LONG,
+                                                                                     SortField.Type.INT,
                                                                                      SortField.Type.DOUBLE,
-                                                                                     SortField.Type.BYTES);
+                                                                                     SortField.Type.FLOAT);
 
   /**
    * Set the {@link Sort} order to use when merging segments.  Note that newly flushed segments will remain unsorted.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java b/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
index 41c2a46..166878d 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MappingMultiPostingsEnum.java
@@ -43,8 +43,8 @@ final class MappingMultiPostingsEnum extends PostingsEnum {
   private static class MappingPostingsSub extends DocIDMerger.Sub {
     public PostingsEnum postings;
 
-    public MappingPostingsSub(MergeState.DocMap docMap, Bits liveDocs) {
-      super(docMap, liveDocs);
+    public MappingPostingsSub(MergeState.DocMap docMap) {
+      super(docMap);
     }
 
     @Override
@@ -62,7 +62,7 @@ final class MappingMultiPostingsEnum extends PostingsEnum {
     this.field = field;
     allSubs = new MappingPostingsSub[mergeState.fieldsProducers.length];
     for(int i=0;i<allSubs.length;i++) {
-      allSubs[i] = new MappingPostingsSub(mergeState.docMaps[i], mergeState.liveDocs[i]);
+      allSubs[i] = new MappingPostingsSub(mergeState.docMaps[i]);
     }
     this.docIDMerger = new DocIDMerger<MappingPostingsSub>(subs, allSubs.length, mergeState.segmentInfo.getIndexSort() != null);
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/MergeReaderWrapper.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergeReaderWrapper.java b/lucene/core/src/java/org/apache/lucene/index/MergeReaderWrapper.java
index be3513a..2401d0f 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MergeReaderWrapper.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MergeReaderWrapper.java
@@ -29,14 +29,14 @@ import org.apache.lucene.util.Bits;
 
 /** This is a hack to make index sorting fast, with a {@link LeafReader} that always returns merge instances when you ask for the codec readers. */
 class MergeReaderWrapper extends LeafReader {
-  final SegmentReader in;
+  final CodecReader in;
   final FieldsProducer fields;
   final NormsProducer norms;
   final DocValuesProducer docValues;
   final StoredFieldsReader store;
   final TermVectorsReader vectors;
   
-  MergeReaderWrapper(SegmentReader in) throws IOException {
+  MergeReaderWrapper(CodecReader in) throws IOException {
     this.in = in;
     
     FieldsProducer fields = in.getPostingsReader();

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/MergeState.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MergeState.java b/lucene/core/src/java/org/apache/lucene/index/MergeState.java
index 31065e3..9560983 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MergeState.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MergeState.java
@@ -40,7 +40,6 @@ import org.apache.lucene.util.packed.PackedLongValues;
 public class MergeState {
 
   /** Maps document IDs from old segments to document IDs in the new segment */
-  // nocommit in the unsorted case, this should map correctly, e.g. apply per segment docBase
   public final DocMap[] docMaps;
 
   // nocommit can we somehow not need to expose this?  should IW's reader pool always sort on load...?
@@ -224,8 +223,7 @@ public class MergeState {
         Sorter.DocMap sortDocMap = sorter.sort(leaf);
         if (sortDocMap != null) {
           //System.out.println("    sort!");
-          // nocommit what about MergedReaderWrapper in here?
-          leaf = SlowCodecReaderWrapper.wrap(SortingLeafReader.wrap(leaf, sortDocMap));
+          leaf = SlowCodecReaderWrapper.wrap(SortingLeafReader.wrap(new MergeReaderWrapper(leaf), sortDocMap));
           leafDocMaps[readers.size()] = new DocMap() {
               @Override
               public int get(int docID) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java b/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
index 4c78aa1..39ef8d8 100644
--- a/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/MultiSorter.java
@@ -344,7 +344,6 @@ final class MultiSorter {
         };
       }
 
-    // nocommit do the rest:
     default:
       throw new IllegalArgumentException("unhandled SortField.getType()=" + sortField.getType());
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java b/lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java
index 5830201..ec12365 100644
--- a/lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java
+++ b/lucene/core/src/java/org/apache/lucene/index/SegmentInfo.java
@@ -198,10 +198,6 @@ public final class SegmentInfo {
       s.append('/').append(delCount);
     }
 
-    // nocommit does search time "do the right thing" automatically when segment is sorted?
-
-    // nocommit remove sorter_key from diagnostics
-
     if (indexSort != null) {
       s.append(":[indexSort=");
       s.append(indexSort);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/java/org/apache/lucene/search/SortField.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/SortField.java b/lucene/core/src/java/org/apache/lucene/search/SortField.java
index 880697b..412a50a 100644
--- a/lucene/core/src/java/org/apache/lucene/search/SortField.java
+++ b/lucene/core/src/java/org/apache/lucene/search/SortField.java
@@ -77,9 +77,6 @@ public class SortField {
      * uses ordinals to do the sorting. */
     STRING_VAL,
 
-    /** Sort use byte[] index values. */
-    BYTES,
-
     /** Force rewriting of SortField using {@link SortField#rewrite(IndexSearcher)}
      * before it can be used for sorting */
     REWRITEABLE

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java b/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
index 9251b00..949dece 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestDocIDMerger.java
@@ -33,8 +33,8 @@ public class TestDocIDMerger extends LuceneTestCase {
     final int valueStart;
     final int maxDoc;
 
-    public TestSubUnsorted(MergeState.DocMap docMap, Bits liveDocs, int maxDoc, int valueStart) {
-      super(docMap, liveDocs);
+    public TestSubUnsorted(MergeState.DocMap docMap, int maxDoc, int valueStart) {
+      super(docMap);
       this.maxDoc = maxDoc;
       this.valueStart = valueStart;
     }
@@ -67,7 +67,7 @@ public class TestDocIDMerger extends LuceneTestCase {
           public int get(int docID) {
             return docBase + docID;
           }
-        }, null, maxDoc, valueStart));
+        }, maxDoc, valueStart));
       valueStart += maxDoc;
     }
 
@@ -92,8 +92,8 @@ public class TestDocIDMerger extends LuceneTestCase {
     final int maxDoc;
     final int index;
 
-    public TestSubSorted(MergeState.DocMap docMap, Bits liveDocs, int maxDoc, int index) {
-      super(docMap, liveDocs);
+    public TestSubSorted(MergeState.DocMap docMap, int maxDoc, int index) {
+      super(docMap);
       this.maxDoc = maxDoc;
       this.index = index;
     }
@@ -155,7 +155,7 @@ public class TestDocIDMerger extends LuceneTestCase {
           public int get(int docID) {
             return docMap[docID];
           }
-        }, null, docMap.length, i));
+        }, docMap.length, i));
     }
 
     // nocommit test w/ deletions too

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/365436ea/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
index 4e26063..15d18fb 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestIndexSorting.java
@@ -574,7 +574,7 @@ public class TestIndexSorting extends LuceneTestCase {
     IllegalArgumentException expected = expectThrows(IllegalArgumentException.class, () -> {
       iwc.setIndexSort(Sort.RELEVANCE);
     });
-    assertEquals("invalid SortField type: must be one of [STRING, INT, FLOAT, LONG, DOUBLE, BYTES] but got: <score>", expected.getMessage());
+    assertEquals("invalid SortField type: must be one of [STRING, INT, FLOAT, LONG, DOUBLE] but got: <score>", expected.getMessage());
   }
 
   // you can't change the index sort on an existing index: