You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2020/11/10 13:25:06 UTC

[lucene-solr] branch master updated: LUCENE-9600: Clean up package name conflicts between misc and core modules (#2064)

This is an automated email from the ASF dual-hosted git repository.

tomoko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new d111039  LUCENE-9600: Clean up package name conflicts between misc and core modules (#2064)
d111039 is described below

commit d1110394e9c963c999b261b8ac6dac1df518628d
Author: Tomoko Uchida <to...@gmail.com>
AuthorDate: Tue Nov 10 22:24:48 2020 +0900

    LUCENE-9600: Clean up package name conflicts between misc and core modules (#2064)
---
 gradle/documentation/render-javadoc.gradle             | 15 +++++++--------
 lucene/CHANGES.txt                                     |  4 ++--
 lucene/MIGRATE.md                                      | 12 ++++++++++++
 .../org/apache/lucene/document/InetAddressPoint.java   |  0
 .../org/apache/lucene/document/InetAddressRange.java   |  0
 .../apache/lucene/document/TestInetAddressPoint.java   |  0
 .../lucene/search/TestInetAddressRangeQueries.java     |  0
 .../org/apache/lucene/misc/CollectorMemoryTracker.java |  2 +-
 .../java/org/apache/lucene/misc/IndexMergeTool.java    |  2 +-
 .../lucene/{ => misc}/document/LazyDocument.java       |  3 ++-
 .../org/apache/lucene/{ => misc}/document/package.html |  0
 .../apache/lucene/{ => misc}/index/IndexSplitter.java  | 17 ++++++-----------
 .../{ => misc}/index/MultiPassIndexSplitter.java       | 18 ++++++++++++++++--
 .../lucene/{ => misc}/index/PKIndexSplitter.java       |  9 ++++++++-
 .../org/apache/lucene/{ => misc}/index/package.html    |  0
 .../{ => misc}/search/DiversifiedTopDocsCollector.java | 11 +++++++++--
 .../lucene/{ => misc}/search/DocValuesStats.java       |  2 +-
 .../{ => misc}/search/DocValuesStatsCollector.java     |  6 +++++-
 .../search/MemoryAccountingBitsetCollector.java        |  4 +++-
 .../org/apache/lucene/{ => misc}/search/package.html   |  0
 .../search/similarity/LegacyBM25Similarity.java        |  2 +-
 .../lucene/{ => misc}/search/similarity/package.html   |  0
 .../{ => misc}/store/HardlinkCopyDirectoryWrapper.java |  7 ++++++-
 .../apache/lucene/{ => misc}/store/NativePosixUtil.cpp |  0
 .../lucene/{ => misc}/store/NativePosixUtil.java       |  2 +-
 .../lucene/{ => misc}/store/NativeUnixDirectory.java   | 11 ++++++++++-
 .../apache/lucene/{ => misc}/store/RAFDirectory.java   | 12 ++++++++++--
 .../lucene/{ => misc}/store/WindowsDirectory.cpp       |  0
 .../lucene/{ => misc}/store/WindowsDirectory.java      | 10 +++++++++-
 .../org/apache/lucene/{ => misc}/store/package.html    |  0
 .../apache/lucene/{ => misc}/util/MemoryTracker.java   |  2 +-
 .../lucene/{ => misc}/util/fst/ListOfOutputs.java      |  4 +++-
 .../{ => misc}/util/fst/UpToTwoPositiveIntOutputs.java |  4 +++-
 .../org/apache/lucene/{ => misc}/util/fst/package.html |  0
 .../org/apache/lucene/{ => misc}/util/package.html     |  0
 lucene/misc/src/java/overview.html                     |  2 +-
 .../lucene/{ => misc}/document/TestLazyDocument.java   |  6 +++++-
 .../lucene/{ => misc}/index/TestIndexSplitter.java     | 11 +++++++++--
 .../{ => misc}/index/TestMultiPassIndexSplitter.java   |  9 ++++++++-
 .../lucene/{ => misc}/index/TestPKIndexSplitter.java   |  8 +++++++-
 .../search/TestDiversifiedTopDocsCollector.java        | 16 +++++++++++++++-
 .../{ => misc}/search/TestDocValuesStatsCollector.java | 18 +++++++++++-------
 .../search/TestMemoryAccountingBitsetCollector.java    |  6 +++++-
 .../search/similarity/TestLegacyBM25Similarity.java    |  2 +-
 .../store/TestHardLinkCopyDirectoryWrapper.java        | 12 +++++++++++-
 .../lucene/{ => misc}/store/TestRAFDirectory.java      |  5 ++++-
 .../{ => misc}/util/TestCollectorMemoryTracker.java    |  3 ++-
 .../lucene/{ => misc}/util/fst/TestFSTsMisc.java       | 16 +++++++++-------
 .../src/java/org/apache/lucene/index/DocHelper.java    |  3 ++-
 .../src/java/org/apache/lucene/util/fst/FSTTester.java |  8 ++++++--
 .../solr/handler/component/RealTimeGetComponent.java   |  2 +-
 .../org/apache/solr/search/SolrDocumentFetcher.java    |  2 +-
 .../similarities/LegacyBM25SimilarityFactory.java      |  2 +-
 .../search/similarities/SchemaSimilarityFactory.java   |  2 +-
 .../java/org/apache/solr/update/SolrIndexSplitter.java |  2 +-
 .../test/org/apache/solr/BasicFunctionalityTest.java   |  2 +-
 .../test/org/apache/solr/search/LargeFieldTest.java    |  2 +-
 .../similarities/TestLegacyBM25SimilarityFactory.java  |  2 +-
 58 files changed, 221 insertions(+), 79 deletions(-)

diff --git a/gradle/documentation/render-javadoc.gradle b/gradle/documentation/render-javadoc.gradle
index 35f400a..054b652 100644
--- a/gradle/documentation/render-javadoc.gradle
+++ b/gradle/documentation/render-javadoc.gradle
@@ -205,15 +205,14 @@ configure(project(":lucene:misc")) {
   project.tasks.withType(RenderJavadocTask) {
     // TODO: fix missing javadocs
     javadocMissingLevel = "class"
-    // TODO: clean up split packages
     javadocMissingIgnore = [
-        "org.apache.lucene.search",
-        "org.apache.lucene.search.similarity",
-        "org.apache.lucene.util",
-        "org.apache.lucene.util.fst",
-        "org.apache.lucene.store",
-        "org.apache.lucene.document",
-        "org.apache.lucene.index"
+        "org.apache.lucene.misc.search",
+        "org.apache.lucene.misc.search.similarity",
+        "org.apache.lucene.misc.util",
+        "org.apache.lucene.misc.util.fst",
+        "org.apache.lucene.misc.store",
+        "org.apache.lucene.misc.document",
+        "org.apache.lucene.misc.index"
     ]
   }
 }
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 2d0b866..09a720d 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -73,8 +73,8 @@ API Changes
   in Lucenes IndexWriter. The interface is not sufficient to efficiently
   replace the functionality with reasonable efforts. (Simon Willnauer)
 
-* LUCENE-9317 LUCENE-9318 LUCENE-9319 LUCENE-9558 : Clean up package name conflicts between modules.
-  See MIGRATE.md for details. (David Ryan, Tomoko Uchida, Uwe Schindler, Dawid Weiss)
+* LUCENE-9317 LUCENE-9318 LUCENE-9319 LUCENE-9558 LUCENE-9600 : Clean up package name conflicts
+  between modules. See MIGRATE.md for details. (David Ryan, Tomoko Uchida, Uwe Schindler, Dawid Weiss)
 
 Improvements
 
diff --git a/lucene/MIGRATE.md b/lucene/MIGRATE.md
index c18d418..f36b0e9 100644
--- a/lucene/MIGRATE.md
+++ b/lucene/MIGRATE.md
@@ -1,5 +1,17 @@
 # Apache Lucene Migration Guide
 
+## Packages in misc module are renamed (LUCENE-9600)
+
+Following package names in misc module are renamed.
+
+- o.a.l.document is renamed to o.a.l.misc.document
+- o.a.l.index is renamed to o.a.l.misc.index
+- o.a.l.search is renamed to o.a.l.misc.search
+- o.a.l.store is renamed to o.a.l.misc.store
+- o.a.l.util is renamed to o.a.l.misc.util
+
+Also, o.a.l.document.InetAddressPoint and o.a.l.document.InetAddressRange are moved to core module.
+
 ## Packages in sandbox module are renamed (LUCENE-9319)
 
 Following package names in sandbox module are renamed.
diff --git a/lucene/misc/src/java/org/apache/lucene/document/InetAddressPoint.java b/lucene/core/src/java/org/apache/lucene/document/InetAddressPoint.java
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/document/InetAddressPoint.java
rename to lucene/core/src/java/org/apache/lucene/document/InetAddressPoint.java
diff --git a/lucene/misc/src/java/org/apache/lucene/document/InetAddressRange.java b/lucene/core/src/java/org/apache/lucene/document/InetAddressRange.java
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/document/InetAddressRange.java
rename to lucene/core/src/java/org/apache/lucene/document/InetAddressRange.java
diff --git a/lucene/misc/src/test/org/apache/lucene/document/TestInetAddressPoint.java b/lucene/core/src/test/org/apache/lucene/document/TestInetAddressPoint.java
similarity index 100%
rename from lucene/misc/src/test/org/apache/lucene/document/TestInetAddressPoint.java
rename to lucene/core/src/test/org/apache/lucene/document/TestInetAddressPoint.java
diff --git a/lucene/misc/src/test/org/apache/lucene/search/TestInetAddressRangeQueries.java b/lucene/core/src/test/org/apache/lucene/search/TestInetAddressRangeQueries.java
similarity index 100%
rename from lucene/misc/src/test/org/apache/lucene/search/TestInetAddressRangeQueries.java
rename to lucene/core/src/test/org/apache/lucene/search/TestInetAddressRangeQueries.java
diff --git a/lucene/misc/src/java/org/apache/lucene/misc/CollectorMemoryTracker.java b/lucene/misc/src/java/org/apache/lucene/misc/CollectorMemoryTracker.java
index 544b760..10d6b14 100644
--- a/lucene/misc/src/java/org/apache/lucene/misc/CollectorMemoryTracker.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/CollectorMemoryTracker.java
@@ -19,7 +19,7 @@ package org.apache.lucene.misc;
 
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.lucene.util.MemoryTracker;
+import org.apache.lucene.misc.util.MemoryTracker;
 
 /**
  * Default implementation of {@code MemoryTracker} that tracks
diff --git a/lucene/misc/src/java/org/apache/lucene/misc/IndexMergeTool.java b/lucene/misc/src/java/org/apache/lucene/misc/IndexMergeTool.java
index 2a69acb..207283b 100644
--- a/lucene/misc/src/java/org/apache/lucene/misc/IndexMergeTool.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/IndexMergeTool.java
@@ -22,7 +22,7 @@ import org.apache.lucene.index.IndexWriterConfig.OpenMode;
 import org.apache.lucene.index.MergePolicy;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
-import org.apache.lucene.store.HardlinkCopyDirectoryWrapper;
+import org.apache.lucene.misc.store.HardlinkCopyDirectoryWrapper;
 import org.apache.lucene.util.SuppressForbidden;
 
 import java.nio.file.Paths;
diff --git a/lucene/misc/src/java/org/apache/lucene/document/LazyDocument.java b/lucene/misc/src/java/org/apache/lucene/misc/document/LazyDocument.java
similarity index 98%
rename from lucene/misc/src/java/org/apache/lucene/document/LazyDocument.java
rename to lucene/misc/src/java/org/apache/lucene/misc/document/LazyDocument.java
index 1f2cfe8..ef1d6fe 100644
--- a/lucene/misc/src/java/org/apache/lucene/document/LazyDocument.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/document/LazyDocument.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.document;
+package org.apache.lucene.misc.document;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -27,6 +27,7 @@ import java.util.Set;
 
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.document.Document;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexableField;
diff --git a/lucene/misc/src/java/org/apache/lucene/document/package.html b/lucene/misc/src/java/org/apache/lucene/misc/document/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/document/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/document/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/index/IndexSplitter.java b/lucene/misc/src/java/org/apache/lucene/misc/index/IndexSplitter.java
similarity index 95%
rename from lucene/misc/src/java/org/apache/lucene/index/IndexSplitter.java
rename to lucene/misc/src/java/org/apache/lucene/misc/index/IndexSplitter.java
index efc6ba3..9388840 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/IndexSplitter.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/index/IndexSplitter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -28,6 +28,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
+import org.apache.lucene.index.SegmentCommitInfo;
+import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.SuppressForbidden;
 
@@ -105,14 +108,6 @@ public class IndexSplitter {
     }
   }
 
-  private int getIdx(String name) {
-    for (int x = 0; x < infos.size(); x++) {
-      if (name.equals(infos.info(x).info.name))
-        return x;
-    }
-    return -1;
-  }
-
   private SegmentCommitInfo getInfo(String name) {
     for (int x = 0; x < infos.size(); x++) {
       if (name.equals(infos.info(x).info.name))
@@ -123,8 +118,8 @@ public class IndexSplitter {
 
   public void remove(String[] segs) throws IOException {
     for (String n : segs) {
-      int idx = getIdx(n);
-      infos.remove(idx);
+      SegmentCommitInfo info = getInfo(n);
+      infos.remove(info);
     }
     infos.changed();
     infos.commit(fsDir);
diff --git a/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java b/lucene/misc/src/java/org/apache/lucene/misc/index/MultiPassIndexSplitter.java
similarity index 93%
rename from lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
rename to lucene/misc/src/java/org/apache/lucene/misc/index/MultiPassIndexSplitter.java
index 6d7e4ea..2f4c001 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/MultiPassIndexSplitter.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/index/MultiPassIndexSplitter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import java.io.IOException;
 import java.nio.file.Files;
@@ -23,7 +23,17 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.lucene.index.BaseCompositeReader;
+import org.apache.lucene.index.CodecReader;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.FilterCodecReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.index.SlowCodecReaderWrapper;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.FixedBitSet;
@@ -101,7 +111,7 @@ public class MultiPassIndexSplitter {
           .setOpenMode(OpenMode.CREATE));
       System.err.println("Writing part " + (i + 1) + " ...");
       // pass the subreaders directly, as our wrapper's numDocs/hasDeletetions are not up-to-date
-      final List<? extends FakeDeleteLeafIndexReader> sr = input.getSequentialSubReaders();
+      final List<? extends FakeDeleteLeafIndexReader> sr = input.getSequentialSubReadersWrapper();
       w.addIndexes(sr.toArray(new CodecReader[sr.size()])); // TODO: maybe take List<IR> here?
       w.close();
     }
@@ -211,6 +221,10 @@ public class MultiPassIndexSplitter {
       return null;
     }
 
+    final List<? extends FakeDeleteLeafIndexReader> getSequentialSubReadersWrapper() {
+      return getSequentialSubReaders();
+    }
+
     // no need to override numDocs/hasDeletions,
     // as we pass the subreaders directly to IW.addIndexes().
   }
diff --git a/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java b/lucene/misc/src/java/org/apache/lucene/misc/index/PKIndexSplitter.java
similarity index 94%
rename from lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java
rename to lucene/misc/src/java/org/apache/lucene/misc/index/PKIndexSplitter.java
index 0854268..aef5c13 100644
--- a/lucene/misc/src/java/org/apache/lucene/index/PKIndexSplitter.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/index/PKIndexSplitter.java
@@ -14,12 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import java.io.IOException;
 import java.util.List;
 
+import org.apache.lucene.index.CodecReader;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.FilterCodecReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.index.Term;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
diff --git a/lucene/misc/src/java/org/apache/lucene/index/package.html b/lucene/misc/src/java/org/apache/lucene/misc/index/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/index/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/index/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/search/DiversifiedTopDocsCollector.java b/lucene/misc/src/java/org/apache/lucene/misc/search/DiversifiedTopDocsCollector.java
similarity index 94%
rename from lucene/misc/src/java/org/apache/lucene/search/DiversifiedTopDocsCollector.java
rename to lucene/misc/src/java/org/apache/lucene/misc/search/DiversifiedTopDocsCollector.java
index 5228e6d..5e88cd8 100644
--- a/lucene/misc/src/java/org/apache/lucene/search/DiversifiedTopDocsCollector.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/search/DiversifiedTopDocsCollector.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -23,7 +23,14 @@ import java.util.Stack;
 
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.NumericDocValues;
-import org.apache.lucene.search.DiversifiedTopDocsCollector.ScoreDocKey;
+import org.apache.lucene.misc.search.DiversifiedTopDocsCollector.ScoreDocKey;
+import org.apache.lucene.search.LeafCollector;
+import org.apache.lucene.search.Scorable;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.ScoreMode;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.search.TopDocsCollector;
+import org.apache.lucene.search.TotalHits;
 import org.apache.lucene.util.PriorityQueue;
 
 /**
diff --git a/lucene/misc/src/java/org/apache/lucene/search/DocValuesStats.java b/lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStats.java
similarity index 99%
rename from lucene/misc/src/java/org/apache/lucene/search/DocValuesStats.java
rename to lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStats.java
index f3319ee..323c1e4 100644
--- a/lucene/misc/src/java/org/apache/lucene/search/DocValuesStats.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStats.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 
diff --git a/lucene/misc/src/java/org/apache/lucene/search/DocValuesStatsCollector.java b/lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStatsCollector.java
similarity index 91%
rename from lucene/misc/src/java/org/apache/lucene/search/DocValuesStatsCollector.java
rename to lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStatsCollector.java
index 732a5f7..e429ba4 100644
--- a/lucene/misc/src/java/org/apache/lucene/search/DocValuesStatsCollector.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/search/DocValuesStatsCollector.java
@@ -14,11 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 
 import org.apache.lucene.index.LeafReaderContext;
+import org.apache.lucene.search.Collector;
+import org.apache.lucene.search.LeafCollector;
+import org.apache.lucene.search.Scorable;
+import org.apache.lucene.search.ScoreMode;
 
 /** A {@link Collector} which computes statistics for a DocValues field. */
 public class DocValuesStatsCollector implements Collector {
diff --git a/lucene/misc/src/java/org/apache/lucene/search/MemoryAccountingBitsetCollector.java b/lucene/misc/src/java/org/apache/lucene/misc/search/MemoryAccountingBitsetCollector.java
similarity index 93%
rename from lucene/misc/src/java/org/apache/lucene/search/MemoryAccountingBitsetCollector.java
rename to lucene/misc/src/java/org/apache/lucene/misc/search/MemoryAccountingBitsetCollector.java
index 953bfaa..22b17d9 100644
--- a/lucene/misc/src/java/org/apache/lucene/search/MemoryAccountingBitsetCollector.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/search/MemoryAccountingBitsetCollector.java
@@ -15,12 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.misc.CollectorMemoryTracker;
+import org.apache.lucene.search.ScoreMode;
+import org.apache.lucene.search.SimpleCollector;
 import org.apache.lucene.util.FixedBitSet;
 
 /** Bitset collector which supports memory tracking */
diff --git a/lucene/misc/src/java/org/apache/lucene/search/package.html b/lucene/misc/src/java/org/apache/lucene/misc/search/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/search/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/search/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/search/similarity/LegacyBM25Similarity.java b/lucene/misc/src/java/org/apache/lucene/misc/search/similarity/LegacyBM25Similarity.java
similarity index 98%
rename from lucene/misc/src/java/org/apache/lucene/search/similarity/LegacyBM25Similarity.java
rename to lucene/misc/src/java/org/apache/lucene/misc/search/similarity/LegacyBM25Similarity.java
index 300c1c0..a005dcc 100644
--- a/lucene/misc/src/java/org/apache/lucene/search/similarity/LegacyBM25Similarity.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/search/similarity/LegacyBM25Similarity.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search.similarity;
+package org.apache.lucene.misc.search.similarity;
 
 import org.apache.lucene.index.FieldInvertState;
 import org.apache.lucene.search.CollectionStatistics;
diff --git a/lucene/misc/src/java/org/apache/lucene/search/similarity/package.html b/lucene/misc/src/java/org/apache/lucene/misc/search/similarity/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/search/similarity/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/search/similarity/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/store/HardlinkCopyDirectoryWrapper.java b/lucene/misc/src/java/org/apache/lucene/misc/store/HardlinkCopyDirectoryWrapper.java
similarity index 95%
rename from lucene/misc/src/java/org/apache/lucene/store/HardlinkCopyDirectoryWrapper.java
rename to lucene/misc/src/java/org/apache/lucene/misc/store/HardlinkCopyDirectoryWrapper.java
index c7b164a..816595b 100644
--- a/lucene/misc/src/java/org/apache/lucene/store/HardlinkCopyDirectoryWrapper.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/store/HardlinkCopyDirectoryWrapper.java
@@ -15,7 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
+
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.FilterDirectory;
+import org.apache.lucene.store.IOContext;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
diff --git a/lucene/misc/src/java/org/apache/lucene/store/NativePosixUtil.cpp b/lucene/misc/src/java/org/apache/lucene/misc/store/NativePosixUtil.cpp
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/store/NativePosixUtil.cpp
rename to lucene/misc/src/java/org/apache/lucene/misc/store/NativePosixUtil.cpp
diff --git a/lucene/misc/src/java/org/apache/lucene/store/NativePosixUtil.java b/lucene/misc/src/java/org/apache/lucene/misc/store/NativePosixUtil.java
similarity index 98%
rename from lucene/misc/src/java/org/apache/lucene/store/NativePosixUtil.java
rename to lucene/misc/src/java/org/apache/lucene/misc/store/NativePosixUtil.java
index 6397ec7..d13dd4b 100644
--- a/lucene/misc/src/java/org/apache/lucene/store/NativePosixUtil.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/store/NativePosixUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
 
 import java.io.IOException;
 import java.io.FileDescriptor;
diff --git a/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java b/lucene/misc/src/java/org/apache/lucene/misc/store/NativeUnixDirectory.java
similarity index 97%
rename from lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
rename to lucene/misc/src/java/org/apache/lucene/misc/store/NativeUnixDirectory.java
index 44fe418..8511754 100644
--- a/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/store/NativeUnixDirectory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
 
 import java.io.EOFException;
 import java.io.FileDescriptor;
@@ -25,7 +25,16 @@ import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.nio.file.Path;
 
+import org.apache.lucene.misc.store.NativePosixUtil;
+import org.apache.lucene.store.BufferedIndexInput;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.FSLockFactory;
+import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IOContext.Context;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.LockFactory;
 import org.apache.lucene.util.SuppressForbidden;
 
 // TODO
diff --git a/lucene/misc/src/java/org/apache/lucene/store/RAFDirectory.java b/lucene/misc/src/java/org/apache/lucene/misc/store/RAFDirectory.java
similarity index 93%
rename from lucene/misc/src/java/org/apache/lucene/store/RAFDirectory.java
rename to lucene/misc/src/java/org/apache/lucene/misc/store/RAFDirectory.java
index f1643c2..2f79a93 100644
--- a/lucene/misc/src/java/org/apache/lucene/store/RAFDirectory.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/store/RAFDirectory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
 
 import java.io.EOFException;
 import java.io.File;
@@ -23,6 +23,14 @@ import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
 import java.nio.file.Path;
 
+import org.apache.lucene.store.BufferedIndexInput;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.FSLockFactory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.LockFactory;
+import org.apache.lucene.store.MMapDirectory;
+import org.apache.lucene.store.NIOFSDirectory;
 import org.apache.lucene.util.SuppressForbidden;
 
 /** A straightforward implementation of {@link FSDirectory}
@@ -30,7 +38,7 @@ import org.apache.lucene.util.SuppressForbidden;
  *  poor concurrent performance (multiple threads will
  *  bottleneck) as it synchronizes when multiple threads
  *  read from the same file.  It's usually better to use
- *  {@link NIOFSDirectory} or {@link MMapDirectory} instead. 
+ *  {@link NIOFSDirectory} or {@link MMapDirectory} instead.
  *  <p>
  *  NOTE: Because this uses RandomAccessFile, it will generally
  *  not work with non-default filesystem providers. It is only
diff --git a/lucene/misc/src/java/org/apache/lucene/store/WindowsDirectory.cpp b/lucene/misc/src/java/org/apache/lucene/misc/store/WindowsDirectory.cpp
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/store/WindowsDirectory.cpp
rename to lucene/misc/src/java/org/apache/lucene/misc/store/WindowsDirectory.cpp
diff --git a/lucene/misc/src/java/org/apache/lucene/store/WindowsDirectory.java b/lucene/misc/src/java/org/apache/lucene/misc/store/WindowsDirectory.java
similarity index 92%
rename from lucene/misc/src/java/org/apache/lucene/store/WindowsDirectory.java
rename to lucene/misc/src/java/org/apache/lucene/misc/store/WindowsDirectory.java
index 43b8e12..4f96c82 100644
--- a/lucene/misc/src/java/org/apache/lucene/store/WindowsDirectory.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/store/WindowsDirectory.java
@@ -14,7 +14,15 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
+
+import org.apache.lucene.store.BufferedIndexInput;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.FSLockFactory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.LockFactory;
 
 import java.io.IOException;
 import java.io.EOFException;
diff --git a/lucene/misc/src/java/org/apache/lucene/store/package.html b/lucene/misc/src/java/org/apache/lucene/misc/store/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/store/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/store/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/util/MemoryTracker.java b/lucene/misc/src/java/org/apache/lucene/misc/util/MemoryTracker.java
similarity index 96%
rename from lucene/misc/src/java/org/apache/lucene/util/MemoryTracker.java
rename to lucene/misc/src/java/org/apache/lucene/misc/util/MemoryTracker.java
index af94ced..20a45e2 100644
--- a/lucene/misc/src/java/org/apache/lucene/util/MemoryTracker.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/util/MemoryTracker.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.util;
+package org.apache.lucene.misc.util;
 
 /**
  * Tracks dynamic allocations/deallocations of memory for transient objects
diff --git a/lucene/misc/src/java/org/apache/lucene/util/fst/ListOfOutputs.java b/lucene/misc/src/java/org/apache/lucene/misc/util/fst/ListOfOutputs.java
similarity index 98%
rename from lucene/misc/src/java/org/apache/lucene/util/fst/ListOfOutputs.java
rename to lucene/misc/src/java/org/apache/lucene/misc/util/fst/ListOfOutputs.java
index da5ce4d..9184736 100644
--- a/lucene/misc/src/java/org/apache/lucene/util/fst/ListOfOutputs.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/util/fst/ListOfOutputs.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.util.fst;
+package org.apache.lucene.misc.util.fst;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -24,6 +24,8 @@ import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.DataOutput;
 import org.apache.lucene.util.IntsRef; // javadocs
 import org.apache.lucene.util.RamUsageEstimator;
+import org.apache.lucene.util.fst.FSTCompiler;
+import org.apache.lucene.util.fst.Outputs;
 
 /**
  * Wraps another Outputs implementation and encodes one or
diff --git a/lucene/misc/src/java/org/apache/lucene/util/fst/UpToTwoPositiveIntOutputs.java b/lucene/misc/src/java/org/apache/lucene/misc/util/fst/UpToTwoPositiveIntOutputs.java
similarity index 98%
rename from lucene/misc/src/java/org/apache/lucene/util/fst/UpToTwoPositiveIntOutputs.java
rename to lucene/misc/src/java/org/apache/lucene/misc/util/fst/UpToTwoPositiveIntOutputs.java
index a6e0a66..afa8ac5 100644
--- a/lucene/misc/src/java/org/apache/lucene/util/fst/UpToTwoPositiveIntOutputs.java
+++ b/lucene/misc/src/java/org/apache/lucene/misc/util/fst/UpToTwoPositiveIntOutputs.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.util.fst;
+package org.apache.lucene.misc.util.fst;
 
 import java.io.IOException;
 
@@ -22,6 +22,8 @@ import org.apache.lucene.store.DataInput;
 import org.apache.lucene.store.DataOutput;
 import org.apache.lucene.util.RamUsageEstimator;
 import org.apache.lucene.util.SuppressForbidden;
+import org.apache.lucene.util.fst.FSTCompiler;
+import org.apache.lucene.util.fst.Outputs;
 
 /**
  * An FST {@link Outputs} implementation where each output
diff --git a/lucene/misc/src/java/org/apache/lucene/util/fst/package.html b/lucene/misc/src/java/org/apache/lucene/misc/util/fst/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/util/fst/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/util/fst/package.html
diff --git a/lucene/misc/src/java/org/apache/lucene/util/package.html b/lucene/misc/src/java/org/apache/lucene/misc/util/package.html
similarity index 100%
rename from lucene/misc/src/java/org/apache/lucene/util/package.html
rename to lucene/misc/src/java/org/apache/lucene/misc/util/package.html
diff --git a/lucene/misc/src/java/overview.html b/lucene/misc/src/java/overview.html
index 51181ee..1dec99f 100644
--- a/lucene/misc/src/java/overview.html
+++ b/lucene/misc/src/java/overview.html
@@ -35,7 +35,7 @@ changing norms, finding high freq terms, and others.
 have to compile on your platform.
 
 <p>
-{@link org.apache.lucene.store.NativeUnixDirectory} is a Directory implementation that bypasses the
+{@link org.apache.lucene.misc.store.NativeUnixDirectory} is a Directory implementation that bypasses the
 OS's buffer cache (using direct IO) for any IndexInput and IndexOutput
 used during merging of segments larger than a specified size (default
 10 MB).  This avoids evicting hot pages that are still in-use for
diff --git a/lucene/misc/src/test/org/apache/lucene/document/TestLazyDocument.java b/lucene/misc/src/test/org/apache/lucene/misc/document/TestLazyDocument.java
similarity index 97%
rename from lucene/misc/src/test/org/apache/lucene/document/TestLazyDocument.java
rename to lucene/misc/src/test/org/apache/lucene/misc/document/TestLazyDocument.java
index e76491e..c59e113 100644
--- a/lucene/misc/src/test/org/apache/lucene/document/TestLazyDocument.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/document/TestLazyDocument.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.document;
+package org.apache.lucene.misc.document;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -25,6 +25,10 @@ import java.util.Objects;
 import java.util.Set;
 
 import org.apache.lucene.analysis.*;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.*;
 import org.apache.lucene.search.*;
 import org.apache.lucene.store.*;
diff --git a/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java b/lucene/misc/src/test/org/apache/lucene/misc/index/TestIndexSplitter.java
similarity index 89%
rename from lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
rename to lucene/misc/src/test/org/apache/lucene/misc/index/TestIndexSplitter.java
index bf58e53..448012c 100644
--- a/lucene/misc/src/test/org/apache/lucene/index/TestIndexSplitter.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/index/TestIndexSplitter.java
@@ -14,13 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import java.nio.file.Path;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.DocHelper;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.LogByteSizeMergePolicy;
+import org.apache.lucene.index.MergePolicy;
+import org.apache.lucene.index.SegmentInfos;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.util.LuceneTestCase;
@@ -60,7 +67,7 @@ public class TestIndexSplitter extends LuceneTestCase {
       iw.addDocument(doc);
     }
     iw.commit();
-    DirectoryReader iwReader = iw.getReader();
+    DirectoryReader iwReader = DirectoryReader.open(iw);
     assertEquals(3, iwReader.leaves().size());
     iwReader.close();
     iw.close();
diff --git a/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java b/lucene/misc/src/test/org/apache/lucene/misc/index/TestMultiPassIndexSplitter.java
similarity index 93%
rename from lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
rename to lucene/misc/src/test/org/apache/lucene/misc/index/TestMultiPassIndexSplitter.java
index 688d7c7..0fa318a 100644
--- a/lucene/misc/src/test/org/apache/lucene/index/TestMultiPassIndexSplitter.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/index/TestMultiPassIndexSplitter.java
@@ -14,11 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.MultiTerms;
+import org.apache.lucene.index.NoMergePolicy;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermsEnum;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
diff --git a/lucene/misc/src/test/org/apache/lucene/index/TestPKIndexSplitter.java b/lucene/misc/src/test/org/apache/lucene/misc/index/TestPKIndexSplitter.java
similarity index 93%
rename from lucene/misc/src/test/org/apache/lucene/index/TestPKIndexSplitter.java
rename to lucene/misc/src/test/org/apache/lucene/misc/index/TestPKIndexSplitter.java
index 01278c1..0fc8f44 100644
--- a/lucene/misc/src/test/org/apache/lucene/index/TestPKIndexSplitter.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/index/TestPKIndexSplitter.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.index;
+package org.apache.lucene.misc.index;
 
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
@@ -25,7 +25,13 @@ import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.index.MultiBits;
+import org.apache.lucene.index.NoMergePolicy;
+import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.LuceneTestCase;
diff --git a/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java b/lucene/misc/src/test/org/apache/lucene/misc/search/TestDiversifiedTopDocsCollector.java
similarity index 96%
rename from lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
rename to lucene/misc/src/test/org/apache/lucene/misc/search/TestDiversifiedTopDocsCollector.java
index 03b294d..0786071 100644
--- a/lucene/misc/src/test/org/apache/lucene/search/TestDiversifiedTopDocsCollector.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/search/TestDiversifiedTopDocsCollector.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -34,7 +34,21 @@ import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.SortedDocValues;
 import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.Explanation;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.LeafCollector;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.QueryVisitor;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.ScoreMode;
+import org.apache.lucene.search.Scorer;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.search.Weight;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
diff --git a/lucene/misc/src/test/org/apache/lucene/search/TestDocValuesStatsCollector.java b/lucene/misc/src/test/org/apache/lucene/misc/search/TestDocValuesStatsCollector.java
similarity index 96%
rename from lucene/misc/src/test/org/apache/lucene/search/TestDocValuesStatsCollector.java
rename to lucene/misc/src/test/org/apache/lucene/misc/search/TestDocValuesStatsCollector.java
index aeac785..e88823a 100644
--- a/lucene/misc/src/test/org/apache/lucene/search/TestDocValuesStatsCollector.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/search/TestDocValuesStatsCollector.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -38,12 +38,16 @@ import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.search.DocValuesStats.DoubleDocValuesStats;
-import org.apache.lucene.search.DocValuesStats.LongDocValuesStats;
-import org.apache.lucene.search.DocValuesStats.SortedDocValuesStats;
-import org.apache.lucene.search.DocValuesStats.SortedDoubleDocValuesStats;
-import org.apache.lucene.search.DocValuesStats.SortedLongDocValuesStats;
-import org.apache.lucene.search.DocValuesStats.SortedSetDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.DoubleDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.LongDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.SortedDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.SortedDoubleDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.SortedLongDocValuesStats;
+import org.apache.lucene.misc.search.DocValuesStats.SortedSetDocValuesStats;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.MultiCollector;
+import org.apache.lucene.search.TotalHitCountCollector;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
diff --git a/lucene/misc/src/test/org/apache/lucene/search/TestMemoryAccountingBitsetCollector.java b/lucene/misc/src/test/org/apache/lucene/misc/search/TestMemoryAccountingBitsetCollector.java
similarity index 91%
rename from lucene/misc/src/test/org/apache/lucene/search/TestMemoryAccountingBitsetCollector.java
rename to lucene/misc/src/test/org/apache/lucene/misc/search/TestMemoryAccountingBitsetCollector.java
index fdd163c..9a5c4cd 100644
--- a/lucene/misc/src/test/org/apache/lucene/search/TestMemoryAccountingBitsetCollector.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/search/TestMemoryAccountingBitsetCollector.java
@@ -15,13 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.search;
+package org.apache.lucene.misc.search;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.SortedDocValuesField;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.RandomIndexWriter;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.MultiCollector;
+import org.apache.lucene.search.TotalHitCountCollector;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.misc.CollectorMemoryTracker;
diff --git a/lucene/misc/src/test/org/apache/lucene/search/similarity/TestLegacyBM25Similarity.java b/lucene/misc/src/test/org/apache/lucene/misc/search/similarity/TestLegacyBM25Similarity.java
similarity index 98%
rename from lucene/misc/src/test/org/apache/lucene/search/similarity/TestLegacyBM25Similarity.java
rename to lucene/misc/src/test/org/apache/lucene/misc/search/similarity/TestLegacyBM25Similarity.java
index 9ffdc63..9552741 100644
--- a/lucene/misc/src/test/org/apache/lucene/search/similarity/TestLegacyBM25Similarity.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/search/similarity/TestLegacyBM25Similarity.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.search.similarity;
+package org.apache.lucene.misc.search.similarity;
 
 import java.util.Random;
 
diff --git a/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java b/lucene/misc/src/test/org/apache/lucene/misc/store/TestHardLinkCopyDirectoryWrapper.java
similarity index 90%
rename from lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
rename to lucene/misc/src/test/org/apache/lucene/misc/store/TestHardLinkCopyDirectoryWrapper.java
index 1fc4ccf..5550293 100644
--- a/lucene/misc/src/test/org/apache/lucene/store/TestHardLinkCopyDirectoryWrapper.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/store/TestHardLinkCopyDirectoryWrapper.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
 
 import java.io.IOException;
 import java.net.URI;
@@ -26,8 +26,18 @@ import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Collections;
 
 import org.apache.lucene.codecs.CodecUtil;
+import org.apache.lucene.misc.store.HardlinkCopyDirectoryWrapper;
 import org.apache.lucene.mockfile.FilterPath;
 import org.apache.lucene.mockfile.WindowsFS;
+import org.apache.lucene.store.BaseDirectoryTestCase;
+import org.apache.lucene.store.ByteBuffersDirectory;
+import org.apache.lucene.store.ChecksumIndexInput;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.NIOFSDirectory;
 import org.apache.lucene.util.Constants;
 import org.apache.lucene.util.IOUtils;
 
diff --git a/lucene/misc/src/test/org/apache/lucene/store/TestRAFDirectory.java b/lucene/misc/src/test/org/apache/lucene/misc/store/TestRAFDirectory.java
similarity index 89%
rename from lucene/misc/src/test/org/apache/lucene/store/TestRAFDirectory.java
rename to lucene/misc/src/test/org/apache/lucene/misc/store/TestRAFDirectory.java
index 598c123..f0ca0ec 100644
--- a/lucene/misc/src/test/org/apache/lucene/store/TestRAFDirectory.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/store/TestRAFDirectory.java
@@ -14,7 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.store;
+package org.apache.lucene.misc.store;
+
+import org.apache.lucene.store.BaseDirectoryTestCase;
+import org.apache.lucene.store.Directory;
 
 import java.io.IOException;
 import java.nio.file.Path;
diff --git a/lucene/misc/src/test/org/apache/lucene/util/TestCollectorMemoryTracker.java b/lucene/misc/src/test/org/apache/lucene/misc/util/TestCollectorMemoryTracker.java
similarity index 95%
rename from lucene/misc/src/test/org/apache/lucene/util/TestCollectorMemoryTracker.java
rename to lucene/misc/src/test/org/apache/lucene/misc/util/TestCollectorMemoryTracker.java
index aaa5f6d..402ce04 100644
--- a/lucene/misc/src/test/org/apache/lucene/util/TestCollectorMemoryTracker.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/util/TestCollectorMemoryTracker.java
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.lucene.util;
+package org.apache.lucene.misc.util;
 
 import org.apache.lucene.misc.CollectorMemoryTracker;
+import org.apache.lucene.util.LuceneTestCase;
 
 public class TestCollectorMemoryTracker extends LuceneTestCase {
   public void testAdditionsAndDeletions() {
diff --git a/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java b/lucene/misc/src/test/org/apache/lucene/misc/util/fst/TestFSTsMisc.java
similarity index 94%
rename from lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
rename to lucene/misc/src/test/org/apache/lucene/misc/util/fst/TestFSTsMisc.java
index 9911182..ba1944d 100644
--- a/lucene/misc/src/test/org/apache/lucene/util/fst/TestFSTsMisc.java
+++ b/lucene/misc/src/test/org/apache/lucene/misc/util/fst/TestFSTsMisc.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.lucene.util.fst;
+package org.apache.lucene.misc.util.fst;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -30,10 +30,12 @@ import org.apache.lucene.util.IntsRef;
 import org.apache.lucene.util.IntsRefBuilder;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
-import org.apache.lucene.util.fst.UpToTwoPositiveIntOutputs.TwoLongs;
-
-import static org.apache.lucene.util.fst.FSTTester.getRandomString;
-import static org.apache.lucene.util.fst.FSTTester.toIntsRef;
+import org.apache.lucene.misc.util.fst.UpToTwoPositiveIntOutputs.TwoLongs;
+import org.apache.lucene.util.fst.FST;
+import org.apache.lucene.util.fst.FSTCompiler;
+import org.apache.lucene.util.fst.FSTTester;
+import org.apache.lucene.util.fst.PositiveIntOutputs;
+import org.apache.lucene.util.fst.Util;
 
 public class TestFSTsMisc extends LuceneTestCase {
 
@@ -68,8 +70,8 @@ public class TestFSTsMisc extends LuceneTestCase {
         Set<IntsRef> termsSet = new HashSet<>();
         IntsRef[] terms = new IntsRef[numWords];
         while(termsSet.size() < numWords) {
-          final String term = getRandomString(random);
-          termsSet.add(toIntsRef(term, inputMode));
+          final String term = FSTTester.getRandomString(random);
+          termsSet.add(FSTTester.toIntsRef(term, inputMode));
         }
         doTest(inputMode, termsSet.toArray(new IntsRef[termsSet.size()]));
       }
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java b/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
index 8a7a903..418e5e6 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/DocHelper.java
@@ -35,7 +35,8 @@ import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.lucene.store.Directory;
 
-class DocHelper {
+/** Helper functions for tests that handles documents */
+public class DocHelper {
   
   public static final FieldType customType;
   public static final String FIELD_1_TEXT = "field one text";
diff --git a/lucene/test-framework/src/java/org/apache/lucene/util/fst/FSTTester.java b/lucene/test-framework/src/java/org/apache/lucene/util/fst/FSTTester.java
index e844a5e..b6a320a 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/util/fst/FSTTester.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/util/fst/FSTTester.java
@@ -95,7 +95,11 @@ public class FSTTester<T> {
     return br;
   }
 
-  static String getRandomString(Random random) {
+  /**
+   * [LUCENE-9600] This was made public because a misc module test depends on it.
+   * It is not recommended for generic usecase; consider {@link com.carrotsearch.randomizedtesting.generators.RandomStrings} to generate random strings.
+   */
+  public static String getRandomString(Random random) {
     final String term;
     if (random.nextBoolean()) {
       term = TestUtil.randomRealisticUnicodeString(random);
@@ -121,7 +125,7 @@ public class FSTTester<T> {
     return new String(buffer, 0, end);
   }
 
-  static IntsRef toIntsRef(String s, int inputMode) {
+  public static IntsRef toIntsRef(String s, int inputMode) {
     return toIntsRef(s, inputMode, new IntsRefBuilder());
   }
 
diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index 7956143..d824bd5 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -791,7 +791,7 @@ public class RealTimeGetComponent extends SearchComponent
   }
 
   /**
-   * Ensure we don't have {@link org.apache.lucene.document.LazyDocument.LazyField} or equivalent.
+   * Ensure we don't have {@link org.apache.lucene.misc.document.LazyDocument.LazyField} or equivalent.
    * It can pose problems if the searcher is about to be closed and we haven't fetched a value yet.
    */
   private static IndexableField materialize(IndexableField in) {
diff --git a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
index 76b1737..fccd5d8 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
@@ -41,7 +41,7 @@ import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.DocumentStoredFieldVisitor;
 import org.apache.lucene.document.FieldType;
-import org.apache.lucene.document.LazyDocument;
+import org.apache.lucene.misc.document.LazyDocument;
 import org.apache.lucene.document.StoredField;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.BinaryDocValues;
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/LegacyBM25SimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/LegacyBM25SimilarityFactory.java
index 235a410..66dd802 100644
--- a/solr/core/src/java/org/apache/solr/search/similarities/LegacyBM25SimilarityFactory.java
+++ b/solr/core/src/java/org/apache/solr/search/similarities/LegacyBM25SimilarityFactory.java
@@ -17,7 +17,7 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.Similarity;
-import org.apache.lucene.search.similarity.LegacyBM25Similarity;
+import org.apache.lucene.misc.search.similarity.LegacyBM25Similarity;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.schema.SimilarityFactory;
 
diff --git a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
index e682b9ee..0b174a6 100644
--- a/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
+++ b/solr/core/src/java/org/apache/solr/search/similarities/SchemaSimilarityFactory.java
@@ -19,7 +19,7 @@ package org.apache.solr.search.similarities;
 import org.apache.lucene.search.similarities.BM25Similarity;
 import org.apache.lucene.search.similarities.PerFieldSimilarityWrapper;
 import org.apache.lucene.search.similarities.Similarity;
-import org.apache.lucene.search.similarity.LegacyBM25Similarity;
+import org.apache.lucene.misc.search.similarity.LegacyBM25Similarity;
 import org.apache.lucene.util.Version;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
diff --git a/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java b/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java
index 2b8b86f..559a732 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrIndexSplitter.java
@@ -50,7 +50,7 @@ import org.apache.lucene.search.ScoreMode;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.Weight;
 import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.HardlinkCopyDirectoryWrapper;
+import org.apache.lucene.misc.store.HardlinkCopyDirectoryWrapper;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.Lock;
 import org.apache.lucene.util.BitSetIterator;
diff --git a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
index 0630dec..60e1607 100644
--- a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
+++ b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
@@ -32,7 +32,7 @@ import com.codahale.metrics.Gauge;
 import com.codahale.metrics.Metric;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.document.LazyDocument;
+import org.apache.lucene.misc.document.LazyDocument;
 import org.apache.lucene.index.IndexableField;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
diff --git a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
index 48378f9..007b821 100644
--- a/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
+++ b/solr/core/src/test/org/apache/solr/search/LargeFieldTest.java
@@ -21,7 +21,7 @@ import java.util.Arrays;
 import java.util.Collections;
 
 import org.apache.lucene.document.Document;
-import org.apache.lucene.document.LazyDocument;
+import org.apache.lucene.misc.document.LazyDocument;
 import org.apache.lucene.index.IndexableField;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.schema.IndexSchema;
diff --git a/solr/core/src/test/org/apache/solr/search/similarities/TestLegacyBM25SimilarityFactory.java b/solr/core/src/test/org/apache/solr/search/similarities/TestLegacyBM25SimilarityFactory.java
index e4c04b5..e13e153 100644
--- a/solr/core/src/test/org/apache/solr/search/similarities/TestLegacyBM25SimilarityFactory.java
+++ b/solr/core/src/test/org/apache/solr/search/similarities/TestLegacyBM25SimilarityFactory.java
@@ -17,7 +17,7 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.Similarity;
-import org.apache.lucene.search.similarity.LegacyBM25Similarity;
+import org.apache.lucene.misc.search.similarity.LegacyBM25Similarity;
 import org.junit.BeforeClass;
 
 /**