Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SOLR-17097: Upgrade Solr to use Lucene 9.9.2 #2176

Merged
merged 7 commits into from Jan 30, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 5 additions & 5 deletions solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java
Expand Up @@ -26,9 +26,9 @@
import org.apache.lucene.codecs.KnnVectorsReader;
import org.apache.lucene.codecs.KnnVectorsWriter;
import org.apache.lucene.codecs.PostingsFormat;
import org.apache.lucene.codecs.lucene95.Lucene95Codec;
import org.apache.lucene.codecs.lucene95.Lucene95Codec.Mode;
import org.apache.lucene.codecs.lucene95.Lucene95HnswVectorsFormat;
import org.apache.lucene.codecs.lucene99.Lucene99Codec;
import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode;
import org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.SegmentWriteState;
import org.apache.solr.common.SolrException;
Expand Down Expand Up @@ -97,7 +97,7 @@ public void init(NamedList<?> args) {
log.debug("Using default compressionMode: {}", compressionMode);
}
codec =
new Lucene95Codec(compressionMode) {
new Lucene99Codec(compressionMode) {
@Override
public PostingsFormat getPostingsFormatForField(String field) {
final SchemaField schemaField = core.getLatestSchema().getFieldOrNull(field);
Expand Down Expand Up @@ -132,7 +132,7 @@ public KnnVectorsFormat getKnnVectorsFormatForField(String field) {
if (DenseVectorField.HNSW_ALGORITHM.equals(knnAlgorithm)) {
int maxConn = vectorType.getHnswMaxConn();
int beamWidth = vectorType.getHnswBeamWidth();
var delegate = new Lucene95HnswVectorsFormat(maxConn, beamWidth);
var delegate = new Lucene99HnswVectorsFormat(maxConn, beamWidth);
return new SolrDelegatingKnnVectorsFormat(delegate, vectorType.getDimension());
} else {
throw new SolrException(
Expand Down
Expand Up @@ -42,6 +42,7 @@
import org.apache.lucene.search.FuzzyTermsEnum;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.MatchNoDocsQuery;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorable;
import org.apache.lucene.search.Sort;
Expand Down Expand Up @@ -497,7 +498,12 @@ protected int compare(int i, int j) {
// :TODO: would be simpler to always serialize every position of SortField[]
if (type == SortField.Type.SCORE || type == SortField.Type.DOC) continue;

FieldComparator<?> comparator = sortField.getComparator(1, true);
FieldComparator<?> comparator =
sortField.getComparator(
1,
schemaFields.size() > 1
? Pruning.GREATER_THAN
: Pruning.GREATER_THAN_OR_EQUAL_TO);
LeafFieldComparator leafComparator = null;
Object[] vals = new Object[nDocs];

Expand Down
Expand Up @@ -55,6 +55,7 @@
import org.apache.lucene.search.BoostQuery;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.FieldComparatorSource;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.SimpleFieldComparator;
import org.apache.lucene.search.Sort;
Expand Down Expand Up @@ -1350,7 +1351,7 @@ private ElevationComparatorSource(

@Override
public FieldComparator<Integer> newComparator(
String fieldName, final int numHits, boolean enableSkipping, boolean reversed) {
String fieldName, final int numHits, Pruning pruning, boolean reversed) {
return new SimpleFieldComparator<>() {
final int[] values = new int[numHits];
int bottomVal;
Expand Down
Expand Up @@ -26,6 +26,7 @@
import java.util.Objects;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.SortField;
import org.apache.lucene.util.PriorityQueue;
import org.apache.solr.common.SolrException;
Expand Down Expand Up @@ -156,7 +157,9 @@ Object sortVal(ShardDoc shardDoc) {

Comparator<ShardDoc> comparatorFieldComparator(SortField sortField) {
@SuppressWarnings({"rawtypes"})
final FieldComparator fieldComparator = sortField.getComparator(0, true);
final FieldComparator fieldComparator =
sortField.getComparator(
0, fieldNames.size() > 1 ? Pruning.GREATER_THAN : Pruning.GREATER_THAN_OR_EQUAL_TO);
return new ShardComparator(sortField) {
// Since the PriorityQueue keeps the biggest elements by default,
// we need to reverse the field compare ordering so that the
Expand Down
Expand Up @@ -97,7 +97,7 @@ public static LeafReader wrap(IndexReader reader) throws IOException {
in = reader;
in.registerParentReader(this);
if (reader.leaves().isEmpty()) {
metaData = new LeafMetaData(Version.LATEST.major, Version.LATEST, null);
metaData = new LeafMetaData(Version.LATEST.major, Version.LATEST, null, false);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

} else {
Version minVersion = Version.LATEST;
for (LeafReaderContext leafReaderContext : reader.leaves()) {
Expand All @@ -109,9 +109,10 @@ public static LeafReader wrap(IndexReader reader) throws IOException {
minVersion = leafVersion;
}
}
int createdVersionMajor =
reader.leaves().get(0).reader().getMetaData().getCreatedVersionMajor();
metaData = new LeafMetaData(createdVersionMajor, minVersion, null);
LeafMetaData leafMetaData = reader.leaves().get(0).reader().getMetaData();
metaData =
new LeafMetaData(
leafMetaData.getCreatedVersionMajor(), minVersion, null, leafMetaData.hasBlocks());
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity, why don't we also specify the sort parameter here (3rd parameter)? It could be retrieved from existing leaf metadata (this is not new with this change).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point, we could specify leafMetaData.getSort() if docs are in no particular order, it would be null.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity, why don't we also specify the sort parameter here (3rd parameter)? It could be retrieved from existing leaf metadata (this is not new with this change).

I wonder if this might be because we don't yet have 'full' index sorting directly configurable in Solr -- https://issues.apache.org/jira/browse/SOLR-13681 exists for that -- i.e. commonly the sort would indeed be null except when a SortingMergePolicy is configured in which case we'd have 'partial' index sorting i.e. some segments could be sorted and some could be unsorted and thus it would be tricky to confidently set the sort value to anything other than the null value.

... (this is not new with this change).

My preference would be to not change the parameter setting as part of the Lucene upgrade but to perhaps leave a note on SOLR-13681 or have a separate issue for that change.

}
fieldInfos = FieldInfos.getMergedFieldInfos(in);
}
Expand Down
Expand Up @@ -17,8 +17,8 @@
package org.apache.solr.schema;

import static java.util.Optional.ofNullable;
import static org.apache.lucene.codecs.lucene95.Lucene95HnswVectorsFormat.DEFAULT_BEAM_WIDTH;
import static org.apache.lucene.codecs.lucene95.Lucene95HnswVectorsFormat.DEFAULT_MAX_CONN;
import static org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat.DEFAULT_BEAM_WIDTH;
import static org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat.DEFAULT_MAX_CONN;

import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
Expand Down
Expand Up @@ -37,6 +37,7 @@
import org.apache.lucene.search.IndexOrDocValuesQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.SortField;
import org.apache.lucene.spatial.SpatialStrategy;
Expand Down Expand Up @@ -270,7 +271,7 @@ public DoubleValues getValues(LeafReaderContext ctx, DoubleValues scores) throws

@SuppressWarnings("unchecked")
final FieldComparator<Double> comparator =
(FieldComparator<Double>) getSortField(false).getComparator(1, false);
(FieldComparator<Double>) getSortField(false).getComparator(1, Pruning.NONE);

final LeafFieldComparator leafComparator = comparator.getLeafComparator(ctx);
final double mult = multiplier; // so it's a local field
Expand Down
Expand Up @@ -27,6 +27,7 @@
import org.apache.lucene.queries.function.docvalues.IntDocValues;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.FieldComparatorSource;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.SimpleFieldComparator;
import org.apache.lucene.search.SortField;
import org.apache.solr.response.TextResponseWriter;
Expand Down Expand Up @@ -112,7 +113,7 @@ public void write(TextResponseWriter writer, String name, IndexableField f) thro
new FieldComparatorSource() {
@Override
public FieldComparator<Integer> newComparator(
final String fieldname, final int numHits, boolean enableSkipping, boolean reversed) {
final String fieldname, final int numHits, Pruning pruning, boolean reversed) {
return new SimpleFieldComparator<>() {
int seed;
private final int[] values = new int[numHits];
Expand Down
Expand Up @@ -55,6 +55,7 @@
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryVisitor;
import org.apache.lucene.search.Scorable;
Expand Down Expand Up @@ -3583,7 +3584,13 @@ public SortFieldsCompare(SortField[] sorts, int initNumGroups) {
for (int clause = 0; clause < numClauses; clause++) {
SortField sf = sorts[clause];
// we only need one slot for every comparator
fieldComparators[clause] = sf.getComparator(1, clause == 0);
fieldComparators[clause] =
sf.getComparator(
1,
clause == 0
? (numClauses > 1 ? Pruning.GREATER_THAN : Pruning.GREATER_THAN_OR_EQUAL_TO)
: Pruning.NONE);

reverseMul[clause] = sf.getReverse() ? -1 : 1;
}
groupHeadValues = new Object[initNumGroups][];
Expand Down
Expand Up @@ -25,6 +25,7 @@
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.SortField.Type;
Expand Down Expand Up @@ -124,8 +125,8 @@ public SortField getSortField(boolean reverse) {
childField.getName(), type, reverse, parentFilter, childFilter) {
@SuppressWarnings("unchecked")
@Override
public FieldComparator<?> getComparator(int numHits, boolean enableSkipping) {
final FieldComparator<?> comparator = super.getComparator(numHits, enableSkipping);
public FieldComparator<?> getComparator(int numHits, Pruning pruning) {
final FieldComparator<?> comparator = super.getComparator(numHits, pruning);
return type == Type.STRING
? new BytesToStringComparator((FieldComparator<BytesRef>) comparator)
: comparator;
Expand Down
Expand Up @@ -20,7 +20,7 @@
as a way to vet that the configuration actually matters.
-->
<fieldType name="string_direct" class="solr.StrField" postingsFormat="Direct" docValuesFormat="Asserting" />
<fieldType name="string_standard" class="solr.StrField" postingsFormat="Lucene90"/>
<fieldType name="string_standard" class="solr.StrField" postingsFormat="Lucene99"/>

<fieldType name="string_disk" class="solr.StrField" />

Expand Down
Expand Up @@ -21,7 +21,7 @@
import java.io.IOException;
import java.util.Map;
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.codecs.lucene95.Lucene95Codec.Mode;
import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode;
import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat;
import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
import org.apache.lucene.index.SegmentInfo;
Expand Down
Expand Up @@ -34,6 +34,7 @@
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.LeafCollector;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Pruning;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryVisitor;
import org.apache.lucene.search.Scorable;
Expand Down Expand Up @@ -447,7 +448,7 @@ protected int compare(int i, int j) {
}

if (comparator == null) {
comparator = sortField.getComparator(1, true);
comparator = sortField.getComparator(1, Pruning.NONE);
leafComparator = comparator.getLeafComparator(currentLeaf);
}

Expand Down
2 changes: 1 addition & 1 deletion solr/core/src/test/org/apache/solr/search/TestDocSet.java
Expand Up @@ -401,7 +401,7 @@ public void checkIntegrity() {}

@Override
public LeafMetaData getMetaData() {
return new LeafMetaData(Version.LATEST.major, Version.LATEST, null);
return new LeafMetaData(Version.LATEST.major, Version.LATEST, null, true);
}

@Override
Expand Down
Expand Up @@ -247,9 +247,16 @@ public void testSyntax() throws Exception {
SchemaField foo_dt = h.getCore().getLatestSchema().getField("foo_dt");
String expected = "foo_dt:2013-09-11T00:00:00Z";
if (foo_dt.getType().isPointField()) {
expected = "(foo_dt:[1378857600000 TO 1378857600000])";
expected = "foo_dt:[1378857600000 TO 1378857600000]";
if (foo_dt.hasDocValues() && foo_dt.indexed()) {
expected = "IndexOrDocValuesQuery" + expected;
expected =
"IndexOrDocValuesQuery(IndexOrDocValuesQuery(indexQuery="
+ expected
+ ", dvQuery="
+ expected
+ "))";
} else {
expected = "(" + expected + ")";
Comment on lines -250 to +259
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

}
}
assertJQ(
Expand Down
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-common-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-common-9.9.1.jar.sha1
@@ -0,0 +1 @@
24c8401b530308f9568eb7b408c2029c63f564c6
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-icu-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-icu-9.9.1.jar.sha1
@@ -0,0 +1 @@
147cb42a90a29501d9ca6094ea0db1d213f3076a
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-kuromoji-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-kuromoji-9.9.1.jar.sha1
@@ -0,0 +1 @@
b034dd3a975763e083c7e11b5d0f7d516ab72590
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-morfologik-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-morfologik-9.9.1.jar.sha1
@@ -0,0 +1 @@
8d9bce1ea51db279878c51091dd9aefc7b335da4
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-nori-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-nori-9.9.1.jar.sha1
@@ -0,0 +1 @@
c405f2f7d0fc127d88dfbadd753469b2028fdf52
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-opennlp-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-opennlp-9.9.1.jar.sha1
@@ -0,0 +1 @@
884144fe62a87e9e86125f95d970dfa7890bc4bc
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-phonetic-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-phonetic-9.9.1.jar.sha1
@@ -0,0 +1 @@
970e5775876c2d7e1b9af7421a4b17d96f63faf4
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-smartcn-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-smartcn-9.9.1.jar.sha1
@@ -0,0 +1 @@
2421e5238e9b8484929291744d709dd743c01da1
1 change: 0 additions & 1 deletion solr/licenses/lucene-analysis-stempel-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-analysis-stempel-9.9.1.jar.sha1
@@ -0,0 +1 @@
a23e7de4cd9ae7af285c89dc1c55e0ac3f157fd3
1 change: 0 additions & 1 deletion solr/licenses/lucene-backward-codecs-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-backward-codecs-9.9.1.jar.sha1
@@ -0,0 +1 @@
11c46007366bb037be7d271ab0a5849b1d544662
1 change: 0 additions & 1 deletion solr/licenses/lucene-classification-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-classification-9.9.1.jar.sha1
@@ -0,0 +1 @@
63b7a9a80b09d6bed0e61771dbe85be93f3cdf28
1 change: 0 additions & 1 deletion solr/licenses/lucene-codecs-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-codecs-9.9.1.jar.sha1
@@ -0,0 +1 @@
b7f000f2b96745eb33c148f3cbdb0bd74d55f4bb
1 change: 0 additions & 1 deletion solr/licenses/lucene-core-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-core-9.9.1.jar.sha1
@@ -0,0 +1 @@
55249fa9a0ed321adcf8283c6f3b649a6812b0a9
1 change: 0 additions & 1 deletion solr/licenses/lucene-expressions-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-expressions-9.9.1.jar.sha1
@@ -0,0 +1 @@
1782a69d0e83af9cc3c65db0dcd2e7e7c1e5f90e
1 change: 0 additions & 1 deletion solr/licenses/lucene-grouping-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-grouping-9.9.1.jar.sha1
@@ -0,0 +1 @@
2f2785e17c5c823cc8f41a7ddb4647aaca8ee773
1 change: 0 additions & 1 deletion solr/licenses/lucene-highlighter-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-highlighter-9.9.1.jar.sha1
@@ -0,0 +1 @@
30928513461bf79a5cb057e84da7d34a1e53227d
1 change: 0 additions & 1 deletion solr/licenses/lucene-join-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-join-9.9.1.jar.sha1
@@ -0,0 +1 @@
b9c8cc99632280148f92b4c0a64111c482d5d0ac
1 change: 0 additions & 1 deletion solr/licenses/lucene-memory-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-memory-9.9.1.jar.sha1
@@ -0,0 +1 @@
49f820b1b321860fa42a4f7583e8ed8f77b9c1c2
1 change: 0 additions & 1 deletion solr/licenses/lucene-misc-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-misc-9.9.1.jar.sha1
@@ -0,0 +1 @@
db7c30217602dfcda394a4d0f0a9e68140d385a6
1 change: 0 additions & 1 deletion solr/licenses/lucene-queries-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-queries-9.9.1.jar.sha1
@@ -0,0 +1 @@
d157547bd24edc8e9d9d59c273107dc3ac5fde5e
1 change: 0 additions & 1 deletion solr/licenses/lucene-queryparser-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-queryparser-9.9.1.jar.sha1
@@ -0,0 +1 @@
12d844fe224f6f97c510ac20d68903ed7f626f6c
1 change: 0 additions & 1 deletion solr/licenses/lucene-sandbox-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-sandbox-9.9.1.jar.sha1
@@ -0,0 +1 @@
272e588fd3d8c0a401b28a1ac715f27044bf62ec
1 change: 0 additions & 1 deletion solr/licenses/lucene-spatial-extras-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-spatial-extras-9.9.1.jar.sha1
@@ -0,0 +1 @@
e066432e7ab02b2a4914f989bcd8c44adbf340ad
1 change: 0 additions & 1 deletion solr/licenses/lucene-spatial3d-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-spatial3d-9.9.1.jar.sha1
@@ -0,0 +1 @@
fa54c9b962778e28ebc0efb9f75297781350361a
1 change: 0 additions & 1 deletion solr/licenses/lucene-suggest-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-suggest-9.9.1.jar.sha1
@@ -0,0 +1 @@
9554de5b22ae7483b344b94a9a956960b7a5d49c
1 change: 0 additions & 1 deletion solr/licenses/lucene-test-framework-9.8.0.jar.sha1

This file was deleted.

1 change: 1 addition & 0 deletions solr/licenses/lucene-test-framework-9.9.1.jar.sha1
@@ -0,0 +1 @@
a7bb7d7c0bc9056f1f226e82754b9889366c394d
2 changes: 1 addition & 1 deletion solr/server/solr/configsets/_default/conf/solrconfig.xml
Expand Up @@ -35,7 +35,7 @@
that you fully re-index after changing this setting as it can
affect both how text is indexed and queried.
-->
<luceneMatchVersion>9.8</luceneMatchVersion>
<luceneMatchVersion>9.9</luceneMatchVersion>

<!-- <lib/> directives can be used to instruct Solr to load any Jars
identified and use them to resolve any "plugins" specified in
Expand Down
Expand Up @@ -35,7 +35,7 @@
that you fully re-index after changing this setting as it can
affect both how text is indexed and queried.
-->
<luceneMatchVersion>9.8</luceneMatchVersion>
<luceneMatchVersion>9.9</luceneMatchVersion>

<!-- <lib/> directives can be used to instruct Solr to load any Jars
identified and use them to resolve any "plugins" specified in
Expand Down