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); } } }
