Skip to content

Commit ee1e48d

Browse files
authored
SOLR-17471: upgrade Lucene to version 9.12.1 (#2736)
1 parent f844b7f commit ee1e48d

File tree

74 files changed

+141
-129
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+141
-129
lines changed

dev-docs/lucene-upgrade.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Create a new branch locally e.g. `git checkout -b lucene940 -t origin/main` for
2727

2828
## Build
2929

30-
### `versions.props` update
30+
### `gradle/libs.versions.toml` update
3131

3232
```
3333
- org.apache.lucene:*=9.3.0
@@ -37,7 +37,7 @@ Create a new branch locally e.g. `git checkout -b lucene940 -t origin/main` for
3737
### `versions.lock` update
3838

3939
```
40-
gradlew --write-locks
40+
gradlew :writeLocks
4141
```
4242

4343
### `solr/licenses` update

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ apache-httpcomponents-httpcore = "4.4.16"
3939
apache-httpcomponents-httpmime = "4.5.14"
4040
apache-kafka = "3.7.1"
4141
apache-log4j = "2.21.0"
42-
apache-lucene = "9.11.1"
42+
apache-lucene = "9.12.1"
4343
apache-opennlp = "1.9.4"
4444
apache-poi = "5.2.2"
4545
apache-rat = "0.15"

solr/CHANGES.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ Bug Fixes
170170

171171
Dependency Upgrades
172172
---------------------
173-
(No changes)
173+
* SOLR-17471: Upgrade Lucene to 9.12.1. (Pierre Salagnac, Christine Poerschke)
174174

175175
Other Changes
176176
---------------------

solr/core/src/java/org/apache/solr/core/SchemaCodecFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.apache.lucene.codecs.KnnVectorsReader;
2727
import org.apache.lucene.codecs.KnnVectorsWriter;
2828
import org.apache.lucene.codecs.PostingsFormat;
29-
import org.apache.lucene.codecs.lucene99.Lucene99Codec;
30-
import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode;
29+
import org.apache.lucene.codecs.lucene912.Lucene912Codec;
30+
import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode;
3131
import org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat;
3232
import org.apache.lucene.index.SegmentReadState;
3333
import org.apache.lucene.index.SegmentWriteState;
@@ -97,7 +97,7 @@ public void init(NamedList<?> args) {
9797
log.debug("Using default compressionMode: {}", compressionMode);
9898
}
9999
codec =
100-
new Lucene99Codec(compressionMode) {
100+
new Lucene912Codec(compressionMode) {
101101
@Override
102102
public PostingsFormat getPostingsFormatForField(String field) {
103103
final SchemaField schemaField = core.getLatestSchema().getFieldOrNull(field);

solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.apache.lucene.store.IndexOutput;
3232
import org.apache.lucene.util.IOUtils;
3333
import org.apache.solr.common.params.CoreAdminParams;
34-
import org.apache.solr.core.DirectoryFactory;
3534
import org.apache.solr.core.backup.Checksum;
3635
import org.apache.solr.util.plugin.NamedListInitializedPlugin;
3736

@@ -217,9 +216,8 @@ default void copyIndexFileFrom(
217216
Directory sourceDir, String sourceFileName, Directory destDir, String destFileName)
218217
throws IOException {
219218
boolean success = false;
220-
try (ChecksumIndexInput is =
221-
sourceDir.openChecksumInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE);
222-
IndexOutput os = destDir.createOutput(destFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) {
219+
try (ChecksumIndexInput is = sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE);
220+
IndexOutput os = destDir.createOutput(destFileName, IOContext.READONCE)) {
223221
os.copyBytes(is, is.length() - CodecUtil.footerLength());
224222

225223
// ensure that index file is not corrupted
@@ -300,8 +298,8 @@ default void copyFileNoChecksum(
300298
Directory sourceDir, String sourceFileName, Directory destDir, String destFileName)
301299
throws IOException {
302300
boolean success = false;
303-
try (IndexInput is = sourceDir.openInput(sourceFileName, DirectoryFactory.IOCONTEXT_NO_CACHE);
304-
IndexOutput os = destDir.createOutput(destFileName, DirectoryFactory.IOCONTEXT_NO_CACHE)) {
301+
try (IndexInput is = sourceDir.openInput(sourceFileName, IOContext.READONCE);
302+
IndexOutput os = destDir.createOutput(destFileName, IOContext.READONCE)) {
305303
os.copyBytes(is, is.length());
306304
success = true;
307305
} finally {

solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* <p>Optional settings:
3232
*
3333
* <ul>
34-
* <li>discountOverlaps (bool): Sets {@link ClassicSimilarity#setDiscountOverlaps(boolean)}
34+
* <li>discountOverlaps (bool): Sets {@link ClassicSimilarity#getDiscountOverlaps()}.
3535
* </ul>
3636
*
3737
* @see TFIDFSimilarity
@@ -41,13 +41,13 @@ public class ClassicSimilarityFactory extends SimilarityFactory {
4141

4242
/**
4343
* Init param name for specifying the value to use in {@link
44-
* ClassicSimilarity#setDiscountOverlaps(boolean)}
44+
* ClassicSimilarity#getDiscountOverlaps()}.
4545
*/
4646
public static final String DISCOUNT_OVERLAPS = "discountOverlaps";
4747

4848
/**
49-
* Controls the value of {@link ClassicSimilarity#setDiscountOverlaps(boolean)} on newly
50-
* constructed instances of {@link ClassicSimilarity}
49+
* Controls the value of {@link ClassicSimilarity#getDiscountOverlaps()} on newly constructed
50+
* instances of {@link ClassicSimilarity}
5151
*/
5252
protected boolean discountOverlaps = true;
5353

@@ -59,8 +59,6 @@ public void init(SolrParams params) {
5959

6060
@Override
6161
public Similarity getSimilarity() {
62-
ClassicSimilarity sim = new ClassicSimilarity();
63-
sim.setDiscountOverlaps(discountOverlaps);
64-
return sim;
62+
return new ClassicSimilarity(discountOverlaps);
6563
}
6664
}

solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
* Optional settings:
4040
*
4141
* <ul>
42-
* <li>discountOverlaps (bool): Sets {@link
43-
* org.apache.lucene.search.similarities.SimilarityBase#setDiscountOverlaps(boolean)}
42+
* <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
4443
* </ul>
4544
*
4645
* @lucene.experimental
@@ -59,9 +58,7 @@ public void init(SolrParams params) {
5958

6059
@Override
6160
public Similarity getSimilarity() {
62-
DFISimilarity sim = new DFISimilarity(independenceMeasure);
63-
sim.setDiscountOverlaps(discountOverlaps);
64-
return sim;
61+
return new DFISimilarity(independenceMeasure, discountOverlaps);
6562
}
6663

6764
private Independence parseIndependenceMeasure(String expr) {

solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
* <p>Optional settings:
8787
*
8888
* <ul>
89-
* <li>discountOverlaps (bool): Sets {@link DFRSimilarity#setDiscountOverlaps(boolean)}
89+
* <li>discountOverlaps (bool): Sets {@link Similarity#getDiscountOverlaps()}
9090
* </ul>
9191
*
9292
* @lucene.experimental
@@ -160,8 +160,6 @@ static Normalization parseNormalization(String expr, String c, String mu, String
160160

161161
@Override
162162
public Similarity getSimilarity() {
163-
DFRSimilarity sim = new DFRSimilarity(basicModel, afterEffect, normalization);
164-
sim.setDiscountOverlaps(discountOverlaps);
165-
return sim;
163+
return new DFRSimilarity(basicModel, afterEffect, normalization, discountOverlaps);
166164
}
167165
}

solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
* <p>Optional settings:
5757
*
5858
* <ul>
59-
* <li>discountOverlaps (bool): Sets {@link IBSimilarity#setDiscountOverlaps(boolean)}
59+
* <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
6060
* </ul>
6161
*
6262
* @lucene.experimental
@@ -100,8 +100,6 @@ private Lambda parseLambda(String expr) {
100100

101101
@Override
102102
public Similarity getSimilarity() {
103-
IBSimilarity sim = new IBSimilarity(distribution, lambda, normalization);
104-
sim.setDiscountOverlaps(discountOverlaps);
105-
return sim;
103+
return new IBSimilarity(distribution, lambda, normalization, discountOverlaps);
106104
}
107105
}

solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.apache.solr.search.similarities;
1818

1919
import org.apache.lucene.search.similarities.LMDirichletSimilarity;
20+
import org.apache.lucene.search.similarities.LMSimilarity;
2021
import org.apache.lucene.search.similarities.Similarity;
2122
import org.apache.solr.common.params.SolrParams;
2223
import org.apache.solr.schema.SimilarityFactory;
@@ -33,7 +34,7 @@
3334
* <p>Optional settings:
3435
*
3536
* <ul>
36-
* <li>discountOverlaps (bool): Sets {@link LMDirichletSimilarity#setDiscountOverlaps(boolean)}
37+
* <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
3738
* </ul>
3839
*
3940
* @lucene.experimental
@@ -51,9 +52,13 @@ public void init(SolrParams params) {
5152

5253
@Override
5354
public Similarity getSimilarity() {
54-
LMDirichletSimilarity sim =
55-
(mu != null) ? new LMDirichletSimilarity(mu) : new LMDirichletSimilarity();
56-
sim.setDiscountOverlaps(discountOverlaps);
57-
return sim;
55+
56+
// Default μ is 2000 in Lucene. Unfortunately, there is no constant we can use
57+
if (mu == null) {
58+
mu = 2000f;
59+
}
60+
61+
LMSimilarity.CollectionModel model = new LMSimilarity.DefaultCollectionModel();
62+
return new LMDirichletSimilarity(model, discountOverlaps, mu);
5863
}
5964
}

0 commit comments

Comments
 (0)