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

psalagnac pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new d040b2ae6ea SOLR-17471: upgrade Lucene to version 9.12.1 (#2736)
d040b2ae6ea is described below

commit d040b2ae6ead52186648d45c83cee491c5669949
Author: Pierre Salagnac <psalag...@apache.org>
AuthorDate: Mon Jan 6 18:28:12 2025 +0100

    SOLR-17471: upgrade Lucene to version 9.12.1 (#2736)
---
 dev-docs/lucene-upgrade.md                         |  4 +-
 solr/CHANGES.txt                                   |  2 +-
 .../org/apache/solr/core/SchemaCodecFactory.java   |  6 +--
 .../core/backup/repository/BackupRepository.java   | 10 ++--
 .../similarities/ClassicSimilarityFactory.java     | 12 ++---
 .../search/similarities/DFISimilarityFactory.java  |  7 +--
 .../search/similarities/DFRSimilarityFactory.java  |  6 +--
 .../search/similarities/IBSimilarityFactory.java   |  6 +--
 .../similarities/LMDirichletSimilarityFactory.java | 15 ++++--
 .../LMJelinekMercerSimilarityFactory.java          |  9 ++--
 .../similarities/SweetSpotSimilarityFactory.java   | 50 +++++++++++++-------
 .../solr/collection1/conf/schema_codec.xml         |  2 +-
 .../org/apache/solr/core/TestCodecSupport.java     |  2 +-
 .../lucene-analysis-common-9.11.1.jar.sha1         |  1 -
 .../lucene-analysis-common-9.12.1.jar.sha1         |  1 +
 solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1  |  1 -
 solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1  |  1 +
 .../lucene-analysis-kuromoji-9.11.1.jar.sha1       |  1 -
 .../lucene-analysis-kuromoji-9.12.1.jar.sha1       |  1 +
 .../lucene-analysis-morfologik-9.11.1.jar.sha1     |  1 -
 .../lucene-analysis-morfologik-9.12.1.jar.sha1     |  1 +
 solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 |  1 -
 solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 |  1 +
 .../lucene-analysis-opennlp-9.11.1.jar.sha1        |  1 -
 .../lucene-analysis-opennlp-9.12.1.jar.sha1        |  1 +
 .../lucene-analysis-phonetic-9.11.1.jar.sha1       |  1 -
 .../lucene-analysis-phonetic-9.12.1.jar.sha1       |  1 +
 .../lucene-analysis-smartcn-9.11.1.jar.sha1        |  1 -
 .../lucene-analysis-smartcn-9.12.1.jar.sha1        |  1 +
 .../lucene-analysis-stempel-9.11.1.jar.sha1        |  1 -
 .../lucene-analysis-stempel-9.12.1.jar.sha1        |  1 +
 .../lucene-backward-codecs-9.11.1.jar.sha1         |  1 -
 .../lucene-backward-codecs-9.12.1.jar.sha1         |  1 +
 .../licenses/lucene-classification-9.11.1.jar.sha1 |  1 -
 .../licenses/lucene-classification-9.12.1.jar.sha1 |  1 +
 solr/licenses/lucene-codecs-9.11.1.jar.sha1        |  1 -
 solr/licenses/lucene-codecs-9.12.1.jar.sha1        |  1 +
 solr/licenses/lucene-core-9.11.1.jar.sha1          |  1 -
 solr/licenses/lucene-core-9.12.1.jar.sha1          |  1 +
 solr/licenses/lucene-expressions-9.11.1.jar.sha1   |  1 -
 solr/licenses/lucene-expressions-9.12.1.jar.sha1   |  1 +
 solr/licenses/lucene-facet-9.12.1.jar.sha1         |  1 +
 solr/licenses/lucene-grouping-9.11.1.jar.sha1      |  1 -
 solr/licenses/lucene-grouping-9.12.1.jar.sha1      |  1 +
 solr/licenses/lucene-highlighter-9.11.1.jar.sha1   |  1 -
 solr/licenses/lucene-highlighter-9.12.1.jar.sha1   |  1 +
 solr/licenses/lucene-join-9.11.1.jar.sha1          |  1 -
 solr/licenses/lucene-join-9.12.1.jar.sha1          |  1 +
 solr/licenses/lucene-memory-9.11.1.jar.sha1        |  1 -
 solr/licenses/lucene-memory-9.12.1.jar.sha1        |  1 +
 solr/licenses/lucene-misc-9.11.1.jar.sha1          |  1 -
 solr/licenses/lucene-misc-9.12.1.jar.sha1          |  1 +
 solr/licenses/lucene-queries-9.11.1.jar.sha1       |  1 -
 solr/licenses/lucene-queries-9.12.1.jar.sha1       |  1 +
 solr/licenses/lucene-queryparser-9.11.1.jar.sha1   |  1 -
 solr/licenses/lucene-queryparser-9.12.1.jar.sha1   |  1 +
 solr/licenses/lucene-sandbox-9.11.1.jar.sha1       |  1 -
 solr/licenses/lucene-sandbox-9.12.1.jar.sha1       |  1 +
 .../licenses/lucene-spatial-extras-9.11.1.jar.sha1 |  1 -
 .../licenses/lucene-spatial-extras-9.12.1.jar.sha1 |  1 +
 solr/licenses/lucene-spatial3d-9.11.1.jar.sha1     |  1 -
 solr/licenses/lucene-spatial3d-9.12.1.jar.sha1     |  1 +
 solr/licenses/lucene-suggest-9.11.1.jar.sha1       |  1 -
 solr/licenses/lucene-suggest-9.12.1.jar.sha1       |  1 +
 .../licenses/lucene-test-framework-9.11.1.jar.sha1 |  1 -
 .../licenses/lucene-test-framework-9.12.1.jar.sha1 |  1 +
 .../org/apache/solr/gcs/GCSBackupRepository.java   |  4 +-
 .../org/apache/solr/s3/S3BackupRepository.java     |  5 +-
 .../org/apache/solr/s3/S3BackupRepositoryTest.java | 11 +++--
 .../solr/configsets/_default/conf/solrconfig.xml   |  2 +-
 .../conf/solrconfig.xml                            |  2 +-
 .../collections/AbstractBackupRepositoryTest.java  |  7 ++-
 versions.lock                                      | 53 +++++++++++-----------
 versions.props                                     |  2 +-
 74 files changed, 141 insertions(+), 129 deletions(-)

diff --git a/dev-docs/lucene-upgrade.md b/dev-docs/lucene-upgrade.md
index c9ee1a27802..e5ab91e7c9f 100644
--- a/dev-docs/lucene-upgrade.md
+++ b/dev-docs/lucene-upgrade.md
@@ -27,7 +27,7 @@ Create a new branch locally e.g. `git checkout -b lucene940 
-t origin/main` for
 
 ## Build
 
-### `versions.props` update
+### `gradle/libs.versions.toml` update
 
 ```
 - 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
 ### `versions.lock` update
 
 ```
-gradlew --write-locks
+gradlew :writeLocks
 ```
 
 ### `solr/licenses` update
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0f86d7cc4a5..d4a65cdedb8 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -29,7 +29,7 @@ Bug Fixes
 
 Dependency Upgrades
 ---------------------
-(No changes)
+* SOLR-17471: Upgrade Lucene to 9.12.1. (Pierre Salagnac, Christine Poerschke)
 
 Other Changes
 ---------------------
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 9c52f912784..76ce9322ec0 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.lucene99.Lucene99Codec;
-import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode;
+import org.apache.lucene.codecs.lucene912.Lucene912Codec;
+import org.apache.lucene.codecs.lucene912.Lucene912Codec.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 Lucene99Codec(compressionMode) {
+        new Lucene912Codec(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/backup/repository/BackupRepository.java
 
b/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java
index b888912974e..689334aef9b 100644
--- 
a/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java
+++ 
b/solr/core/src/java/org/apache/solr/core/backup/repository/BackupRepository.java
@@ -31,7 +31,6 @@ import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.params.CoreAdminParams;
-import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.backup.Checksum;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
 
@@ -217,9 +216,8 @@ public interface BackupRepository extends 
NamedListInitializedPlugin, Closeable
       Directory sourceDir, String sourceFileName, Directory destDir, String 
destFileName)
       throws IOException {
     boolean success = false;
-    try (ChecksumIndexInput is =
-            sourceDir.openChecksumInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE);
-        IndexOutput os = destDir.createOutput(destFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)) {
+    try (ChecksumIndexInput is = sourceDir.openChecksumInput(sourceFileName, 
IOContext.READONCE);
+        IndexOutput os = destDir.createOutput(destFileName, 
IOContext.READONCE)) {
       os.copyBytes(is, is.length() - CodecUtil.footerLength());
 
       // ensure that index file is not corrupted
@@ -312,8 +310,8 @@ public interface BackupRepository extends 
NamedListInitializedPlugin, Closeable
       Directory sourceDir, String sourceFileName, Directory destDir, String 
destFileName)
       throws IOException {
     boolean success = false;
-    try (IndexInput is = sourceDir.openInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE);
-        IndexOutput os = destDir.createOutput(destFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)) {
+    try (IndexInput is = sourceDir.openInput(sourceFileName, 
IOContext.READONCE);
+        IndexOutput os = destDir.createOutput(destFileName, 
IOContext.READONCE)) {
       os.copyBytes(is, is.length());
       success = true;
     } finally {
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java
index 250ca045acf..ade8362ee88 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/ClassicSimilarityFactory.java
@@ -31,7 +31,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * <p>Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link 
ClassicSimilarity#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {@link 
ClassicSimilarity#getDiscountOverlaps()}.
  * </ul>
  *
  * @see TFIDFSimilarity
@@ -41,13 +41,13 @@ public class ClassicSimilarityFactory extends 
SimilarityFactory {
 
   /**
    * Init param name for specifying the value to use in {@link
-   * ClassicSimilarity#setDiscountOverlaps(boolean)}
+   * ClassicSimilarity#getDiscountOverlaps()}.
    */
   public static final String DISCOUNT_OVERLAPS = "discountOverlaps";
 
   /**
-   * Controls the value of {@link 
ClassicSimilarity#setDiscountOverlaps(boolean)} on newly
-   * constructed instances of {@link ClassicSimilarity}
+   * Controls the value of {@link ClassicSimilarity#getDiscountOverlaps()} on 
newly constructed
+   * instances of {@link ClassicSimilarity}
    */
   protected boolean discountOverlaps = true;
 
@@ -59,8 +59,6 @@ public class ClassicSimilarityFactory extends 
SimilarityFactory {
 
   @Override
   public Similarity getSimilarity() {
-    ClassicSimilarity sim = new ClassicSimilarity();
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+    return new ClassicSimilarity(discountOverlaps);
   }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java
index df5ea9f1182..7bdb9f8e518 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/DFISimilarityFactory.java
@@ -39,8 +39,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link
- *       
org.apache.lucene.search.similarities.SimilarityBase#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
  * </ul>
  *
  * @lucene.experimental
@@ -59,9 +58,7 @@ public class DFISimilarityFactory extends SimilarityFactory {
 
   @Override
   public Similarity getSimilarity() {
-    DFISimilarity sim = new DFISimilarity(independenceMeasure);
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+    return new DFISimilarity(independenceMeasure, discountOverlaps);
   }
 
   private Independence parseIndependenceMeasure(String expr) {
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java
index 61b972f604b..63cca3194f5 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/DFRSimilarityFactory.java
@@ -86,7 +86,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * <p>Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link 
DFRSimilarity#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {@link Similarity#getDiscountOverlaps()}
  * </ul>
  *
  * @lucene.experimental
@@ -160,8 +160,6 @@ public class DFRSimilarityFactory extends SimilarityFactory 
{
 
   @Override
   public Similarity getSimilarity() {
-    DFRSimilarity sim = new DFRSimilarity(basicModel, afterEffect, 
normalization);
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+    return new DFRSimilarity(basicModel, afterEffect, normalization, 
discountOverlaps);
   }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java
index 6c387fe93de..b397b9c655a 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/IBSimilarityFactory.java
@@ -56,7 +56,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * <p>Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link 
IBSimilarity#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
  * </ul>
  *
  * @lucene.experimental
@@ -100,8 +100,6 @@ public class IBSimilarityFactory extends SimilarityFactory {
 
   @Override
   public Similarity getSimilarity() {
-    IBSimilarity sim = new IBSimilarity(distribution, lambda, normalization);
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+    return new IBSimilarity(distribution, lambda, normalization, 
discountOverlaps);
   }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java
index d23430d45ab..8792e5ff0d7 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/LMDirichletSimilarityFactory.java
@@ -17,6 +17,7 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.LMDirichletSimilarity;
+import org.apache.lucene.search.similarities.LMSimilarity;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.schema.SimilarityFactory;
@@ -33,7 +34,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * <p>Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link 
LMDirichletSimilarity#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
  * </ul>
  *
  * @lucene.experimental
@@ -51,9 +52,13 @@ public class LMDirichletSimilarityFactory extends 
SimilarityFactory {
 
   @Override
   public Similarity getSimilarity() {
-    LMDirichletSimilarity sim =
-        (mu != null) ? new LMDirichletSimilarity(mu) : new 
LMDirichletSimilarity();
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+
+    // Default μ is 2000 in Lucene. Unfortunately, there is no constant we can 
use
+    if (mu == null) {
+      mu = 2000f;
+    }
+
+    LMSimilarity.CollectionModel model = new 
LMSimilarity.DefaultCollectionModel();
+    return new LMDirichletSimilarity(model, discountOverlaps, mu);
   }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java
index 1f5549b769f..384dc5d9c37 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/LMJelinekMercerSimilarityFactory.java
@@ -17,6 +17,7 @@
 package org.apache.solr.search.similarities;
 
 import org.apache.lucene.search.similarities.LMJelinekMercerSimilarity;
+import org.apache.lucene.search.similarities.LMSimilarity;
 import org.apache.lucene.search.similarities.Similarity;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.schema.SimilarityFactory;
@@ -33,8 +34,7 @@ import org.apache.solr.schema.SimilarityFactory;
  * <p>Optional settings:
  *
  * <ul>
- *   <li>discountOverlaps (bool): Sets {@link
- *       LMJelinekMercerSimilarity#setDiscountOverlaps(boolean)}
+ *   <li>discountOverlaps (bool): Sets {link Similarity#getDiscountOverlaps()}
  * </ul>
  *
  * @lucene.experimental
@@ -52,8 +52,7 @@ public class LMJelinekMercerSimilarityFactory extends 
SimilarityFactory {
 
   @Override
   public Similarity getSimilarity() {
-    LMJelinekMercerSimilarity sim = new LMJelinekMercerSimilarity(lambda);
-    sim.setDiscountOverlaps(discountOverlaps);
-    return sim;
+    LMSimilarity.CollectionModel model = new 
LMSimilarity.DefaultCollectionModel();
+    return new LMJelinekMercerSimilarity(model, discountOverlaps, lambda);
   }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
 
b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
index 8dfc886dcc7..e312398bc48 100644
--- 
a/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/search/similarities/SweetSpotSimilarityFactory.java
@@ -104,33 +104,44 @@ import org.apache.solr.common.params.SolrParams;
  *     </code> for SVG diagrams showing how the each function behaves with 
various settings/inputs.
  */
 public class SweetSpotSimilarityFactory extends ClassicSimilarityFactory {
-  private SweetSpotSimilarity sim = null;
+
+  private Integer ln_min;
+  private Integer ln_max;
+  private Float ln_steep;
+
+  private Float hyper_min;
+  private Float hyper_max;
+  private Double hyper_base;
+  private Float hyper_offset;
+
+  private Float baseline_base;
+  private Float baseline_min;
 
   @Override
   public void init(SolrParams params) {
     super.init(params);
 
-    Integer ln_min = params.getInt("lengthNormMin");
-    Integer ln_max = params.getInt("lengthNormMax");
-    Float ln_steep = params.getFloat("lengthNormSteepness");
+    ln_min = params.getInt("lengthNormMin");
+    ln_max = params.getInt("lengthNormMax");
+    ln_steep = params.getFloat("lengthNormSteepness");
     if (!allOrNoneNull(ln_min, ln_max, ln_steep)) {
       throw new SolrException(
           SERVER_ERROR,
           "Overriding default lengthNorm settings requires all to be 
specified: lengthNormMin, lengthNormMax, lengthNormSteepness");
     }
 
-    Float hyper_min = params.getFloat("hyperbolicTfMin");
-    Float hyper_max = params.getFloat("hyperbolicTfMax");
-    Double hyper_base = params.getDouble("hyperbolicTfBase");
-    Float hyper_offset = params.getFloat("hyperbolicTfOffset");
+    hyper_min = params.getFloat("hyperbolicTfMin");
+    hyper_max = params.getFloat("hyperbolicTfMax");
+    hyper_base = params.getDouble("hyperbolicTfBase");
+    hyper_offset = params.getFloat("hyperbolicTfOffset");
     if (!allOrNoneNull(hyper_min, hyper_max, hyper_base, hyper_offset)) {
       throw new SolrException(
           SERVER_ERROR,
           "Overriding default hyperbolicTf settings requires all to be 
specified: hyperbolicTfMin, hyperbolicTfMax, hyperbolicTfBase, 
hyperbolicTfOffset");
     }
 
-    Float baseline_base = params.getFloat("baselineTfBase");
-    Float baseline_min = params.getFloat("baselineTfMin");
+    baseline_base = params.getFloat("baselineTfBase");
+    baseline_min = params.getFloat("baselineTfMin");
     if (!allOrNoneNull(baseline_min, baseline_base)) {
       throw new SolrException(
           SERVER_ERROR,
@@ -142,13 +153,19 @@ public class SweetSpotSimilarityFactory extends 
ClassicSimilarityFactory {
       throw new SolrException(
           SERVER_ERROR, "Can not mix hyperbolicTf settings with baselineTf 
settings");
     }
+  }
 
+  @Override
+  public Similarity getSimilarity() {
     // pick Similarity impl based on whether hyper tf settings are set
-    sim = (null != hyper_min) ? new HyperbolicSweetSpotSimilarity() : new 
SweetSpotSimilarity();
+    SweetSpotSimilarity sim =
+        (null != hyper_min)
+            ? new HyperbolicSweetSpotSimilarity(discountOverlaps)
+            : new SweetSpotSimilarity(discountOverlaps);
 
     if (null != ln_min) {
       // overlaps already handled by super factory
-      sim.setLengthNormFactors(ln_min, ln_max, ln_steep, 
this.discountOverlaps);
+      sim.setLengthNormFactors(ln_min, ln_max, ln_steep);
     }
 
     if (null != hyper_min) {
@@ -158,11 +175,7 @@ public class SweetSpotSimilarityFactory extends 
ClassicSimilarityFactory {
     if (null != baseline_min) {
       sim.setBaselineTfFactors(baseline_base, baseline_min);
     }
-  }
 
-  @Override
-  public Similarity getSimilarity() {
-    assert sim != null : "SweetSpotSimilarityFactory was not initialized";
     return sim;
   }
 
@@ -181,6 +194,11 @@ public class SweetSpotSimilarityFactory extends 
ClassicSimilarityFactory {
   }
 
   private static final class HyperbolicSweetSpotSimilarity extends 
SweetSpotSimilarity {
+
+    private HyperbolicSweetSpotSimilarity(boolean discountOverlaps) {
+      super(discountOverlaps);
+    }
+
     @Override
     public float tf(float freq) {
       return hyperbolicTf(freq);
diff --git a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml 
b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
index 29e62e3c88c..5095c0c01ac 100644
--- a/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
+++ b/solr/core/src/test-files/solr/collection1/conf/schema_codec.xml
@@ -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="Lucene99"/>
+  <fieldType name="string_standard" class="solr.StrField" 
postingsFormat="Lucene912"/>
 
   <fieldType name="string_disk" class="solr.StrField" />
 
diff --git a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java 
b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
index 54f7406635d..f5f084da8ab 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.util.Map;
 import java.util.Set;
 import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene99.Lucene99Codec.Mode;
+import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode;
 import org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat;
 import org.apache.lucene.codecs.perfield.PerFieldPostingsFormat;
 import org.apache.lucene.index.SegmentInfo;
diff --git a/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1
deleted file mode 100644
index 2b71b2f9ebf..00000000000
--- a/solr/licenses/lucene-analysis-common-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-51286aca019db66311f71496191b4bd7adaf3dcf
diff --git a/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1
new file mode 100644
index 00000000000..805ece8fb95
--- /dev/null
+++ b/solr/licenses/lucene-analysis-common-9.12.1.jar.sha1
@@ -0,0 +1 @@
+86836497e35c1ab33259d9864ceb280c0016075e
diff --git a/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1
deleted file mode 100644
index 95765d43eab..00000000000
--- a/solr/licenses/lucene-analysis-icu-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-028beadfa152c159d21d880461c06f895052bd33
diff --git a/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1
new file mode 100644
index 00000000000..d938191bbfd
--- /dev/null
+++ b/solr/licenses/lucene-analysis-icu-9.12.1.jar.sha1
@@ -0,0 +1 @@
+abaef4767ad64289e62abdd4606bf6ed2ddea0fd
diff --git a/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1
deleted file mode 100644
index d51f9c1b6ea..00000000000
--- a/solr/licenses/lucene-analysis-kuromoji-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-701c1366189c4410d3cb1f8607df2e50621bfd22
diff --git a/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1
new file mode 100644
index 00000000000..af4a809392a
--- /dev/null
+++ b/solr/licenses/lucene-analysis-kuromoji-9.12.1.jar.sha1
@@ -0,0 +1 @@
+635c41143b896f402589d29e33695dcfabae9cc5
diff --git a/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1
deleted file mode 100644
index 8421387ddb6..00000000000
--- a/solr/licenses/lucene-analysis-morfologik-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-20fe70fa74097c35c9aaaa5c0e19ca5f7ac93141
diff --git a/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1
new file mode 100644
index 00000000000..0df56116cac
--- /dev/null
+++ b/solr/licenses/lucene-analysis-morfologik-9.12.1.jar.sha1
@@ -0,0 +1 @@
+d8e4716dab6d829e7b37a8b185cbd242650aeb9e
diff --git a/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1
deleted file mode 100644
index 3cd3de6f22d..00000000000
--- a/solr/licenses/lucene-analysis-nori-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-46e8f4f3f2f540307fe7d9f500ddc56c1e74d400
diff --git a/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1
new file mode 100644
index 00000000000..2ebf1d07eed
--- /dev/null
+++ b/solr/licenses/lucene-analysis-nori-9.12.1.jar.sha1
@@ -0,0 +1 @@
+e265410a6a4d9cd23b2e9c73321e6bd307bc1422
diff --git a/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1
deleted file mode 100644
index 3d521c374c6..00000000000
--- a/solr/licenses/lucene-analysis-opennlp-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8acc70958b0549705c45587bf315b2884a8eb169
diff --git a/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1
new file mode 100644
index 00000000000..77cf5acafe1
--- /dev/null
+++ b/solr/licenses/lucene-analysis-opennlp-9.12.1.jar.sha1
@@ -0,0 +1 @@
+021d892f1946bc238c6e9a651f9446813b715c5a
diff --git a/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1
deleted file mode 100644
index 144a5724a1a..00000000000
--- a/solr/licenses/lucene-analysis-phonetic-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5d8eca81f0d1e5671bf1f1692225f7d8cc7977e8
diff --git a/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1
new file mode 100644
index 00000000000..09dd0aa365c
--- /dev/null
+++ b/solr/licenses/lucene-analysis-phonetic-9.12.1.jar.sha1
@@ -0,0 +1 @@
+3787b8edc0cfad21998abc6aeb9d2cbf152b4b26
diff --git a/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1
deleted file mode 100644
index 4cfb7e94652..00000000000
--- a/solr/licenses/lucene-analysis-smartcn-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e900ea081428c3fdc7ec7a48f9c392871304476e
diff --git a/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1
new file mode 100644
index 00000000000..eed0ea08e27
--- /dev/null
+++ b/solr/licenses/lucene-analysis-smartcn-9.12.1.jar.sha1
@@ -0,0 +1 @@
+e935f600bf153c46f5725198ca9352c32025f274
diff --git a/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1 
b/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1
deleted file mode 100644
index 59120fa4610..00000000000
--- a/solr/licenses/lucene-analysis-stempel-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-50f4d2400fa6264bf682028d8c7b6bbdd588b496
diff --git a/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1 
b/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1
new file mode 100644
index 00000000000..12e57532ee6
--- /dev/null
+++ b/solr/licenses/lucene-analysis-stempel-9.12.1.jar.sha1
@@ -0,0 +1 @@
+c4e1c94b1adbd1cb9dbdc0d3c2d2c33beabfc777
diff --git a/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1 
b/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1
deleted file mode 100644
index d8e756dd606..00000000000
--- a/solr/licenses/lucene-backward-codecs-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-948fda53ceeb0fa1b835af5376abec771b2c3fb1
diff --git a/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1 
b/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1
new file mode 100644
index 00000000000..c8871fa4179
--- /dev/null
+++ b/solr/licenses/lucene-backward-codecs-9.12.1.jar.sha1
@@ -0,0 +1 @@
+d0e79d06a0ed021663737e4df777ab7b80cd28c4
diff --git a/solr/licenses/lucene-classification-9.11.1.jar.sha1 
b/solr/licenses/lucene-classification-9.11.1.jar.sha1
deleted file mode 100644
index 3d17b3b3af8..00000000000
--- a/solr/licenses/lucene-classification-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8a157f57964e1b8b9106b8c70083387f5a212362
diff --git a/solr/licenses/lucene-classification-9.12.1.jar.sha1 
b/solr/licenses/lucene-classification-9.12.1.jar.sha1
new file mode 100644
index 00000000000..81a3850dc0d
--- /dev/null
+++ b/solr/licenses/lucene-classification-9.12.1.jar.sha1
@@ -0,0 +1 @@
+a64da0d06bedcf7a7a6ca5b13d0b49918717d576
diff --git a/solr/licenses/lucene-codecs-9.11.1.jar.sha1 
b/solr/licenses/lucene-codecs-9.11.1.jar.sha1
deleted file mode 100644
index 87712934448..00000000000
--- a/solr/licenses/lucene-codecs-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b1f1f273e1a2a956528dbf2abf4f7300b18648b2
diff --git a/solr/licenses/lucene-codecs-9.12.1.jar.sha1 
b/solr/licenses/lucene-codecs-9.12.1.jar.sha1
new file mode 100644
index 00000000000..e65e95728d0
--- /dev/null
+++ b/solr/licenses/lucene-codecs-9.12.1.jar.sha1
@@ -0,0 +1 @@
+cf88c401660f80fd7a3c0896c180581126880697
diff --git a/solr/licenses/lucene-core-9.11.1.jar.sha1 
b/solr/licenses/lucene-core-9.11.1.jar.sha1
deleted file mode 100644
index d6f1be77240..00000000000
--- a/solr/licenses/lucene-core-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8f52ba14b21774f41ce33cf5ca111cbdefeed7f9
diff --git a/solr/licenses/lucene-core-9.12.1.jar.sha1 
b/solr/licenses/lucene-core-9.12.1.jar.sha1
new file mode 100644
index 00000000000..2000314c74c
--- /dev/null
+++ b/solr/licenses/lucene-core-9.12.1.jar.sha1
@@ -0,0 +1 @@
+91447c90c1180122142773b5baddaf8547124794
diff --git a/solr/licenses/lucene-expressions-9.11.1.jar.sha1 
b/solr/licenses/lucene-expressions-9.11.1.jar.sha1
deleted file mode 100644
index cb9f8b66836..00000000000
--- a/solr/licenses/lucene-expressions-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e46fbc4fd325ca00ed5a7cacde7ffafa01d7973e
diff --git a/solr/licenses/lucene-expressions-9.12.1.jar.sha1 
b/solr/licenses/lucene-expressions-9.12.1.jar.sha1
new file mode 100644
index 00000000000..870d6a91d7e
--- /dev/null
+++ b/solr/licenses/lucene-expressions-9.12.1.jar.sha1
@@ -0,0 +1 @@
+667ee99f31c8e42eac70b0adcf8deb4232935430
diff --git a/solr/licenses/lucene-facet-9.12.1.jar.sha1 
b/solr/licenses/lucene-facet-9.12.1.jar.sha1
new file mode 100644
index 00000000000..469a8a45fac
--- /dev/null
+++ b/solr/licenses/lucene-facet-9.12.1.jar.sha1
@@ -0,0 +1 @@
+265df739cf97862931606395a10a0d0b97ff7f97
diff --git a/solr/licenses/lucene-grouping-9.11.1.jar.sha1 
b/solr/licenses/lucene-grouping-9.11.1.jar.sha1
deleted file mode 100644
index 8290e22d3c4..00000000000
--- a/solr/licenses/lucene-grouping-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0bdf9db0134523d2a41123dca1018f4c771c7b23
diff --git a/solr/licenses/lucene-grouping-9.12.1.jar.sha1 
b/solr/licenses/lucene-grouping-9.12.1.jar.sha1
new file mode 100644
index 00000000000..7fa34405470
--- /dev/null
+++ b/solr/licenses/lucene-grouping-9.12.1.jar.sha1
@@ -0,0 +1 @@
+e4bc3d0aa7eec4f41b4f350de0263a8d5625d2b3
diff --git a/solr/licenses/lucene-highlighter-9.11.1.jar.sha1 
b/solr/licenses/lucene-highlighter-9.11.1.jar.sha1
deleted file mode 100644
index 5fd7ac44ddc..00000000000
--- a/solr/licenses/lucene-highlighter-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e16cc9c531998a76eb5528147b5f07596f95fad8
diff --git a/solr/licenses/lucene-highlighter-9.12.1.jar.sha1 
b/solr/licenses/lucene-highlighter-9.12.1.jar.sha1
new file mode 100644
index 00000000000..ddd10ca6e1c
--- /dev/null
+++ b/solr/licenses/lucene-highlighter-9.12.1.jar.sha1
@@ -0,0 +1 @@
+2eeedfcec47dd65969f36e88931ed452291dd43e
diff --git a/solr/licenses/lucene-join-9.11.1.jar.sha1 
b/solr/licenses/lucene-join-9.11.1.jar.sha1
deleted file mode 100644
index db5c2e0ad13..00000000000
--- a/solr/licenses/lucene-join-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f7d63c04f3cc2ec8d7df73178db20de34cf60667
diff --git a/solr/licenses/lucene-join-9.12.1.jar.sha1 
b/solr/licenses/lucene-join-9.12.1.jar.sha1
new file mode 100644
index 00000000000..b03ee165abc
--- /dev/null
+++ b/solr/licenses/lucene-join-9.12.1.jar.sha1
@@ -0,0 +1 @@
+3c5e9ff2925a8373ae0d35c1d0a7b2465cebec9f
diff --git a/solr/licenses/lucene-memory-9.11.1.jar.sha1 
b/solr/licenses/lucene-memory-9.11.1.jar.sha1
deleted file mode 100644
index bdd68d82720..00000000000
--- a/solr/licenses/lucene-memory-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4221baad5c40849f641f0f5c1b8e2f2dfcf1e73a
diff --git a/solr/licenses/lucene-memory-9.12.1.jar.sha1 
b/solr/licenses/lucene-memory-9.12.1.jar.sha1
new file mode 100644
index 00000000000..e0541f0f417
--- /dev/null
+++ b/solr/licenses/lucene-memory-9.12.1.jar.sha1
@@ -0,0 +1 @@
+e80eecfb1dcc324140387c8357c81e12c2a01937
diff --git a/solr/licenses/lucene-misc-9.11.1.jar.sha1 
b/solr/licenses/lucene-misc-9.11.1.jar.sha1
deleted file mode 100644
index 53bc1cb906b..00000000000
--- a/solr/licenses/lucene-misc-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a3ecdb999c3d3435ead88771ce215834bd8be7b8
diff --git a/solr/licenses/lucene-misc-9.12.1.jar.sha1 
b/solr/licenses/lucene-misc-9.12.1.jar.sha1
new file mode 100644
index 00000000000..bed6c11b854
--- /dev/null
+++ b/solr/licenses/lucene-misc-9.12.1.jar.sha1
@@ -0,0 +1 @@
+4e65d01d1c23f3f49dc325d552701bbefafee7ee
diff --git a/solr/licenses/lucene-queries-9.11.1.jar.sha1 
b/solr/licenses/lucene-queries-9.11.1.jar.sha1
deleted file mode 100644
index d8e030fc1f2..00000000000
--- a/solr/licenses/lucene-queries-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-027fc885a0442a0442f426f7fea9743f6fcf3c43
diff --git a/solr/licenses/lucene-queries-9.12.1.jar.sha1 
b/solr/licenses/lucene-queries-9.12.1.jar.sha1
new file mode 100644
index 00000000000..1cda38477b3
--- /dev/null
+++ b/solr/licenses/lucene-queries-9.12.1.jar.sha1
@@ -0,0 +1 @@
+14f24315041b686683dba4bc679ca7dc6a505906
diff --git a/solr/licenses/lucene-queryparser-9.11.1.jar.sha1 
b/solr/licenses/lucene-queryparser-9.11.1.jar.sha1
deleted file mode 100644
index 1f69eb506fd..00000000000
--- a/solr/licenses/lucene-queryparser-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ad6e5b135e1e284d4462d717086ce13a3ce01b4a
diff --git a/solr/licenses/lucene-queryparser-9.12.1.jar.sha1 
b/solr/licenses/lucene-queryparser-9.12.1.jar.sha1
new file mode 100644
index 00000000000..9baf9838b20
--- /dev/null
+++ b/solr/licenses/lucene-queryparser-9.12.1.jar.sha1
@@ -0,0 +1 @@
+aa6df09a99f8881d843e9863aa1713dc9f3ed24f
diff --git a/solr/licenses/lucene-sandbox-9.11.1.jar.sha1 
b/solr/licenses/lucene-sandbox-9.11.1.jar.sha1
deleted file mode 100644
index 6613da2336a..00000000000
--- a/solr/licenses/lucene-sandbox-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9d6a88d9cb7f206c12d13c4fe48f8c7a973ebdb5
diff --git a/solr/licenses/lucene-sandbox-9.12.1.jar.sha1 
b/solr/licenses/lucene-sandbox-9.12.1.jar.sha1
new file mode 100644
index 00000000000..87836cb52c9
--- /dev/null
+++ b/solr/licenses/lucene-sandbox-9.12.1.jar.sha1
@@ -0,0 +1 @@
+1a66485629d60779f039fc26360f4374ef1496e7
diff --git a/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1 
b/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1
deleted file mode 100644
index ed1128ece9b..00000000000
--- a/solr/licenses/lucene-spatial-extras-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d3938d4f63a29a6e8396416ec6e6e835826e7734
diff --git a/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1 
b/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1
new file mode 100644
index 00000000000..3495009b5a5
--- /dev/null
+++ b/solr/licenses/lucene-spatial-extras-9.12.1.jar.sha1
@@ -0,0 +1 @@
+0a7379410eff21676472adc8ea76a57891ec83c2
diff --git a/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1 
b/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1
deleted file mode 100644
index f6dc1cf4979..00000000000
--- a/solr/licenses/lucene-spatial3d-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-d9c48cf29e8736e6ce6cd81c614367b10210523c
diff --git a/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1 
b/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1
new file mode 100644
index 00000000000..4dea89bd83e
--- /dev/null
+++ b/solr/licenses/lucene-spatial3d-9.12.1.jar.sha1
@@ -0,0 +1 @@
+d2fdea4edabb1f616f494999651c43abfd0aa124
diff --git a/solr/licenses/lucene-suggest-9.11.1.jar.sha1 
b/solr/licenses/lucene-suggest-9.11.1.jar.sha1
deleted file mode 100644
index 2d79215b57e..00000000000
--- a/solr/licenses/lucene-suggest-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9cceafd67d032d2a507e81f797e05eb284849987
diff --git a/solr/licenses/lucene-suggest-9.12.1.jar.sha1 
b/solr/licenses/lucene-suggest-9.12.1.jar.sha1
new file mode 100644
index 00000000000..7cceda02bf6
--- /dev/null
+++ b/solr/licenses/lucene-suggest-9.12.1.jar.sha1
@@ -0,0 +1 @@
+0660e0996ec7653fe0c13c608137e264645eecac
diff --git a/solr/licenses/lucene-test-framework-9.11.1.jar.sha1 
b/solr/licenses/lucene-test-framework-9.11.1.jar.sha1
deleted file mode 100644
index bce92787396..00000000000
--- a/solr/licenses/lucene-test-framework-9.11.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9a3c349131233d2b5c258dff0cac77627525c14a
diff --git a/solr/licenses/lucene-test-framework-9.12.1.jar.sha1 
b/solr/licenses/lucene-test-framework-9.12.1.jar.sha1
new file mode 100644
index 00000000000..f7a37882d52
--- /dev/null
+++ b/solr/licenses/lucene-test-framework-9.12.1.jar.sha1
@@ -0,0 +1 @@
+d348aac4eff0371888f45b2aaa9034922b96b466
diff --git 
a/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java
 
b/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java
index 13f9f78bcd5..f2b8867b1b8 100644
--- 
a/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java
+++ 
b/solr/modules/gcs-repository/src/java/org/apache/solr/gcs/GCSBackupRepository.java
@@ -344,8 +344,8 @@ public class GCSBackupRepository extends 
AbstractBackupRepository {
     final BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, 
blobName).build();
     try (IndexInput input =
         shouldVerifyChecksum
-            ? sourceDir.openChecksumInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)
-            : sourceDir.openInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)) {
+            ? sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE)
+            : sourceDir.openInput(sourceFileName, IOContext.READONCE)) {
       if (input.length() <= CodecUtil.footerLength()) {
         throw new CorruptIndexException("file is too small:" + input.length(), 
input);
       }
diff --git 
a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java
 
b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java
index 122dcc11918..29b6daffb55 100644
--- 
a/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java
+++ 
b/solr/modules/s3-repository/src/java/org/apache/solr/s3/S3BackupRepository.java
@@ -38,7 +38,6 @@ import org.apache.lucene.store.IndexOutput;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.StrUtils;
-import org.apache.solr.core.DirectoryFactory;
 import org.apache.solr.core.backup.repository.AbstractBackupRepository;
 import org.apache.solr.core.backup.repository.BackupRepository;
 import org.slf4j.Logger;
@@ -280,8 +279,8 @@ public class S3BackupRepository extends 
AbstractBackupRepository {
 
     try (IndexInput indexInput =
         shouldVerifyChecksum
-            ? sourceDir.openChecksumInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)
-            : sourceDir.openInput(sourceFileName, 
DirectoryFactory.IOCONTEXT_NO_CACHE)) {
+            ? sourceDir.openChecksumInput(sourceFileName, IOContext.READONCE)
+            : sourceDir.openInput(sourceFileName, IOContext.READONCE)) {
       if (indexInput.length() <= CodecUtil.footerLength()) {
         throw new CorruptIndexException("file is too small:" + 
indexInput.length(), indexInput);
       }
diff --git 
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
 
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
index 71617a1f028..498b0788ab0 100644
--- 
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
+++ 
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
@@ -33,7 +33,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.NIOFSDirectory;
 import org.apache.lucene.store.OutputStreamIndexOutput;
 import org.apache.solr.cloud.api.collections.AbstractBackupRepositoryTest;
 import org.apache.solr.common.util.NamedList;
@@ -187,8 +186,9 @@ public class S3BackupRepositoryTest extends 
AbstractBackupRepositoryTest {
         CodecUtil.writeFooter(indexOutput);
       }
 
-      Directory sourceDir = new NIOFSDirectory(tmp.toPath());
-      repo.copyIndexFileFrom(sourceDir, "from-file", new 
URI("s3://to-folder"), "to-file");
+      try (Directory sourceDir = newFSDirectory(tmp.toPath())) {
+        repo.copyIndexFileFrom(sourceDir, "from-file", new 
URI("s3://to-folder"), "to-file");
+      }
 
       // Sanity check: we do have different files
       File actualSource = new File(tmp, "from-file");
@@ -208,12 +208,13 @@ public class S3BackupRepositoryTest extends 
AbstractBackupRepositoryTest {
 
       // Local folder for destination
       File tmp = temporaryFolder.newFolder();
-      Directory destDir = new NIOFSDirectory(tmp.toPath());
 
       // Directly create a file on S3
       pushObject("from-file", content);
 
-      repo.copyIndexFileTo(new URI("s3:///"), "from-file", destDir, "to-file");
+      try (Directory destDir = newFSDirectory(tmp.toPath())) {
+        repo.copyIndexFileTo(new URI("s3:///"), "from-file", destDir, 
"to-file");
+      }
 
       // Sanity check: we do have different files
       File actualSource = pullObject("from-file");
diff --git a/solr/server/solr/configsets/_default/conf/solrconfig.xml 
b/solr/server/solr/configsets/_default/conf/solrconfig.xml
index 1df8df43c37..9bef9240114 100644
--- a/solr/server/solr/configsets/_default/conf/solrconfig.xml
+++ b/solr/server/solr/configsets/_default/conf/solrconfig.xml
@@ -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.11</luceneMatchVersion>
+  <luceneMatchVersion>9.12</luceneMatchVersion>
 
   <!-- Data Directory
 
diff --git 
a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml 
b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
index 17d07d3c23c..cc595fca93c 100644
--- 
a/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
+++ 
b/solr/server/solr/configsets/sample_techproducts_configs/conf/solrconfig.xml
@@ -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.11</luceneMatchVersion>
+  <luceneMatchVersion>9.12</luceneMatchVersion>
 
   <!-- Data Directory
 
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
index 34b0d4a2b77..56db52cc9cb 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/api/collections/AbstractBackupRepositoryTest.java
@@ -40,7 +40,6 @@ import org.apache.lucene.store.FilterDirectory;
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
-import org.apache.lucene.store.NIOFSDirectory;
 import org.apache.lucene.store.OutputStreamIndexOutput;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.params.CoreAdminParams;
@@ -337,7 +336,7 @@ public abstract class AbstractBackupRepositoryTest extends 
SolrTestCaseJ4 {
       SolrResourceLoader resourceLoader)
       throws IOException, URISyntaxException {
     try (BackupRepository repo = repoFactory.newInstance(resourceLoader, 
repoName);
-        Directory directory = new NIOFSDirectory(dir.toPath())) {
+        Directory directory = newFSDirectory(dir.toPath())) {
       URI destinationDir = repo.resolve(getBaseUri(), "destination-folder");
       repo.copyIndexFileFrom(directory, fileName, destinationDir, fileName);
     }
@@ -352,8 +351,8 @@ public abstract class AbstractBackupRepositoryTest extends 
SolrTestCaseJ4 {
       SolrResourceLoader resourceLoader)
       throws IOException {
     try (BackupRepository repo = repoFactory.newInstance(resourceLoader, 
repoName);
-        Directory sourceDirectory = new NIOFSDirectory(sourceDir.toPath());
-        Directory destinationDirectory = new 
NIOFSDirectory(destinationDir.toPath())) {
+        Directory sourceDirectory = newFSDirectory(sourceDir.toPath());
+        Directory destinationDirectory = 
newFSDirectory(destinationDir.toPath())) {
       repo.copyIndexFileFrom(sourceDirectory, fileName, destinationDirectory, 
fileName);
     }
   }
diff --git a/versions.lock b/versions.lock
index b9780503c73..6505f3c8bb7 100644
--- a/versions.lock
+++ b/versions.lock
@@ -252,32 +252,33 @@ org.apache.logging.log4j:log4j-core:2.21.0 (5 
constraints: 5f510091)
 org.apache.logging.log4j:log4j-layout-template-json:2.21.0 (1 constraints: 
3705363b)
 org.apache.logging.log4j:log4j-slf4j2-impl:2.21.0 (1 constraints: 3705363b)
 org.apache.logging.log4j:log4j-web:2.21.0 (1 constraints: 3705363b)
-org.apache.lucene:lucene-analysis-common:9.11.1 (10 constraints: aaa06d27)
-org.apache.lucene:lucene-analysis-icu:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-kuromoji:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-morfologik:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-nori:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-opennlp:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-phonetic:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-smartcn:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-analysis-stempel:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-backward-codecs:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-classification:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-codecs:9.11.1 (3 constraints: 2c26e99d)
-org.apache.lucene:lucene-core:9.11.1 (26 constraints: c194eb01)
-org.apache.lucene:lucene-expressions:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-grouping:9.11.1 (2 constraints: 42164308)
-org.apache.lucene:lucene-highlighter:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-join:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-memory:9.11.1 (1 constraints: c80f6e93)
-org.apache.lucene:lucene-misc:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-queries:9.11.1 (6 constraints: ce52d7fa)
-org.apache.lucene:lucene-queryparser:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-sandbox:9.11.1 (1 constraints: fc0f1b97)
-org.apache.lucene:lucene-spatial-extras:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-spatial3d:9.11.1 (1 constraints: eb1099ca)
-org.apache.lucene:lucene-suggest:9.11.1 (1 constraints: 3e055d3b)
-org.apache.lucene:lucene-test-framework:9.11.1 (1 constraints: 3e055d3b)
+org.apache.lucene:lucene-analysis-common:9.12.1 (10 constraints: b4a03230)
+org.apache.lucene:lucene-analysis-icu:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-kuromoji:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-morfologik:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-nori:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-opennlp:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-phonetic:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-smartcn:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-analysis-stempel:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-backward-codecs:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-classification:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-codecs:9.12.1 (3 constraints: 2f26829e)
+org.apache.lucene:lucene-core:9.12.1 (27 constraints: 17a2bff5)
+org.apache.lucene:lucene-expressions:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-facet:9.12.1 (1 constraints: 290e204e)
+org.apache.lucene:lucene-grouping:9.12.1 (2 constraints: 44167a08)
+org.apache.lucene:lucene-highlighter:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-join:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-memory:9.12.1 (1 constraints: c90f7193)
+org.apache.lucene:lucene-misc:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-queries:9.12.1 (6 constraints: d45284fd)
+org.apache.lucene:lucene-queryparser:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-sandbox:9.12.1 (1 constraints: fd0f1e97)
+org.apache.lucene:lucene-spatial-extras:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-spatial3d:9.12.1 (1 constraints: ec109cca)
+org.apache.lucene:lucene-suggest:9.12.1 (1 constraints: 3f05603b)
+org.apache.lucene:lucene-test-framework:9.12.1 (1 constraints: 3f05603b)
 org.apache.opennlp:opennlp-tools:1.9.4 (2 constraints: fc1dce6d)
 org.apache.pdfbox:fontbox:2.0.26 (1 constraints: 180b72d8)
 org.apache.pdfbox:jbig2-imageio:3.0.4 (1 constraints: 5e0cef01)
diff --git a/versions.props b/versions.props
index 0be5c899dbf..156355f1a2b 100644
--- a/versions.props
+++ b/versions.props
@@ -51,7 +51,7 @@ org.apache.httpcomponents:httpmime=4.5.14
 org.apache.kafka:*=3.7.1
 org.apache.kerby:*=1.0.1
 org.apache.logging.log4j:*=2.21.0
-org.apache.lucene:*=9.11.1
+org.apache.lucene:*=9.12.1
 org.apache.tika:*=1.28.5
 org.apache.tomcat:annotations-api=6.0.53
 org.apache.zookeeper:*=3.9.2

Reply via email to