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

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

commit c22cfaa62391951646a8844aa999a0e035b9c412
Author: Ishan Chattopadhyaya <[email protected]>
AuthorDate: Mon Jan 13 11:13:45 2025 +0530

    WIP: Upgrading to Lucene 10
---
 build.gradle                                       |  6 +++++
 gradle/libs.versions.toml                          |  2 +-
 .../org/apache/solr/core/MMapDirectoryFactory.java |  2 --
 .../org/apache/solr/core/SchemaCodecFactory.java   |  6 ++---
 .../src/java/org/apache/solr/core/SolrConfig.java  |  4 ++--
 .../java/org/apache/solr/handler/BlobHandler.java  |  4 ++--
 .../apache/solr/handler/MoreLikeThisHandler.java   |  8 +++----
 .../solr/handler/admin/api/GetSegmentData.java     | 14 +++++------
 .../solr/handler/component/ExpandComponent.java    |  4 ++--
 .../handler/component/QueryElevationComponent.java |  2 +-
 .../solr/index/SlowCompositeReaderWrapper.java     |  6 ++---
 .../java/org/apache/solr/parser/QueryParser.java   |  4 ++--
 .../apache/solr/parser/SolrQueryParserBase.java    | 24 +++++++++----------
 .../org/apache/solr/request/DocValuesStats.java    |  2 +-
 .../org/apache/solr/request/IntervalFacets.java    |  2 +-
 .../java/org/apache/solr/request/SimpleFacets.java |  8 +++----
 .../transform/ChildDocTransformerFactory.java      |  5 ++--
 .../org/apache/solr/schema/CurrencyFieldType.java  |  4 ++--
 .../src/java/org/apache/solr/schema/FieldType.java | 10 ++++----
 .../apache/solr/schema/FieldTypePluginLoader.java  |  6 ++---
 .../solr/search/CollapsingQParserPlugin.java       |  2 +-
 .../search/EarlyTerminatingSortingCollector.java   |  2 +-
 .../apache/solr/search/ExtendedDismaxQParser.java  | 24 +++++++++----------
 .../src/java/org/apache/solr/search/Grouping.java  | 28 +++++++++++-----------
 .../src/java/org/apache/solr/search/JoinQuery.java |  4 ++--
 .../apache/solr/search/MultiThreadedSearcher.java  |  2 +-
 .../solr/search/NumericHidingLeafReader.java       |  2 +-
 .../java/org/apache/solr/search/QueryParsing.java  |  2 +-
 .../java/org/apache/solr/search/QueryUtils.java    |  4 ++--
 .../org/apache/solr/search/ReRankCollector.java    |  2 +-
 .../apache/solr/search/SolrDocumentFetcher.java    |  4 ++--
 .../org/apache/solr/search/SolrIndexSearcher.java  | 10 ++++----
 .../java/org/apache/solr/search/facet/AvgAgg.java  |  2 +-
 .../org/apache/solr/search/facet/CountValsAgg.java |  2 +-
 .../org/apache/solr/search/facet/DocValuesAcc.java |  2 +-
 .../FacetFieldProcessorByEnumTermsStream.java      |  4 ++--
 .../org/apache/solr/search/facet/MinMaxAgg.java    |  2 +-
 .../org/apache/solr/search/facet/MissingAgg.java   |  4 ++--
 .../apache/solr/search/facet/PercentileAgg.java    |  2 +-
 .../java/org/apache/solr/search/facet/SumAgg.java  |  2 +-
 .../org/apache/solr/search/facet/SumsqAgg.java     |  2 +-
 .../distributed/command/GroupConverter.java        | 14 +++++------
 .../distributed/command/TopGroupsFieldCommand.java |  2 +-
 .../StoredFieldsShardRequestFactory.java           |  2 +-
 .../TopGroupsShardResponseProcessor.java           |  2 +-
 .../TopGroupsResultTransformer.java                | 26 ++++++++++----------
 .../GroupedEndResultTransformer.java               | 20 ++++++++--------
 .../MainEndResultTransformer.java                  |  4 ++--
 .../SimpleEndResultTransformer.java                |  4 ++--
 .../solr/search/join/GraphEdgeCollector.java       |  6 ++---
 .../org/apache/solr/search/join/GraphQuery.java    |  8 +++----
 .../join/MultiValueTermOrdinalCollector.java       |  4 ++--
 .../apache/solr/search/mlt/AbstractMLTQParser.java |  6 ++---
 .../apache/solr/search/mlt/SimpleMLTQParser.java   |  2 +-
 .../solr/spelling/WordBreakSolrSpellChecker.java   |  6 ++---
 .../org/apache/solr/uninverting/DocTermOrds.java   |  2 +-
 .../apache/solr/uninverting/UninvertingReader.java |  2 +-
 .../processor/ClassificationUpdateProcessor.java   |  2 +-
 .../java/org/apache/solr/util/SolrPluginUtils.java |  8 +++----
 .../apache/solr/search/TestSolrQueryParser.java    | 27 ++++++++++-----------
 60 files changed, 189 insertions(+), 189 deletions(-)

diff --git a/build.gradle b/build.gradle
index 9439438f9a8..452258b8947 100644
--- a/build.gradle
+++ b/build.gradle
@@ -66,6 +66,12 @@ description = 'Grandparent project for Apache Solr'
 // Propagate version and derived properties across projects.
 allprojects {
   version = rootProject.version
+
+  gradle.projectsEvaluated {
+    tasks.withType(JavaCompile) {
+        options.compilerArgs << "-Xmaxerrs" << "1000"
+    }
+  }
 }
 
 ext {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 685fe012216..55a252c8a02 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -39,7 +39,7 @@ apache-httpcomponents-httpcore = "4.4.16"
 apache-httpcomponents-httpmime = "4.5.14"
 apache-kafka = "3.7.1"
 apache-log4j = "2.21.0"
-apache-lucene = "9.12.1"
+apache-lucene = "10.1.0"
 apache-opennlp = "1.9.4"
 apache-poi = "5.2.2"
 apache-rat = "0.15"
diff --git a/solr/core/src/java/org/apache/solr/core/MMapDirectoryFactory.java 
b/solr/core/src/java/org/apache/solr/core/MMapDirectoryFactory.java
index 30735cc696d..4c1d7a21d46 100644
--- a/solr/core/src/java/org/apache/solr/core/MMapDirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/MMapDirectoryFactory.java
@@ -34,8 +34,6 @@ import org.slf4j.LoggerFactory;
  * <p>Can set the following parameters:
  *
  * <ul>
- *   <li>unmap -- See {@link MMapDirectory#setUseUnmap(boolean)}
- *   <li>preload -- See {@link MMapDirectory#setPreload(boolean)}
  *   <li>maxChunkSize -- The Max chunk size. See {@link 
MMapDirectory#MMapDirectory(Path,
  *       LockFactory, long)}
  * </ul>
diff --git a/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java 
b/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java
index cf1c0f18d0a..a40b9a51161 100644
--- a/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java
@@ -26,8 +26,8 @@ import org.apache.lucene.codecs.KnnVectorsFormat;
 import org.apache.lucene.codecs.KnnVectorsReader;
 import org.apache.lucene.codecs.KnnVectorsWriter;
 import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode;
+import org.apache.lucene.codecs.lucene101.Lucene101Codec;
+import org.apache.lucene.codecs.lucene101.Lucene101Codec.Mode;
 import org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;
@@ -97,7 +97,7 @@ public class SchemaCodecFactory extends CodecFactory 
implements SolrCoreAware {
       log.debug("Using default compressionMode: {}", compressionMode);
     }
     codec =
-        new Lucene912Codec(compressionMode) {
+        new Lucene101Codec(compressionMode) {
           @Override
           public PostingsFormat getPostingsFormatForField(String field) {
             final SchemaField schemaField = 
core.getLatestSchema().getFieldOrNull(field);
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java 
b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index e7adaf8d2f6..b4119a22c84 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -269,12 +269,12 @@ public class SolrConfig implements MapSerializable {
       indexConfig = new SolrIndexConfig(get("indexConfig"), null);
 
       booleanQueryMaxClauseCount =
-          
get("query").get("maxBooleanClauses").intVal(BooleanQuery.getMaxClauseCount());
+          
get("query").get("maxBooleanClauses").intVal(IndexSearcher.getMaxClauseCount());
       if (IndexSearcher.getMaxClauseCount() < booleanQueryMaxClauseCount) {
         log.warn(
             "solrconfig.xml: <maxBooleanClauses> of {} is greater than global 
limit of {} and will have no effect {}",
             booleanQueryMaxClauseCount,
-            BooleanQuery.getMaxClauseCount(),
+                IndexSearcher.getMaxClauseCount(),
             "set 'maxBooleanClauses' in solr.xml to increase global limit");
       }
       prefixQueryMinPrefixLength =
diff --git a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java 
b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
index 540cc03f9ce..fce1cc3ae2c 100644
--- a/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
@@ -142,7 +142,7 @@ public class BlobHandler extends RequestHandlerBase
                     new Sort(new SortField("version", SortField.Type.LONG, 
true)));
 
         long version = 0;
-        if (docs.totalHits.value > 0) {
+        if (docs.totalHits.value() > 0) {
           Document doc = 
req.getSearcher().getDocFetcher().doc(docs.scoreDocs[0].doc);
           Number n = doc.getField("version").numericValue();
           version = n.longValue();
@@ -210,7 +210,7 @@ public class BlobHandler extends RequestHandlerBase
                       qparser.parse(),
                       1,
                       new Sort(new SortField("version", SortField.Type.LONG, 
true)));
-          if (docs.totalHits.value > 0) {
+          if (docs.totalHits.value() > 0) {
             rsp.add(
                 ReplicationAPIBase.FILE_STREAM,
                 new SolrCore.RawWriter() {
diff --git 
a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java 
b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index e3a5d451cf9..10931705906 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -380,7 +380,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase 
{
         BooleanQuery.Builder newQ = new BooleanQuery.Builder();
         
newQ.setMinimumNumberShouldMatch(boostedQuery.getMinimumNumberShouldMatch());
         for (BooleanClause clause : boostedQuery) {
-          Query q = clause.getQuery();
+          Query q = clause.query();
           float originalBoost = 1f;
           if (q instanceof BoostQuery bq) {
             q = bq.getQuery();
@@ -390,8 +390,8 @@ public class MoreLikeThisHandler extends RequestHandlerBase 
{
           q =
               ((fieldBoost != null)
                   ? new BoostQuery(q, fieldBoost * originalBoost)
-                  : clause.getQuery());
-          newQ.add(q, clause.getOccur());
+                  : clause.query());
+          newQ.add(q, clause.occur());
         }
         boostedQuery = newQ.build();
       }
@@ -478,7 +478,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase 
{
         if (maxTerms > -1 && output.size() >= maxTerms) {
           break;
         }
-        Query q = o.getQuery();
+        Query q = o.query();
         float boost = 1f;
         if (q instanceof BoostQuery bq) {
           q = bq.getQuery();
diff --git 
a/solr/core/src/java/org/apache/solr/handler/admin/api/GetSegmentData.java 
b/solr/core/src/java/org/apache/solr/handler/admin/api/GetSegmentData.java
index ceec55ea33f..fb11371c6e8 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/api/GetSegmentData.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/api/GetSegmentData.java
@@ -317,10 +317,10 @@ public class GetSegmentData extends JerseyResource 
implements SegmentsApi {
     if (seg != null) {
       LeafMetaData metaData = seg.getMetaData();
       if (metaData != null) {
-        segmentInfo.createdVersionMajor = metaData.getCreatedVersionMajor();
-        segmentInfo.minVersion = metaData.getMinVersion().toString();
-        if (metaData.getSort() != null) {
-          segmentInfo.sort = metaData.getSort().toString();
+        segmentInfo.createdVersionMajor = metaData.createdVersionMajor();
+        segmentInfo.minVersion = metaData.minVersion().toString();
+        if (metaData.sort() != null) {
+          segmentInfo.sort = metaData.sort().toString();
         }
       }
     }
@@ -417,7 +417,7 @@ public class GetSegmentData extends JerseyResource 
implements SegmentsApi {
     } else {
       flags.append("----");
     }
-    flags.append((fi.hasVectors()) ? 
FieldFlag.TERM_VECTOR_STORED.getAbbreviation() : '-');
+    flags.append((fi.hasTermVectors()) ? 
FieldFlag.TERM_VECTOR_STORED.getAbbreviation() : '-');
     flags.append((fi.omitsNorms()) ? FieldFlag.OMIT_NORMS.getAbbreviation() : 
'-');
 
     flags.append((DOCS == opts) ? FieldFlag.OMIT_TF.getAbbreviation() : '-');
@@ -477,9 +477,9 @@ public class GetSegmentData extends JerseyResource 
implements SegmentsApi {
       if (!hasPoints && (sf.omitNorms() != fi.omitsNorms())) {
         nonCompliant.put("omitNorms", "schema=" + sf.omitNorms() + ", 
segment=" + fi.omitsNorms());
       }
-      if (sf.storeTermVector() != fi.hasVectors()) {
+      if (sf.storeTermVector() != fi.hasTermVectors()) {
         nonCompliant.put(
-            "termVectors", "schema=" + sf.storeTermVector() + ", segment=" + 
fi.hasVectors());
+            "termVectors", "schema=" + sf.storeTermVector() + ", segment=" + 
fi.hasTermVectors());
       }
       if (sf.storeOffsetsWithPositions()
           != (fi.getIndexOptions() == 
IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS)) {
diff --git 
a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java 
b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
index e998411ed4a..736fe02bdb7 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
@@ -778,13 +778,13 @@ public class ExpandComponent extends SearchComponent 
implements PluginInfoInitia
             docs[i] = scoreDoc.doc;
             scores[i] = scoreDoc.score;
           }
-          assert topDocs.totalHits.relation == TotalHits.Relation.EQUAL_TO;
+          assert topDocs.totalHits.relation() == TotalHits.Relation.EQUAL_TO;
           return new DocSlice(
               0,
               docs.length,
               docs,
               scores,
-              topDocs.totalHits.value,
+              topDocs.totalHits.value(),
               Float.NaN,
               TotalHits.Relation.EQUAL_TO);
         }
diff --git 
a/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
 
b/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
index 155efd7674a..16e7906aea7 100644
--- 
a/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
+++ 
b/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
@@ -764,7 +764,7 @@ public class QueryElevationComponent extends 
SearchComponent implements SolrCore
       // Extract the elevated terms into a list
       match = new ArrayList<>(elevation.includeQuery.clauses().size());
       for (BooleanClause clause : elevation.includeQuery.clauses()) {
-        TermQuery tq = (TermQuery) clause.getQuery();
+        TermQuery tq = (TermQuery) clause.query();
         match.add(tq.getTerm().text());
       }
     }
diff --git 
a/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java 
b/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
index cdfbb181671..9a4ac03046c 100644
--- a/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
+++ b/solr/core/src/java/org/apache/solr/index/SlowCompositeReaderWrapper.java
@@ -101,7 +101,7 @@ public final class SlowCompositeReaderWrapper extends 
LeafReader {
     } else {
       Version minVersion = Version.LATEST;
       for (LeafReaderContext leafReaderContext : reader.leaves()) {
-        Version leafVersion = 
leafReaderContext.reader().getMetaData().getMinVersion();
+        Version leafVersion = 
leafReaderContext.reader().getMetaData().minVersion();
         if (leafVersion == null) {
           minVersion = null;
           break;
@@ -112,9 +112,9 @@ public final class SlowCompositeReaderWrapper extends 
LeafReader {
       LeafMetaData leafMetaData = 
reader.leaves().get(0).reader().getMetaData();
       metaData =
           new LeafMetaData(
-              leafMetaData.getCreatedVersionMajor(),
+              leafMetaData.createdVersionMajor(),
               minVersion,
-              leafMetaData.getSort(),
+              leafMetaData.sort(),
               leafMetaData.hasBlocks());
     }
     fieldInfos = FieldInfos.getMergedFieldInfos(in);
diff --git a/solr/core/src/java/org/apache/solr/parser/QueryParser.java 
b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
index 9feb2d1c68d..ccd686b4098 100644
--- a/solr/core/src/java/org/apache/solr/parser/QueryParser.java
+++ b/solr/core/src/java/org/apache/solr/parser/QueryParser.java
@@ -243,8 +243,8 @@ addClause(clauses, conj, mods, q);
         }
       }
     }
-if (clauses.size() == 1 && clauses.get(0).getOccur() == 
BooleanClause.Occur.SHOULD) {
-      Query firstQuery = clauses.get(0).getQuery();
+if (clauses.size() == 1 && clauses.get(0).occur() == 
BooleanClause.Occur.SHOULD) {
+      Query firstQuery = clauses.get(0).query();
       if ( ! (firstQuery instanceof RawQuery) || 
((RawQuery)firstQuery).getTermCount() == 1) {
         {if ("" != null) return rawToNormal(firstQuery);}
       }
diff --git a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java 
b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
index 4160fd7a648..563002d4698 100644
--- a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
+++ b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
@@ -459,7 +459,7 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
     if (clauses.size() > 0 && conj == CONJ_AND) {
       BooleanClause c = clauses.get(clauses.size() - 1);
       if (!c.isProhibited())
-        clauses.set(clauses.size() - 1, new BooleanClause(c.getQuery(), 
BooleanClause.Occur.MUST));
+        clauses.set(clauses.size() - 1, new BooleanClause(c.query(), 
BooleanClause.Occur.MUST));
     }
 
     if (clauses.size() > 0 && operator == AND_OPERATOR && conj == CONJ_OR) {
@@ -470,7 +470,7 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
       BooleanClause c = clauses.get(clauses.size() - 1);
       if (!c.isProhibited())
         clauses.set(
-            clauses.size() - 1, new BooleanClause(c.getQuery(), 
BooleanClause.Occur.SHOULD));
+            clauses.size() - 1, new BooleanClause(c.query(), 
BooleanClause.Occur.SHOULD));
     }
 
     // We might have been passed a null query; the term might have been
@@ -630,7 +630,7 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
       case PICK_BEST:
         List<Query> currPosnClauses = new ArrayList<>(terms.length);
         for (TermAndBoost term : terms) {
-          currPosnClauses.add(newTermQuery(new Term(field, term.term), 
term.boost));
+          currPosnClauses.add(newTermQuery(new Term(field, term.term()), 
term.boost()));
         }
         DisjunctionMaxQuery dm = new DisjunctionMaxQuery(currPosnClauses, 
0.0f);
         return dm;
@@ -638,7 +638,7 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
         BooleanQuery.Builder builder = new BooleanQuery.Builder();
         for (TermAndBoost term : terms) {
           builder.add(
-              newTermQuery(new Term(field, term.term), term.boost), 
BooleanClause.Occur.SHOULD);
+              newTermQuery(new Term(field, term.term()), term.boost()), 
BooleanClause.Occur.SHOULD);
         }
         return builder.build();
       case AS_SAME_TERM:
@@ -708,8 +708,8 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
     boolean onlyRawQueries = true;
     int allRawQueriesTermCount = 0;
     for (BooleanClause clause : clauses) {
-      if (clause.getQuery() instanceof RawQuery) {
-        allRawQueriesTermCount += ((RawQuery) 
clause.getQuery()).getTermCount();
+      if (clause.query() instanceof RawQuery) {
+        allRawQueriesTermCount += ((RawQuery) clause.query()).getTermCount();
       } else {
         onlyRawQueries = false;
       }
@@ -721,12 +721,12 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
     Map<SchemaField, List<RawQuery>> fmap = new HashMap<>();
 
     for (BooleanClause clause : clauses) {
-      Query subq = clause.getQuery();
+      Query subq = clause.query();
       if (subq instanceof RawQuery) {
-        if (clause.getOccur() != BooleanClause.Occur.SHOULD) {
+        if (clause.occur() != BooleanClause.Occur.SHOULD) {
           // We only collect optional terms for set queries.  Since this isn't 
optional,
           // convert the raw query to a normal query and handle as usual.
-          clause = new BooleanClause(rawToNormal(subq), clause.getOccur());
+          clause = new BooleanClause(rawToNormal(subq), clause.occur());
         } else {
           // Optional raw query.
           RawQuery rawq = (RawQuery) subq;
@@ -749,7 +749,7 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
             continue;
           }
 
-          clause = new BooleanClause(rawToNormal(subq), clause.getOccur());
+          clause = new BooleanClause(rawToNormal(subq), clause.occur());
         }
       }
 
@@ -811,8 +811,8 @@ public abstract class SolrQueryParserBase extends 
QueryBuilder {
     BooleanQuery bq = QueryUtils.build(booleanBuilder, parser);
     if (bq.clauses().size() == 1) { // Unwrap single SHOULD query
       BooleanClause clause = bq.clauses().iterator().next();
-      if (clause.getOccur() == BooleanClause.Occur.SHOULD) {
-        return clause.getQuery();
+      if (clause.occur() == BooleanClause.Occur.SHOULD) {
+        return clause.query();
       }
     }
     return bq;
diff --git a/solr/core/src/java/org/apache/solr/request/DocValuesStats.java 
b/solr/core/src/java/org/apache/solr/request/DocValuesStats.java
index 74906bd0250..7524f4b48df 100644
--- a/solr/core/src/java/org/apache/solr/request/DocValuesStats.java
+++ b/solr/core/src/java/org/apache/solr/request/DocValuesStats.java
@@ -222,7 +222,7 @@ public class DocValuesStats {
       }
       if (doc == si.docID()) {
         long ord;
-        while ((ord = si.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+        while ((ord = si.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
           int term = (int) ord;
           if (map != null) {
             term = (int) ordMap.get(term);
diff --git a/solr/core/src/java/org/apache/solr/request/IntervalFacets.java 
b/solr/core/src/java/org/apache/solr/request/IntervalFacets.java
index ad048ae95f4..d4d1ef206f1 100644
--- a/solr/core/src/java/org/apache/solr/request/IntervalFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/IntervalFacets.java
@@ -371,7 +371,7 @@ public class IntervalFacets implements 
Iterable<FacetInterval> {
       if (doc == ssdv.docID()) {
         long currOrd;
         int currentInterval = 0;
-        while ((currOrd = ssdv.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+        while ((currOrd = ssdv.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
           boolean evaluateNextInterval = true;
           while (evaluateNextInterval && currentInterval < intervals.length) {
             IntervalCompareResult result = 
intervals[currentInterval].includes(currOrd);
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java 
b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index b5ea0b66eb6..04531901f44 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -819,11 +819,11 @@ public class SimpleFacets {
         result.getFacetEntries(offset, limit < 0 ? Integer.MAX_VALUE : limit);
     for (GroupFacetCollector.FacetEntry facetEntry : scopedEntries) {
       // :TODO:can we filter earlier than this to make it more efficient?
-      if (termFilter != null && !termFilter.test(facetEntry.getValue())) {
+      if (termFilter != null && !termFilter.test(facetEntry.value())) {
         continue;
       }
-      facetFieldType.indexedToReadable(facetEntry.getValue(), charsRef);
-      facetCounts.add(charsRef.toString(), facetEntry.getCount());
+      facetFieldType.indexedToReadable(facetEntry.value(), charsRef);
+      facetCounts.add(charsRef.toString(), facetEntry.count());
     }
 
     if (missing) {
@@ -1184,7 +1184,7 @@ public class SimpleFacets {
                 for (int subindex = 0; subindex < numSubs; subindex++) {
                   MultiPostingsEnum.EnumWithSlice sub = subs[subindex];
                   if (sub.postingsEnum == null) continue;
-                  int base = sub.slice.start;
+                  int base = sub.slice.start();
                   int docid;
                   while ((docid = sub.postingsEnum.nextDoc()) != 
DocIdSetIterator.NO_MORE_DOCS) {
                     if (fastForRandomSet.get(docid + base)) {
diff --git 
a/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
 
b/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
index 98f88f0e21e..be81540a169 100644
--- 
a/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.io.UncheckedIOException;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.join.BitSetProducer;
@@ -67,8 +67,7 @@ public class ChildDocTransformerFactory extends 
TransformerFactory {
           .add(new BooleanClause(new MatchAllDocsQuery(), 
BooleanClause.Occur.MUST))
           .add(
               new BooleanClause(
-                  new DocValuesFieldExistsQuery(NEST_PATH_FIELD_NAME),
-                  BooleanClause.Occur.MUST_NOT))
+                  new FieldExistsQuery(NEST_PATH_FIELD_NAME), 
BooleanClause.Occur.MUST_NOT))
           .build();
   public static final String CACHE_NAME = "perSegFilter";
 
diff --git a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java 
b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
index 1b4bf4574ba..54b00a5d12d 100644
--- a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java
@@ -32,7 +32,7 @@ import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.ResourceLoader;
@@ -387,7 +387,7 @@ public class CurrencyFieldType extends FieldType implements 
SchemaAware, Resourc
         (p1 != null) ? p1.getCurrencyCode() : (p2 != null) ? 
p2.getCurrencyCode() : defaultCurrency;
 
     // ValueSourceRangeFilter doesn't check exists(), so we have to
-    final Query docsWithValues = new 
DocValuesFieldExistsQuery(getAmountField(field).getName());
+    final Query docsWithValues = new 
FieldExistsQuery(getAmountField(field).getName());
     final Query vsRangeFilter =
         new ValueSourceRangeFilter(
             new RawCurrencyValueSource(field, currencyCode, parser),
diff --git a/solr/core/src/java/org/apache/solr/schema/FieldType.java 
b/solr/core/src/java/org/apache/solr/schema/FieldType.java
index 472f6b4775c..cd13fbf9f3a 100644
--- a/solr/core/src/java/org/apache/solr/schema/FieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/FieldType.java
@@ -47,10 +47,9 @@ import org.apache.lucene.index.Term;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
 import org.apache.lucene.search.DocValuesRewriteMethod;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.MultiTermQuery;
-import org.apache.lucene.search.NormsFieldExistsQuery;
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.SortField;
@@ -1022,8 +1021,7 @@ public abstract class FieldType extends FieldProperties {
    * to an unbounded rangeQuery.
    *
    * <p>This method should only be overridden whenever a fieldType does not 
support {@link
-   * org.apache.lucene.search.DocValuesFieldExistsQuery} or {@link
-   * org.apache.lucene.search.NormsFieldExistsQuery}. If a fieldType does not 
support an unbounded
+   * org.apache.lucene.search.FieldExistsQuery}. If a fieldType does not 
support an unbounded
    * rangeQuery as an existenceQuery (such as <code>double</code> or 
<code>float</code> fields),
    * {@link #getSpecializedExistenceQuery} should be overridden.
    *
@@ -1033,10 +1031,10 @@ public abstract class FieldType extends FieldProperties 
{
    */
   public Query getExistenceQuery(QParser parser, SchemaField field) {
     if (field.hasDocValues()) {
-      return new DocValuesFieldExistsQuery(field.getName());
+      return new FieldExistsQuery(field.getName());
     } else if (!field.omitNorms()
         && !isPointField()) { // TODO: Remove !isPointField() for SOLR-14199
-      return new NormsFieldExistsQuery(field.getName());
+      return new FieldExistsQuery(field.getName());
     } else {
       // Default to an unbounded range query
       return getSpecializedExistenceQuery(parser, field);
diff --git 
a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java 
b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
index 700ac213f21..4c564d62a3a 100644
--- a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
+++ b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
@@ -444,11 +444,11 @@ public final class FieldTypePluginLoader extends 
AbstractPluginLoader<FieldType>
             ? SolrConfig.parseLuceneVersionString(configuredVersion)
             : schema.getDefaultLuceneMatchVersion();
 
-    if (!version.onOrAfter(Version.LUCENE_8_0_0)) {
+    if (!version.onOrAfter(Version.LUCENE_9_0_0)) {
       log.warn(
           "{} is using deprecated {}"
-              + " emulation. You should at some point declare and reindex to 
at least 8.0, because "
-              + "7.x emulation is deprecated and will be removed in 9.0",
+              + " emulation. You should at some point declare and reindex to 
at least 9.0, because "
+              + "8.x emulation is deprecated and will be removed in 10.0",
           pluginClassName,
           version);
     }
diff --git 
a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java 
b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
index 119cc422a1e..67a8a3ea1fa 100644
--- a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java
@@ -522,7 +522,7 @@ public class CollapsingQParserPlugin extends QParserPlugin {
               new FieldInfo(
                   fieldInfo.name,
                   fieldInfo.number,
-                  fieldInfo.hasVectors(),
+                  fieldInfo.hasTermVectors(),
                   fieldInfo.hasNorms(),
                   fieldInfo.hasPayloads(),
                   fieldInfo.getIndexOptions(),
diff --git 
a/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
 
b/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
index fe35719a128..4153f197432 100644
--- 
a/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
+++ 
b/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
@@ -96,7 +96,7 @@ final class EarlyTerminatingSortingCollector extends 
FilterCollector {
 
   @Override
   public LeafCollector getLeafCollector(LeafReaderContext context) throws 
IOException {
-    Sort segmentSort = context.reader().getMetaData().getSort();
+    Sort segmentSort = context.reader().getMetaData().sort();
     if (segmentSort != null && canEarlyTerminate(sort, segmentSort) == false) {
       throw new IllegalStateException(
           "Cannot early terminate with sort order "
diff --git 
a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java 
b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
index 535e2c493bf..a0b8f5cda54 100644
--- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
@@ -368,7 +368,7 @@ public class ExtendedDismaxQParser extends QParser {
    * @return the resulting query (flattened if needed) with "min should match" 
rules applied as
    *     specified in the config.
    * @see #parseOriginalQuery
-   * @see SolrPluginUtils#flattenBooleanQuery
+   * @see SolrPluginUtils#flattenBooleanQuery(BooleanQuery.Builder, 
BooleanQuery)
    */
   protected Query parseEscapedQuery(
       ExtendedSolrQueryParser up, String escapedUserQuery, 
ExtendedDismaxConfiguration config)
@@ -1240,9 +1240,9 @@ public class ExtendedDismaxQParser extends QParser {
                   BooleanQuery booleanQuery = (BooleanQuery) 
boostQuery.getQuery();
                   subs.add(
                       new BoostQuery(
-                          booleanQuery.clauses().get(c).getQuery(), 
boostQuery.getBoost()));
+                          booleanQuery.clauses().get(c).query(), 
boostQuery.getBoost()));
                 } else {
-                  subs.add(((BooleanQuery) 
lst.get(n)).clauses().get(c).getQuery());
+                  subs.add(((BooleanQuery) 
lst.get(n)).clauses().get(c).query());
                 }
               }
               q.add(
@@ -1302,17 +1302,17 @@ public class ExtendedDismaxQParser extends QParser {
             break;
           }
           for (int c = 0; c < firstBooleanClauses.size(); ++c) {
-            if (nthBooleanClauses.get(c).getQuery().getClass()
-                    != firstBooleanClauses.get(c).getQuery().getClass()
-                || nthBooleanClauses.get(c).getOccur() != 
firstBooleanClauses.get(c).getOccur()) {
+            if (nthBooleanClauses.get(c).query().getClass()
+                    != firstBooleanClauses.get(c).query().getClass()
+                || nthBooleanClauses.get(c).occur() != 
firstBooleanClauses.get(c).occur()) {
               allSame = false;
               break;
             }
-            if (firstBooleanClauses.get(c).getQuery() instanceof BooleanQuery
+            if (firstBooleanClauses.get(c).query() instanceof BooleanQuery
                 && !allSameQueryStructure(
                     Arrays.asList(
-                        firstBooleanClauses.get(c).getQuery(),
-                        nthBooleanClauses.get(c).getQuery()))) {
+                        firstBooleanClauses.get(c).query(),
+                        nthBooleanClauses.get(c).query()))) {
               allSame = false;
               break;
             }
@@ -1336,8 +1336,8 @@ public class ExtendedDismaxQParser extends QParser {
       if (q instanceof BooleanQuery) {
         boolean allOptionalDisMaxQueries = true;
         for (BooleanClause c : ((BooleanQuery) q).clauses()) {
-          if (c.getOccur() != BooleanClause.Occur.SHOULD
-              || !(c.getQuery() instanceof DisjunctionMaxQuery)) {
+          if (c.occur() != BooleanClause.Occur.SHOULD
+              || !(c.query() instanceof DisjunctionMaxQuery)) {
             allOptionalDisMaxQueries = false;
             break;
           }
@@ -1347,7 +1347,7 @@ public class ExtendedDismaxQParser extends QParser {
           // DisjunctionMaxQuery-s. Unwrap the query and add a clause for each 
contained DisMax
           // query.
           for (BooleanClause c : ((BooleanQuery) q).clauses()) {
-            clauses.add(newBooleanClause(c.getQuery(), occur));
+            clauses.add(newBooleanClause(c.query(), occur));
           }
           return;
         }
diff --git a/solr/core/src/java/org/apache/solr/search/Grouping.java 
b/solr/core/src/java/org/apache/solr/search/Grouping.java
index 2cf21e8461b..f610ab04bb2 100644
--- a/solr/core/src/java/org/apache/solr/search/Grouping.java
+++ b/solr/core/src/java/org/apache/solr/search/Grouping.java
@@ -603,7 +603,7 @@ public class Grouping {
     protected void populateScoresIfNecessary() throws IOException {
       if (needScores) {
         for (GroupDocs<?> groups : result.groups) {
-          TopFieldCollector.populateScores(groups.scoreDocs, searcher, query);
+          TopFieldCollector.populateScores(groups.scoreDocs(), searcher, 
query);
         }
       }
     }
@@ -623,8 +623,8 @@ public class Grouping {
     }
 
     protected DocList getDocList(GroupDocs<?> groups) {
-      assert groups.totalHits.relation == TotalHits.Relation.EQUAL_TO;
-      int max = Math.toIntExact(groups.totalHits.value);
+      assert groups.totalHits().relation() == TotalHits.Relation.EQUAL_TO;
+      int max = Math.toIntExact(groups.totalHits().value());
       int off = groupOffset;
       int len = docsPerGroup;
       if (format == Format.simple) {
@@ -634,16 +634,16 @@ public class Grouping {
       int docsToCollect = getMax(off, len, max);
 
       // TODO: implement a DocList impl that doesn't need to start at offset=0
-      int docsCollected = Math.min(docsToCollect, groups.scoreDocs.length);
+      int docsCollected = Math.min(docsToCollect, groups.scoreDocs().length);
 
       int ids[] = new int[docsCollected];
       float[] scores = needScores ? new float[docsCollected] : null;
       for (int i = 0; i < ids.length; i++) {
-        ids[i] = groups.scoreDocs[i].doc;
-        if (scores != null) scores[i] = groups.scoreDocs[i].score;
+        ids[i] = groups.scoreDocs()[i].doc;
+        if (scores != null) scores[i] = groups.scoreDocs()[i].score;
       }
 
-      float score = groups.maxScore;
+      float score = groups.maxScore();
       maxScore = maxAvoidNaN(score, maxScore);
       DocSlice docs =
           new DocSlice(
@@ -651,7 +651,7 @@ public class Grouping {
               Math.max(0, ids.length - off),
               ids,
               scores,
-              groups.totalHits.value,
+              groups.totalHits().value(),
               score,
               TotalHits.Relation.EQUAL_TO);
 
@@ -680,9 +680,9 @@ public class Grouping {
 
       outer:
       for (GroupDocs<T> group : groups) {
-        maxScore = maxAvoidNaN(maxScore, group.maxScore);
+        maxScore = maxAvoidNaN(maxScore, group.maxScore());
 
-        for (ScoreDoc scoreDoc : group.scoreDocs) {
+        for (ScoreDoc scoreDoc : group.scoreDocs()) {
           if (docsGathered >= docsToGather) {
             break outer;
           }
@@ -843,20 +843,20 @@ public class Grouping {
         // To keep the response format compatable with trunk.
         // In trunk MutableValue can convert an indexed value to its native 
type. E.g. string to int
         // The only option I currently see is the use the FieldType for this
-        if (group.groupValue != null) {
+        if (group.groupValue() != null) {
           SchemaField schemaField = searcher.getSchema().getField(groupBy);
           FieldType fieldType = schemaField.getType();
           // use createFields so that fields having doc values are also 
supported
           // TODO: currently, this path is called only for string field, so
           // should we just use fieldType.toObject(schemaField, 
group.groupValue) here?
-          List<IndexableField> fields = 
schemaField.createFields(group.groupValue.utf8ToString());
+          List<IndexableField> fields = 
schemaField.createFields(group.groupValue().utf8ToString());
           if (fields != null && !fields.isEmpty()) {
             nl.add("groupValue", fieldType.toObject(fields.get(0)));
           } else {
             throw new SolrException(
                 ErrorCode.INVALID_STATE,
                 "Couldn't create schema field for grouping, group value: "
-                    + group.groupValue.utf8ToString()
+                    + group.groupValue().utf8ToString()
                     + ", field: "
                     + schemaField);
           }
@@ -1070,7 +1070,7 @@ public class Grouping {
       for (GroupDocs<MutableValue> group : result.groups) {
         NamedList<Object> nl = new SimpleOrderedMap<>();
         groupList.add(nl); // grouped={ key={ groups=[ {
-        nl.add("groupValue", group.groupValue.toObject());
+        nl.add("groupValue", group.groupValue().toObject());
         addDocList(nl, group);
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/search/JoinQuery.java 
b/solr/core/src/java/org/apache/solr/search/JoinQuery.java
index 3ec6b85b94c..5cf99140f7d 100644
--- a/solr/core/src/java/org/apache/solr/search/JoinQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/JoinQuery.java
@@ -330,7 +330,7 @@ class JoinQuery extends Query {
             for (int subindex = 0; subindex < numSubs; subindex++) {
               MultiPostingsEnum.EnumWithSlice sub = subs[subindex];
               if (sub.postingsEnum == null) continue;
-              int base = sub.slice.start;
+              int base = sub.slice.start();
               int docid;
               while ((docid = sub.postingsEnum.nextDoc()) != 
DocIdSetIterator.NO_MORE_DOCS) {
                 if (fastForRandomSet.get(docid + base)) {
@@ -407,7 +407,7 @@ class JoinQuery extends Query {
                 for (int subindex = 0; subindex < numSubs; subindex++) {
                   MultiPostingsEnum.EnumWithSlice sub = subs[subindex];
                   if (sub.postingsEnum == null) continue;
-                  int base = sub.slice.start;
+                  int base = sub.slice.start();
                   int docid;
                   while ((docid = sub.postingsEnum.nextDoc()) != 
DocIdSetIterator.NO_MORE_DOCS) {
                     resultListDocs++;
diff --git 
a/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java 
b/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java
index b7b4d7a0325..68e7d667a8c 100644
--- a/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/MultiThreadedSearcher.java
@@ -341,7 +341,7 @@ public class MultiThreadedSearcher {
         } else {
           mergedTopDocs = TopDocs.merge(0, len, topDocs);
         }
-        totalHits = (int) mergedTopDocs.totalHits.value;
+        totalHits = (int) mergedTopDocs.totalHits.value();
       }
       return new TopDocsResult(mergedTopDocs, totalHits);
     }
diff --git 
a/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java 
b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
index 25c3a62debd..d0a72915fa3 100644
--- a/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
+++ b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
@@ -63,7 +63,7 @@ public class NumericHidingLeafReader extends FilterLeafReader 
{
             new FieldInfo(
                 fi.name,
                 fi.number,
-                fi.hasVectors(),
+                fi.hasTermVectors(),
                 fi.omitsNorms(),
                 fi.hasPayloads(),
                 fi.getIndexOptions(),
diff --git a/solr/core/src/java/org/apache/solr/search/QueryParsing.java 
b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
index 5b635029c6f..98029a68e03 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryParsing.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
@@ -298,7 +298,7 @@ public class QueryParsing {
         } else if (c.isRequired()) {
           out.append('+');
         }
-        Query subQuery = c.getQuery();
+        Query subQuery = c.query();
 
         toString(subQuery, schema, out, subflag | FLAG_IS_CLAUSE);
       }
diff --git a/solr/core/src/java/org/apache/solr/search/QueryUtils.java 
b/solr/core/src/java/org/apache/solr/search/QueryUtils.java
index 954ed91b0d4..60538d73a31 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryUtils.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryUtils.java
@@ -164,7 +164,7 @@ public class QueryUtils {
 
     if (clauses.size() == 1) {
       // if only one clause, dispense with the wrapping BooleanQuery
-      Query negClause = clauses.iterator().next().getQuery();
+      Query negClause = clauses.iterator().next().query();
       // we shouldn't need to worry about adjusting the boosts since the 
negative
       // clause would have never been selected in a positive query, and hence 
would
       // not contribute to a score.
@@ -175,7 +175,7 @@ public class QueryUtils {
 
       // the inverse of -a -b is a OR b
       for (BooleanClause clause : clauses) {
-        newBqB.add(clause.getQuery(), BooleanClause.Occur.SHOULD);
+        newBqB.add(clause.query(), BooleanClause.Occur.SHOULD);
       }
       return newBqB.build();
     }
diff --git a/solr/core/src/java/org/apache/solr/search/ReRankCollector.java 
b/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
index bf4c19b4063..6a4aaf2748a 100644
--- a/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
+++ b/solr/core/src/java/org/apache/solr/search/ReRankCollector.java
@@ -119,7 +119,7 @@ public class ReRankCollector extends 
TopDocsCollector<ScoreDoc> {
 
       TopDocs mainDocs = mainCollector.topDocs(0, Math.max(reRankDocs, 
length));
 
-      if (mainDocs.totalHits.value == 0 || mainDocs.scoreDocs.length == 0) {
+      if (mainDocs.totalHits.value() == 0 || mainDocs.scoreDocs.length == 0) {
         return mainDocs;
       }
 
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 2497742a112..56d12109982 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
@@ -374,7 +374,7 @@ public class SolrDocumentFetcher {
       Predicate<String> readAsBytes = ResultContext.READASBYTES.get();
       if (readAsBytes != null && readAsBytes.test(fieldInfo.name)) {
         final FieldType ft = new FieldType(TextField.TYPE_STORED);
-        ft.setStoreTermVectors(fieldInfo.hasVectors());
+        ft.setStoreTermVectors(fieldInfo.hasTermVectors());
         ft.setOmitNorms(fieldInfo.omitsNorms());
         ft.setIndexOptions(fieldInfo.getIndexOptions());
         Objects.requireNonNull(value, "String value should not be null");
@@ -684,7 +684,7 @@ public class SolrDocumentFetcher {
         if (values != null) {
           final List<Object> outValues = new ArrayList<>();
           for (long ord = values.nextOrd();
-              ord != SortedSetDocValues.NO_MORE_ORDS;
+              ord != SortedSetDocValues.NO_MORE_DOCS;
               ord = values.nextOrd()) {
             BytesRef value = values.lookupOrd(ord);
             outValues.add(e.schemaField.getType().toObject(e.schemaField, 
value));
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java 
b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index 19f93cc49fa..5cd43a187f0 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -219,7 +219,7 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
   }
 
   /**
-   * Create an {@link ExecutorService} to be used by the Lucene {@link 
IndexSearcher#getExecutor()}.
+   * Create an {@link ExecutorService} to be used by the Lucene {@link 
IndexSearcher#getTaskExecutor()}.
    * Shared across the whole node because it's a machine CPU resource.
    */
   public static ExecutorService initCollectorExecutor(NodeConfig cfg) {
@@ -1390,7 +1390,7 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
       for (int subindex = 0; subindex < numSubs; subindex++) {
         MultiPostingsEnum.EnumWithSlice sub = subs[subindex];
         if (sub.postingsEnum == null) continue;
-        int base = sub.slice.start;
+        int base = sub.slice.start();
         int docid;
 
         if (largestPossible > docs.length) {
@@ -1800,7 +1800,7 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
     if (scoreModeUsed == ScoreMode.COMPLETE || scoreModeUsed == 
ScoreMode.COMPLETE_NO_SCORES) {
       return TotalHits.Relation.EQUAL_TO;
     } else {
-      return topDocs.totalHits.relation;
+      return topDocs.totalHits.relation();
     }
   }
 
@@ -2405,10 +2405,10 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
       ids[i] = scoreDoc.doc;
     }
 
-    assert topDocs.totalHits.relation == TotalHits.Relation.EQUAL_TO;
+    assert topDocs.totalHits.relation() == TotalHits.Relation.EQUAL_TO;
     qr.getDocListAndSet().docList =
         new DocSlice(
-            0, nDocsReturned, ids, null, topDocs.totalHits.value, 0.0f, 
topDocs.totalHits.relation);
+            0, nDocsReturned, ids, null, topDocs.totalHits.value(), 0.0f, 
topDocs.totalHits.relation());
     populateNextCursorMarkFromTopDocs(qr, cmd, topDocs);
   }
 
diff --git a/solr/core/src/java/org/apache/solr/search/facet/AvgAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/AvgAgg.java
index 1a6e79e0924..d58bd3f477c 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/AvgAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/AvgAgg.java
@@ -152,7 +152,7 @@ public class AvgAgg extends SimpleAggValueSource {
     @Override
     protected void collectValues(int doc, int slot) throws IOException {
       long ord;
-      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
         BytesRef term = values.lookupOrd(ord);
         Object obj = sf.getType().toObject(sf, term);
         double val = obj instanceof Date ? ((Date) obj).getTime() : ((Number) 
obj).doubleValue();
diff --git a/solr/core/src/java/org/apache/solr/search/facet/CountValsAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/CountValsAgg.java
index e4994ddb25f..807b4b2d839 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/CountValsAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/CountValsAgg.java
@@ -102,7 +102,7 @@ public class CountValsAgg extends SimpleAggValueSource {
 
     @Override
     protected void collectValues(int doc, int slot) throws IOException {
-      while (values.nextOrd() != SortedSetDocValues.NO_MORE_ORDS) {
+      while (values.nextOrd() != SortedSetDocValues.NO_MORE_DOCS) {
         result[slot]++;
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/search/facet/DocValuesAcc.java 
b/solr/core/src/java/org/apache/solr/search/facet/DocValuesAcc.java
index fddfcf92118..7f4eca64ca4 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/DocValuesAcc.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/DocValuesAcc.java
@@ -376,7 +376,7 @@ public abstract class DocValuesAcc extends SlotAcc {
     @Override
     protected void collectValues(int doc, int slot) throws IOException {
       long ord;
-      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
         BytesRef term = values.lookupOrd(ord);
         Object obj = sf.getType().toObject(sf, term);
         double val = obj instanceof Date ? ((Date) obj).getTime() : ((Number) 
obj).doubleValue();
diff --git 
a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
 
b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
index 08d3bb774b6..acf5e6e9c93 100644
--- 
a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
+++ 
b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
@@ -301,7 +301,7 @@ class FacetFieldProcessorByEnumTermsStream extends 
FacetFieldProcessor implement
             for (int subindex = 0; subindex < numSubs; subindex++) {
               MultiPostingsEnum.EnumWithSlice sub = subs[subindex];
               if (sub.postingsEnum == null) continue;
-              int base = sub.slice.start;
+              int base = sub.slice.start();
               int docid;
 
               if (countOnly) {
@@ -309,7 +309,7 @@ class FacetFieldProcessorByEnumTermsStream extends 
FacetFieldProcessor implement
                   if (fastForRandomSet.get(docid + base)) c++;
                 }
               } else {
-                setNextReader(leaves[sub.slice.readerIndex]);
+                setNextReader(leaves[sub.slice.readerIndex()]);
                 while ((docid = sub.postingsEnum.nextDoc()) != 
DocIdSetIterator.NO_MORE_DOCS) {
                   if (fastForRandomSet.get(docid + base)) {
                     c++;
diff --git a/solr/core/src/java/org/apache/solr/search/facet/MinMaxAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/MinMaxAgg.java
index efbbfc4d501..72b53ae7d23 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/MinMaxAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/MinMaxAgg.java
@@ -540,7 +540,7 @@ public class MinMaxAgg extends SimpleAggValueSource {
         newOrd = subDv.nextOrd();
       } else { // max
         long ord;
-        while ((ord = subDv.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+        while ((ord = subDv.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
           newOrd = ord;
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/search/facet/MissingAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/MissingAgg.java
index e471020345f..ea4ae8f7310 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/MissingAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/MissingAgg.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import java.util.function.IntFunction;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.function.FieldNameValueSource;
@@ -45,7 +45,7 @@ public class MissingAgg extends SimpleAggValueSource {
       if (sf.multiValued() || sf.getType().multiValuedFieldCache()) {
         Query query = null;
         if (sf.hasDocValues()) {
-          query = new DocValuesFieldExistsQuery(sf.getName());
+          query = new FieldExistsQuery(sf.getName());
         } else {
           query = sf.getType().getRangeQuery(null, sf, null, null, false, 
false);
         }
diff --git a/solr/core/src/java/org/apache/solr/search/facet/PercentileAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/PercentileAgg.java
index 0d0a842f99e..cea2c801d38 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/PercentileAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/PercentileAgg.java
@@ -355,7 +355,7 @@ public class PercentileAgg extends SimpleAggValueSource {
         digests[slot] = digest = new AVLTreeDigest(100);
       }
       long ord;
-      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
         BytesRef term = values.lookupOrd(ord);
         Object obj = sf.getType().toObject(sf, term);
         double val = obj instanceof Date ? ((Date) obj).getTime() : ((Number) 
obj).doubleValue();
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SumAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/SumAgg.java
index 614981e325a..f7f9dbff286 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SumAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SumAgg.java
@@ -107,7 +107,7 @@ public class SumAgg extends SimpleAggValueSource {
     @Override
     protected void collectValues(int doc, int slot) throws IOException {
       long ord;
-      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
         BytesRef term = values.lookupOrd(ord);
         Object obj = sf.getType().toObject(sf, term);
         double val = obj instanceof Date ? ((Date) obj).getTime() : ((Number) 
obj).doubleValue();
diff --git a/solr/core/src/java/org/apache/solr/search/facet/SumsqAgg.java 
b/solr/core/src/java/org/apache/solr/search/facet/SumsqAgg.java
index 6d4983812c5..bdc6d3d1efa 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/SumsqAgg.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/SumsqAgg.java
@@ -94,7 +94,7 @@ public class SumsqAgg extends SimpleAggValueSource {
     @Override
     protected void collectValues(int doc, int slot) throws IOException {
       long ord;
-      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_ORDS) {
+      while ((ord = values.nextOrd()) != SortedSetDocValues.NO_MORE_DOCS) {
         BytesRef term = values.lookupOrd(ord);
         Object obj = sf.getType().toObject(sf, term);
         double val = obj instanceof Date ? ((Date) obj).getTime() : ((Number) 
obj).doubleValue();
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/GroupConverter.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/GroupConverter.java
index 5d81412df38..82dafb09170 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/GroupConverter.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/GroupConverter.java
@@ -150,22 +150,22 @@ class GroupConverter {
     for (int i = 0; i < values.groups.length; i++) {
       GroupDocs<MutableValue> original = values.groups[i];
       final BytesRef groupValue;
-      if (original.groupValue.exists) {
+      if (original.groupValue().exists) {
         BytesRefBuilder binary = new BytesRefBuilder();
         fieldType.readableToIndexed(
-            Utils.OBJECT_TO_STRING.apply(original.groupValue.toObject()), 
binary);
+            Utils.OBJECT_TO_STRING.apply(original.groupValue().toObject()), 
binary);
         groupValue = binary.get();
       } else {
         groupValue = null;
       }
       groupDocs[i] =
           new GroupDocs<>(
-              original.score,
-              original.maxScore,
-              original.totalHits,
-              original.scoreDocs,
+              original.score(),
+              original.maxScore(),
+              original.totalHits(),
+              original.scoreDocs(),
               groupValue,
-              original.groupSortValues);
+              original.groupSortValues());
     }
 
     return new TopGroups<>(
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
index 8f9f895a5c4..a86f0ebae43 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
@@ -201,7 +201,7 @@ public class TopGroupsFieldCommand implements 
Command<TopGroups<BytesRef>> {
     }
     if (needScores) {
       for (GroupDocs<?> group : topGroups.groups) {
-        TopFieldCollector.populateScores(group.scoreDocs, searcher, query);
+        TopFieldCollector.populateScores(group.scoreDocs(), searcher, query);
       }
     }
   }
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/requestfactory/StoredFieldsShardRequestFactory.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/requestfactory/StoredFieldsShardRequestFactory.java
index d9307a4befa..14e12a02c89 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/requestfactory/StoredFieldsShardRequestFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/requestfactory/StoredFieldsShardRequestFactory.java
@@ -46,7 +46,7 @@ public class StoredFieldsShardRequestFactory implements 
ShardRequestFactory {
     HashMap<String, Set<ShardDoc>> shardMap = new HashMap<>();
     for (TopGroups<BytesRef> topGroups : rb.mergedTopGroups.values()) {
       for (GroupDocs<BytesRef> group : topGroups.groups) {
-        mapShardToDocs(shardMap, group.scoreDocs);
+        mapShardToDocs(shardMap, group.scoreDocs());
       }
     }
 
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
index 206fd982964..fc536d273de 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
@@ -233,7 +233,7 @@ public class TopGroupsShardResponseProcessor implements 
ShardResponseProcessor {
     int i = 0;
     for (TopGroups<BytesRef> topGroups : rb.mergedTopGroups.values()) {
       for (GroupDocs<BytesRef> group : topGroups.groups) {
-        for (ScoreDoc scoreDoc : group.scoreDocs) {
+        for (ScoreDoc scoreDoc : group.scoreDocs()) {
           ShardDoc solrDoc = (ShardDoc) scoreDoc;
           // Include the first if there are duplicate IDs
           if (!resultIds.containsKey(solrDoc.id)) {
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
index 5a924151fe5..a5f97af5a05 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/TopGroupsResultTransformer.java
@@ -222,24 +222,24 @@ public class TopGroupsResultTransformer
     SchemaField uniqueField = schema.getUniqueKeyField();
     for (GroupDocs<BytesRef> searchGroup : data.groups) {
       NamedList<Object> groupResult = new NamedList<>();
-      assert searchGroup.totalHits.relation == TotalHits.Relation.EQUAL_TO;
-      groupResult.add("totalHits", searchGroup.totalHits.value);
-      if (!Float.isNaN(searchGroup.maxScore)) {
-        groupResult.add("maxScore", searchGroup.maxScore);
+      assert searchGroup.totalHits().relation() == TotalHits.Relation.EQUAL_TO;
+      groupResult.add("totalHits", searchGroup.totalHits().value());
+      if (!Float.isNaN(searchGroup.maxScore())) {
+        groupResult.add("maxScore", searchGroup.maxScore());
       }
 
       SolrDocumentFetcher docFetcher = rb.req.getSearcher().getDocFetcher();
       List<NamedList<Object>> documents = new ArrayList<>();
-      for (int i = 0; i < searchGroup.scoreDocs.length; i++) {
+      for (int i = 0; i < searchGroup.scoreDocs().length; i++) {
         NamedList<Object> document = new NamedList<>();
         documents.add(document);
 
-        Document doc = retrieveDocument(uniqueField, 
searchGroup.scoreDocs[i].doc, docFetcher);
+        Document doc = retrieveDocument(uniqueField, 
searchGroup.scoreDocs()[i].doc, docFetcher);
         document.add(ID, 
uniqueField.getType().toExternal(doc.getField(uniqueField.getName())));
-        if (!Float.isNaN(searchGroup.scoreDocs[i].score)) {
-          document.add("score", searchGroup.scoreDocs[i].score);
+        if (!Float.isNaN(searchGroup.scoreDocs()[i].score)) {
+          document.add("score", searchGroup.scoreDocs()[i].score);
         }
-        if (!(searchGroup.scoreDocs[i] instanceof FieldDoc fieldDoc)) {
+        if (!(searchGroup.scoreDocs()[i] instanceof FieldDoc fieldDoc)) {
           continue; // thus don't add sortValues below
         }
 
@@ -263,10 +263,10 @@ public class TopGroupsResultTransformer
       }
       groupResult.add("documents", documents);
       String groupValue =
-          searchGroup.groupValue != null
+          searchGroup.groupValue() != null
               ? groupField
                   .getType()
-                  .indexedToReadable(searchGroup.groupValue, new 
CharsRefBuilder())
+                  .indexedToReadable(searchGroup.groupValue(), new 
CharsRefBuilder())
                   .toString()
               : null;
       result.add(groupValue, groupResult);
@@ -279,8 +279,8 @@ public class TopGroupsResultTransformer
     NamedList<Object> queryResult = new NamedList<>();
     queryResult.add("matches", result.getMatches());
     TopDocs topDocs = result.getTopDocs();
-    assert topDocs.totalHits.relation == TotalHits.Relation.EQUAL_TO;
-    queryResult.add("totalHits", topDocs.totalHits.value);
+    assert topDocs.totalHits.relation() == TotalHits.Relation.EQUAL_TO;
+    queryResult.add("totalHits", topDocs.totalHits.value());
     // debug: assert !Float.isNaN(result.getTopDocs().getMaxScore()) ==
     // rb.getGroupingSpec().isNeedScore();
     if (!Float.isNaN(result.getMaxScore())) {
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
index 78244263855..6b0750fdd5c 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java
@@ -73,16 +73,16 @@ public class GroupedEndResultTransformer implements 
EndResultTransformer {
         FieldType groupFieldType = groupField.getType();
         for (GroupDocs<BytesRef> group : topGroups.groups) {
           SimpleOrderedMap<Object> groupResult = new SimpleOrderedMap<>();
-          if (group.groupValue != null) {
+          if (group.groupValue() != null) {
             // use createFields so that fields having doc values are also 
supported
-            List<IndexableField> fields = 
groupField.createFields(group.groupValue.utf8ToString());
+            List<IndexableField> fields = 
groupField.createFields(group.groupValue().utf8ToString());
             if (fields != null && !fields.isEmpty()) {
               groupResult.add("groupValue", 
groupFieldType.toObject(fields.get(0)));
             } else {
               throw new SolrException(
                   ErrorCode.INVALID_STATE,
                   "Couldn't create schema field for grouping, group value: "
-                      + group.groupValue.utf8ToString()
+                      + group.groupValue().utf8ToString()
                       + ", field: "
                       + groupField);
             }
@@ -90,13 +90,13 @@ public class GroupedEndResultTransformer implements 
EndResultTransformer {
             groupResult.add("groupValue", null);
           }
           SolrDocumentList docList = new SolrDocumentList();
-          assert group.totalHits.relation == TotalHits.Relation.EQUAL_TO;
-          docList.setNumFound(group.totalHits.value);
-          if (!Float.isNaN(group.maxScore)) {
-            docList.setMaxScore(group.maxScore);
+          assert group.totalHits().relation() == TotalHits.Relation.EQUAL_TO;
+          docList.setNumFound(group.totalHits().value());
+          if (!Float.isNaN(group.maxScore())) {
+            docList.setMaxScore(group.maxScore());
           }
           docList.setStart(withinGroupSortSpec.getOffset());
-          retrieveAndAdd(docList, solrDocumentSource, group.scoreDocs);
+          retrieveAndAdd(docList, solrDocumentSource, group.scoreDocs());
           groupResult.add("doclist", docList);
           groups.add(groupResult);
         }
@@ -108,8 +108,8 @@ public class GroupedEndResultTransformer implements 
EndResultTransformer {
         command.add("matches", queryCommandResult.getMatches());
         SolrDocumentList docList = new SolrDocumentList();
         TopDocs topDocs = queryCommandResult.getTopDocs();
-        assert topDocs.totalHits.relation == TotalHits.Relation.EQUAL_TO;
-        docList.setNumFound(topDocs.totalHits.value);
+        assert topDocs.totalHits.relation() == TotalHits.Relation.EQUAL_TO;
+        docList.setNumFound(topDocs.totalHits.value());
         if (!Float.isNaN(queryCommandResult.getMaxScore())) {
           docList.setMaxScore(queryCommandResult.getMaxScore());
         }
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
index 94c475237bf..02c5ab87043 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/MainEndResultTransformer.java
@@ -58,7 +58,7 @@ public class MainEndResultTransformer implements 
EndResultTransformer {
 
       float maxScore = Float.NEGATIVE_INFINITY;
       for (GroupDocs<BytesRef> group : topGroups.groups) {
-        for (ScoreDoc scoreDoc : group.scoreDocs) {
+        for (ScoreDoc scoreDoc : group.scoreDocs()) {
           if (maxScore < scoreDoc.score) {
             maxScore = scoreDoc.score;
           }
@@ -77,7 +77,7 @@ public class MainEndResultTransformer implements 
EndResultTransformer {
       TopDocs topDocs = queryCommandResult.getTopDocs();
 
       docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
-      docList.setNumFound(topDocs.totalHits.value);
+      docList.setNumFound(topDocs.totalHits.value());
       if (!Float.isNaN(queryCommandResult.getMaxScore())) {
         docList.setMaxScore(queryCommandResult.getMaxScore());
       }
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
index 171ee751f18..f964e04adf2 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/SimpleEndResultTransformer.java
@@ -55,7 +55,7 @@ public class SimpleEndResultTransformer implements 
EndResultTransformer {
 
         float maxScore = Float.NEGATIVE_INFINITY;
         for (GroupDocs<BytesRef> group : topGroups.groups) {
-          for (ScoreDoc scoreDoc : group.scoreDocs) {
+          for (ScoreDoc scoreDoc : group.scoreDocs()) {
             if (maxScore < scoreDoc.score) {
               maxScore = scoreDoc.score;
             }
@@ -77,7 +77,7 @@ public class SimpleEndResultTransformer implements 
EndResultTransformer {
         TopDocs topDocs = queryCommandResult.getTopDocs();
         SolrDocumentList docList = new SolrDocumentList();
         docList.setStart(rb.getGroupingSpec().getGroupSortSpec().getOffset());
-        docList.setNumFound(topDocs.totalHits.value);
+        docList.setNumFound(topDocs.totalHits.value());
 
         if (!Float.isNaN(queryCommandResult.getMaxScore())) {
           docList.setMaxScore(queryCommandResult.getMaxScore());
diff --git 
a/solr/core/src/java/org/apache/solr/search/join/GraphEdgeCollector.java 
b/solr/core/src/java/org/apache/solr/search/join/GraphEdgeCollector.java
index c38c3d00b2e..49fc19fdc8e 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphEdgeCollector.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphEdgeCollector.java
@@ -35,8 +35,8 @@ import org.apache.lucene.util.BitSet;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefHash;
 import org.apache.lucene.util.FixedBitSet;
+import org.apache.lucene.util.automaton.Automata;
 import org.apache.lucene.util.automaton.Automaton;
-import org.apache.lucene.util.automaton.DaciukMihovAutomatonBuilder;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.DocSet;
 
@@ -147,7 +147,7 @@ abstract class GraphEdgeCollector extends SimpleCollector 
implements Collector {
       if (doc == docTermOrds.docID()) {
         BytesRef edgeValue = new BytesRef();
         long ord;
-        while ((ord = docTermOrds.nextOrd()) != 
SortedSetDocValues.NO_MORE_ORDS) {
+        while ((ord = docTermOrds.nextOrd()) != 
SortedSetDocValues.NO_MORE_DOCS) {
           edgeValue = docTermOrds.lookupOrd(ord);
           // add the edge id to the collector terms.
           collectorTerms.add(edgeValue);
@@ -196,7 +196,7 @@ abstract class GraphEdgeCollector extends SimpleCollector 
implements Collector {
         termBytesHash.get(i, ref);
         terms.add(ref);
       }
-      final Automaton a = DaciukMihovAutomatonBuilder.build(terms);
+      final Automaton a = Automata.makeStringUnion(terms);
       return a;
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java 
b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
index 3dddedb755f..77eb886e41b 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
@@ -28,8 +28,8 @@ import org.apache.lucene.search.BooleanClause.Occur;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.DocIdSet;
 import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
 import org.apache.lucene.search.Explanation;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.QueryVisitor;
@@ -40,8 +40,8 @@ import org.apache.lucene.search.WildcardQuery;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefHash;
 import org.apache.lucene.util.FixedBitSet;
+import org.apache.lucene.util.automaton.Automata;
 import org.apache.lucene.util.automaton.Automaton;
-import org.apache.lucene.util.automaton.DaciukMihovAutomatonBuilder;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.BitDocSet;
 import org.apache.solr.search.DocSet;
@@ -256,7 +256,7 @@ public class GraphQuery extends Query {
       BooleanQuery.Builder leafNodeQuery = new BooleanQuery.Builder();
       Query edgeQuery =
           collectSchemaField.hasDocValues()
-              ? new DocValuesFieldExistsQuery(field)
+              ? new FieldExistsQuery(field)
               : new WildcardQuery(new Term(field, "*"));
       leafNodeQuery.add(edgeQuery, Occur.MUST_NOT);
       DocSet leafNodes = fromSearcher.getDocSet(leafNodeQuery.build());
@@ -272,7 +272,7 @@ public class GraphQuery extends Query {
         termBytesHash.get(i, ref);
         terms.add(ref);
       }
-      final Automaton a = DaciukMihovAutomatonBuilder.build(terms);
+      final Automaton a = Automata.makeStringUnion(terms);
       return a;
     }
 
diff --git 
a/solr/core/src/java/org/apache/solr/search/join/MultiValueTermOrdinalCollector.java
 
b/solr/core/src/java/org/apache/solr/search/join/MultiValueTermOrdinalCollector.java
index 35caf7d8ed0..60ebb4ca786 100644
--- 
a/solr/core/src/java/org/apache/solr/search/join/MultiValueTermOrdinalCollector.java
+++ 
b/solr/core/src/java/org/apache/solr/search/join/MultiValueTermOrdinalCollector.java
@@ -55,8 +55,8 @@ public class MultiValueTermOrdinalCollector extends 
SimpleCollector {
     final int globalDoc = docBase + doc;
 
     if (topLevelDocValues.advanceExact(globalDoc)) {
-      long ord = SortedSetDocValues.NO_MORE_ORDS;
-      while ((ord = topLevelDocValues.nextOrd()) != 
SortedSetDocValues.NO_MORE_ORDS) {
+      long ord = SortedSetDocValues.NO_MORE_DOCS;
+      while ((ord = topLevelDocValues.nextOrd()) != 
SortedSetDocValues.NO_MORE_DOCS) {
         topLevelDocValuesBitSet.set(ord);
       }
     }
diff --git 
a/solr/core/src/java/org/apache/solr/search/mlt/AbstractMLTQParser.java 
b/solr/core/src/java/org/apache/solr/search/mlt/AbstractMLTQParser.java
index 19aded8a79c..94e009ec9b6 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/AbstractMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/AbstractMLTQParser.java
@@ -136,7 +136,7 @@ abstract class AbstractMLTQParser extends QParser {
       
newQ.setMinimumNumberShouldMatch(rawMLTQuery.getMinimumNumberShouldMatch());
 
       for (BooleanClause clause : rawMLTQuery) {
-        Query q = clause.getQuery();
+        Query q = clause.query();
         float originalBoost = 1f;
         if (q instanceof BoostQuery bq) {
           q = bq.getQuery();
@@ -146,8 +146,8 @@ abstract class AbstractMLTQParser extends QParser {
         q =
             ((fieldBoost != null)
                 ? new BoostQuery(q, fieldBoost * originalBoost)
-                : clause.getQuery());
-        newQ.add(q, clause.getOccur());
+                : clause.query());
+        newQ.add(q, clause.occur());
       }
       return QueryUtils.build(newQ, this);
     }
diff --git 
a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java 
b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
index 083211f144a..d02e8afe7a3 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
@@ -47,7 +47,7 @@ public class SimpleMLTQParser extends AbstractMLTQParser {
 
     try {
       TopDocs td = searcher.search(docIdQuery, 2);
-      if (td.totalHits.value != 1)
+      if (td.totalHits.value() != 1)
         throw new SolrException(
             SolrException.ErrorCode.BAD_REQUEST,
             "Error completing MLT request. Could not fetch "
diff --git 
a/solr/core/src/java/org/apache/solr/spelling/WordBreakSolrSpellChecker.java 
b/solr/core/src/java/org/apache/solr/spelling/WordBreakSolrSpellChecker.java
index 9086101bf44..a2af3cfe758 100644
--- a/solr/core/src/java/org/apache/solr/spelling/WordBreakSolrSpellChecker.java
+++ b/solr/core/src/java/org/apache/solr/spelling/WordBreakSolrSpellChecker.java
@@ -226,8 +226,8 @@ public class WordBreakSolrSpellChecker extends 
SolrSpellChecker {
     if (combineWords) {
       combineSuggestionList = new ArrayList<>(combineSuggestions.length);
       for (CombineSuggestion cs : combineSuggestions) {
-        int firstTermIndex = cs.originalTermIndexes[0];
-        int lastTermIndex = 
cs.originalTermIndexes[cs.originalTermIndexes.length - 1];
+        int firstTermIndex = cs.originalTermIndexes()[0];
+        int lastTermIndex = 
cs.originalTermIndexes()[cs.originalTermIndexes().length - 1];
         sb.delete(0, sb.length());
         for (int i = firstTermIndex; i <= lastTermIndex; i++) {
           if (i > firstTermIndex) {
@@ -240,7 +240,7 @@ public class WordBreakSolrSpellChecker extends 
SolrSpellChecker {
                 sb.toString(),
                 tokenArrWithSeparators.get(firstTermIndex).startOffset(),
                 tokenArrWithSeparators.get(lastTermIndex).endOffset());
-        combineSuggestionList.add(new ResultEntry(token, cs.suggestion.string, 
cs.suggestion.freq));
+        combineSuggestionList.add(new ResultEntry(token, 
cs.suggestion().string, cs.suggestion().freq));
       }
     }
 
diff --git a/solr/core/src/java/org/apache/solr/uninverting/DocTermOrds.java 
b/solr/core/src/java/org/apache/solr/uninverting/DocTermOrds.java
index 0122057c8b2..6574fde07d6 100644
--- a/solr/core/src/java/org/apache/solr/uninverting/DocTermOrds.java
+++ b/solr/core/src/java/org/apache/solr/uninverting/DocTermOrds.java
@@ -799,7 +799,7 @@ public class DocTermOrds implements Accountable {
     public long nextOrd() {
       while (bufferUpto == bufferLength) {
         if (bufferLength < buffer.length) {
-          return NO_MORE_ORDS;
+          return NO_MORE_DOCS;
         } else {
           bufferLength = read(buffer);
           bufferUpto = 0;
diff --git 
a/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java 
b/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
index 174095a2ea4..55eb904cea0 100644
--- a/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
+++ b/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
@@ -285,7 +285,7 @@ public class UninvertingReader extends FilterLeafReader {
             new FieldInfo(
                 fi.name,
                 fi.number,
-                fi.hasVectors(),
+                fi.hasTermVectors(),
                 fi.omitsNorms(),
                 fi.hasPayloads(),
                 fi.getIndexOptions(),
diff --git 
a/solr/core/src/java/org/apache/solr/update/processor/ClassificationUpdateProcessor.java
 
b/solr/core/src/java/org/apache/solr/update/processor/ClassificationUpdateProcessor.java
index f7bc7fa8c1d..ba60aa83219 100644
--- 
a/solr/core/src/java/org/apache/solr/update/processor/ClassificationUpdateProcessor.java
+++ 
b/solr/core/src/java/org/apache/solr/update/processor/ClassificationUpdateProcessor.java
@@ -130,7 +130,7 @@ class ClassificationUpdateProcessor extends 
UpdateRequestProcessor {
           classifier.getClasses(luceneDocument, maxOutputClasses);
       if (assignedClassifications != null) {
         for (ClassificationResult<BytesRef> singleClassification : 
assignedClassifications) {
-          String assignedClass = 
singleClassification.getAssignedClass().utf8ToString();
+          String assignedClass = 
singleClassification.assignedClass().utf8ToString();
           doc.addField(predictedClassField, assignedClass);
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java 
b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
index d820d699985..fe0b2aa89ab 100644
--- a/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
@@ -587,9 +587,9 @@ public class SolrPluginUtils {
     int maxDisjunctsSize = 0;
     int optionalDismaxClauses = 0;
     for (BooleanClause c : q.build().clauses()) {
-      if (c.getOccur() == Occur.SHOULD) {
-        if (mmAutoRelax && c.getQuery() instanceof DisjunctionMaxQuery) {
-          int numDisjuncts = ((DisjunctionMaxQuery) 
c.getQuery()).getDisjuncts().size();
+      if (c.occur() == Occur.SHOULD) {
+        if (mmAutoRelax && c.query() instanceof DisjunctionMaxQuery) {
+          int numDisjuncts = ((DisjunctionMaxQuery) 
c.query()).getDisjuncts().size();
           if (numDisjuncts > maxDisjunctsSize) {
             maxDisjunctsSize = numDisjuncts;
             optionalDismaxClauses = 1;
@@ -710,7 +710,7 @@ public class SolrPluginUtils {
 
     for (BooleanClause clause : from.clauses()) {
 
-      Query cq = clause.getQuery();
+      Query cq = clause.query();
       float boost = fromBoost;
       while (cq instanceof BoostQuery bq) {
         cq = bq.getQuery();
diff --git a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java 
b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
index d38207e38ba..568ad1fd2ec 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
@@ -35,10 +35,9 @@ import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.BoostQuery;
 import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.DocValuesFieldExistsQuery;
+import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.IndexOrDocValuesQuery;
 import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.NormsFieldExistsQuery;
 import org.apache.lucene.search.PointInSetQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermInSetQuery;
@@ -1809,13 +1808,13 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 
{
           assertFalse(
               "For float and double fields \""
                   + query
-                  + "\" is not an existence query, so the query returned 
should not be a DocValuesFieldExistsQuery.",
-              createdQuery instanceof DocValuesFieldExistsQuery);
+                  + "\" is not an existence query, so the query returned 
should not be a FieldExistsQuery.",
+              createdQuery instanceof FieldExistsQuery);
           assertFalse(
               "For float and double fields \""
                   + query
-                  + "\" is not an existence query, so the query returned 
should not be a NormsFieldExistsQuery.",
-              createdQuery instanceof NormsFieldExistsQuery);
+                  + "\" is not an existence query, so the query returned 
should not be a FieldExistsQuery.",
+              createdQuery instanceof FieldExistsQuery);
           assertFalse(
               "For float and double fields \""
                   + query
@@ -1831,8 +1830,8 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
             assertTrue(
                 "Field has docValues, so existence query \""
                     + query
-                    + "\" should return DocValuesFieldExistsQuery",
-                createdQuery instanceof DocValuesFieldExistsQuery);
+                    + "\" should return FieldExistsQuery",
+                createdQuery instanceof FieldExistsQuery);
           } else if (!schemaField.omitNorms()
               && !schemaField
                   .getType()
@@ -1840,8 +1839,8 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 {
             assertTrue(
                 "Field has norms and no docValues, so existence query \""
                     + query
-                    + "\" should return NormsFieldExistsQuery",
-                createdQuery instanceof NormsFieldExistsQuery);
+                    + "\" should return FieldExistsQuery",
+                createdQuery instanceof FieldExistsQuery);
           } else if (schemaField.getType().getNumberType() == NumberType.DOUBLE
               || schemaField.getType().getNumberType() == NumberType.FLOAT) {
             assertTrue(
@@ -1871,13 +1870,13 @@ public class TestSolrQueryParser extends SolrTestCaseJ4 
{
             assertFalse(
                 "Field doesn't have docValues, so existence query \""
                     + query
-                    + "\" should not return DocValuesFieldExistsQuery",
-                createdQuery instanceof DocValuesFieldExistsQuery);
+                    + "\" should not return FieldExistsQuery",
+                createdQuery instanceof FieldExistsQuery);
             assertFalse(
                 "Field doesn't have norms, so existence query \""
                     + query
-                    + "\" should not return NormsFieldExistsQuery",
-                createdQuery instanceof NormsFieldExistsQuery);
+                    + "\" should not return FieldExistsQuery",
+                createdQuery instanceof FieldExistsQuery);
           }
         }
       }

Reply via email to