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

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


The following commit(s) were added to refs/heads/main by this push:
     new f08f90999d2 SOLR-18376: remove ScalarQuantizedDenseVectorField 
compress and confidenceInterval (#4756)
f08f90999d2 is described below

commit f08f90999d21fb3131c71dcf2fdcd8ab9715f9ef
Author: Serhiy Bzhezytskyy <[email protected]>
AuthorDate: Mon Aug 24 20:39:23 2026 +0300

    SOLR-18376: remove ScalarQuantizedDenseVectorField compress and 
confidenceInterval (#4756)
---
 ...scalarquantized-compress-confidenceinterval.yml |  8 ++++
 .../schema/ScalarQuantizedDenseVectorField.java    | 55 ++--------------------
 .../ScalarQuantizedDenseVectorFieldTest.java       | 19 ++++----
 3 files changed, 22 insertions(+), 60 deletions(-)

diff --git 
a/changelog/unreleased/SOLR-18376-remove-scalarquantized-compress-confidenceinterval.yml
 
b/changelog/unreleased/SOLR-18376-remove-scalarquantized-compress-confidenceinterval.yml
new file mode 100644
index 00000000000..ffd10e67b13
--- /dev/null
+++ 
b/changelog/unreleased/SOLR-18376-remove-scalarquantized-compress-confidenceinterval.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Remove the deprecated ScalarQuantizedDenseVectorField compress and 
confidenceInterval fields and their accessors useCompression and 
getConfidenceInterval, since Solr 10.1 no longer used by the underlying Lucene 
codec; the compress, confidenceInterval and dynamicConfidenceInterval schema 
params are still accepted and ignored with a deprecation warning, so an 
existing schema that sets them keeps loading. The public four-argument 
constructor loses its two corresponding parameters and [...]
+type: removed
+authors:
+  - name: Serhiy Bzhezytskyy
+links:
+  - name: SOLR-18376
+    url: https://issues.apache.org/jira/browse/SOLR-18376
diff --git 
a/solr/core/src/java/org/apache/solr/schema/ScalarQuantizedDenseVectorField.java
 
b/solr/core/src/java/org/apache/solr/schema/ScalarQuantizedDenseVectorField.java
index 26a33be48a2..66f0387505d 100644
--- 
a/solr/core/src/java/org/apache/solr/schema/ScalarQuantizedDenseVectorField.java
+++ 
b/solr/core/src/java/org/apache/solr/schema/ScalarQuantizedDenseVectorField.java
@@ -18,7 +18,6 @@ package org.apache.solr.schema;
 
 import static java.util.Optional.ofNullable;
 
-import com.google.common.annotations.VisibleForTesting;
 import java.util.Map;
 import org.apache.lucene.codecs.KnnVectorsFormat;
 import 
org.apache.lucene.codecs.lucene104.Lucene104HnswScalarQuantizedVectorsFormat;
@@ -36,7 +35,6 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
       "compress"; // can only be enabled when bits = 4 per Lucene codec spec
 
   static final int DEFAULT_BITS = 7; // use signed byte as default when 
unspecified
-  static final Float DEFAULT_CONFIDENCE_INTERVAL = null; // use dimension 
scaled confidence interval
 
   /**
    * Number of bits to use for storage Must be 4 (half-byte) or 7 
(signed-byte) per Lucene codec
@@ -44,24 +42,6 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
    */
   private int bits;
 
-  /**
-   * Confidence interval to use for scalar quantization Default is calculated 
as
-   * `1-1/(vector_dimensions + 1)`
-   *
-   * @deprecated Since Solr 10.1. No longer used by the underlying Lucene 
codec.
-   */
-  @Deprecated(since = "10.1")
-  private Float confidenceInterval;
-
-  /**
-   * When enabled, in conjunction with 4 bit size, will pair values into 
single bytes for 50%
-   * reduction in memory usage (comes at the cost of some decode speed penalty)
-   *
-   * @deprecated Since Solr 10.1. No longer used by the underlying Lucene 
codec.
-   */
-  @Deprecated(since = "10.1")
-  private boolean compress;
-
   public ScalarQuantizedDenseVectorField() {
     super();
   }
@@ -70,13 +50,9 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
       int dimension,
       VectorSimilarityFunction similarityFunction,
       VectorEncoding vectorEncoding,
-      int bits,
-      Float confidenceInterval,
-      boolean compress) {
+      int bits) {
     super(dimension, similarityFunction, vectorEncoding);
     this.bits = bits;
-    this.confidenceInterval = confidenceInterval;
-    this.compress = compress;
   }
 
   @Override
@@ -84,11 +60,12 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
     this.bits = 
ofNullable(args.remove(BITS_PARAM)).map(Integer::parseInt).orElse(DEFAULT_BITS);
 
     // These params ("compress", "confidenceInterval", 
"dynamicConfidenceInterval") are deprecated
-    // since Solr 10.1. Lucene 10.4's scalar-quantized vector format no longer 
consumes them
-    // directly. They are parsed for backward compatibility but are no-ops 
going forward.
+    // since Solr 10.1: Lucene's scalar-quantized vector format no longer 
consumes them, and as of
+    // 11.0 nothing here retains their values either. They are still consumed 
from the args - and
+    // only warned about - so that an existing schema setting them keeps 
loading instead of failing
+    // FieldType.setArgs' "invalid arguments" check.
     String compressStr = args.remove(COMPRESS_PARAM);
     if (compressStr != null) {
-      this.compress = Boolean.parseBoolean(compressStr);
       DeprecationLog.log(
           COMPRESS_PARAM,
           "The '"
@@ -99,20 +76,16 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
 
     String confidenceIntervalStr = args.remove(CONFIDENCE_INTERVAL_PARAM);
     if (confidenceIntervalStr != null) {
-      this.confidenceInterval = Float.parseFloat(confidenceIntervalStr);
       DeprecationLog.log(
           CONFIDENCE_INTERVAL_PARAM,
           "The '"
               + CONFIDENCE_INTERVAL_PARAM
               + "' parameter for ScalarQuantizedDenseVectorField is deprecated 
since Solr 10.1"
               + " and will be ignored. Please remove it from your schema.");
-    } else {
-      this.confidenceInterval = DEFAULT_CONFIDENCE_INTERVAL;
     }
 
     String dynamicConfidenceIntervalStr = 
args.remove(DYNAMIC_CONFIDENCE_INTERVAL_PARAM);
     if (Boolean.parseBoolean(dynamicConfidenceIntervalStr)) {
-      this.confidenceInterval = 0f;
       DeprecationLog.log(
           DYNAMIC_CONFIDENCE_INTERVAL_PARAM,
           "The '"
@@ -156,22 +129,4 @@ public class ScalarQuantizedDenseVectorField extends 
DenseVectorField {
   public int getBits() {
     return bits;
   }
-
-  /**
-   * @deprecated Since Solr 10.1. No longer used by the underlying Lucene 
codec.
-   */
-  @Deprecated(since = "10.1")
-  @VisibleForTesting
-  boolean useCompression() {
-    return compress;
-  }
-
-  /**
-   * @deprecated Since Solr 10.1. No longer used by the underlying Lucene 
codec.
-   */
-  @Deprecated(since = "10.1")
-  @VisibleForTesting
-  Float getConfidenceInterval() {
-    return confidenceInterval;
-  }
 }
diff --git 
a/solr/core/src/test/org/apache/solr/schema/ScalarQuantizedDenseVectorFieldTest.java
 
b/solr/core/src/test/org/apache/solr/schema/ScalarQuantizedDenseVectorFieldTest.java
index 94ebc63003b..cb1f24b88d5 100644
--- 
a/solr/core/src/test/org/apache/solr/schema/ScalarQuantizedDenseVectorFieldTest.java
+++ 
b/solr/core/src/test/org/apache/solr/schema/ScalarQuantizedDenseVectorFieldTest.java
@@ -47,10 +47,6 @@ public class ScalarQuantizedDenseVectorFieldTest extends 
AbstractBadConfigTestBa
       assertThat(defaultVectorType.getDimension(), is(4));
       assertThat(defaultVectorType.getKnnAlgorithm(), is("hnsw"));
       assertThat(defaultVectorType.getBits(), 
is(ScalarQuantizedDenseVectorField.DEFAULT_BITS));
-      assertThat(
-          defaultVectorType.getConfidenceInterval(),
-          is(ScalarQuantizedDenseVectorField.DEFAULT_CONFIDENCE_INTERVAL));
-      assertThat(defaultVectorType.useCompression(), is(false));
     } finally {
       deleteCore();
     }
@@ -75,7 +71,7 @@ public class ScalarQuantizedDenseVectorFieldTest extends 
AbstractBadConfigTestBa
   }
 
   @Test
-  public void fieldDefinition_compressed_shouldLoadSchemaField() throws 
Exception {
+  public void fieldDefinition_deprecatedCompress_shouldStillLoadSchemaField() 
throws Exception {
     try {
       initCore("solrconfig_codec.xml", "schema-densevector-quantized.xml");
 
@@ -87,14 +83,14 @@ public class ScalarQuantizedDenseVectorFieldTest extends 
AbstractBadConfigTestBa
       ScalarQuantizedDenseVectorField vectorType =
           (ScalarQuantizedDenseVectorField) vectorField.getType();
       assertThat(vectorType.getBits(), is(4));
-      assertThat(vectorType.useCompression(), is(true));
     } finally {
       deleteCore();
     }
   }
 
   @Test
-  public void fieldDefinition_customConfidenceInterval_shouldLoadSchemaField() 
throws Exception {
+  public void 
fieldDefinition_deprecatedConfidenceInterval_shouldStillLoadSchemaField()
+      throws Exception {
     try {
       initCore("solrconfig_codec.xml", "schema-densevector-quantized.xml");
 
@@ -105,14 +101,16 @@ public class ScalarQuantizedDenseVectorFieldTest extends 
AbstractBadConfigTestBa
 
       ScalarQuantizedDenseVectorField vectorType =
           (ScalarQuantizedDenseVectorField) vectorField.getType();
-      assertThat(vectorType.getConfidenceInterval(), is(0.91F));
+      assertThat(vectorType.getDimension(), is(4));
+      assertThat(vectorType.getBits(), 
is(ScalarQuantizedDenseVectorField.DEFAULT_BITS));
     } finally {
       deleteCore();
     }
   }
 
   @Test
-  public void 
fieldDefinition_dynamicConfidenceInterval_shouldLoadSchemaField() throws 
Exception {
+  public void 
fieldDefinition_deprecatedDynamicConfidenceInterval_shouldStillLoadSchemaField()
+      throws Exception {
     try {
       initCore("solrconfig_codec.xml", "schema-densevector-quantized.xml");
 
@@ -123,7 +121,8 @@ public class ScalarQuantizedDenseVectorFieldTest extends 
AbstractBadConfigTestBa
 
       ScalarQuantizedDenseVectorField vectorType =
           (ScalarQuantizedDenseVectorField) vectorField.getType();
-      assertThat(vectorType.getConfidenceInterval(), is(0f));
+      assertThat(vectorType.getDimension(), is(4));
+      assertThat(vectorType.getBits(), 
is(ScalarQuantizedDenseVectorField.DEFAULT_BITS));
     } finally {
       deleteCore();
     }

Reply via email to