This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git
The following commit(s) were added to refs/heads/master by this push:
new 1bdd662d59 [core] Rename VectorSearchGlobalIndexResult to
ScoredGlobalIndexResult
1bdd662d59 is described below
commit 1bdd662d59af91d20dbbba7f84f427300247045c
Author: JingsongLi <[email protected]>
AuthorDate: Tue Jan 27 11:44:45 2026 +0800
[core] Rename VectorSearchGlobalIndexResult to ScoredGlobalIndexResult
---
.../globalindex/GlobalIndexResultSerializer.java | 9 ++++----
...dexResult.java => ScoredGlobalIndexResult.java} | 21 ++++++++---------
.../globalindex/GlobalIndexSerDeUtilsTest.java | 20 ++++++++--------
.../paimon/globalindex/DataEvolutionBatchScan.java | 4 ++--
...sult.java => FaissScoredGlobalIndexResult.java} | 6 ++---
.../faiss/index/FaissVectorGlobalIndexReader.java | 2 +-
.../faiss/index/FaissVectorGlobalIndexTest.java | 27 ++++++++--------------
...ult.java => LuceneScoredGlobalIndexResult.java} | 8 +++----
.../index/LuceneVectorGlobalIndexReader.java | 2 +-
.../lucene/index/LuceneVectorGlobalIndexTest.java | 13 ++++-------
10 files changed, 48 insertions(+), 64 deletions(-)
diff --git
a/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexResultSerializer.java
b/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexResultSerializer.java
index 3fc1297f3e..cf3fe6fb61 100644
---
a/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexResultSerializer.java
+++
b/paimon-common/src/main/java/org/apache/paimon/globalindex/GlobalIndexResultSerializer.java
@@ -66,11 +66,10 @@ public class GlobalIndexResultSerializer implements
Serializer<GlobalIndexResult
dataOutput.writeInt(bytes.length);
dataOutput.write(bytes);
- if (globalIndexResult instanceof VectorSearchGlobalIndexResult) {
- VectorSearchGlobalIndexResult vectorSearchGlobalIndexResult =
- (VectorSearchGlobalIndexResult) globalIndexResult;
+ if (globalIndexResult instanceof ScoredGlobalIndexResult) {
+ ScoredGlobalIndexResult scored = (ScoredGlobalIndexResult)
globalIndexResult;
dataOutput.writeInt(roaringNavigableMap64.getIntCardinality());
- ScoreGetter scoreGetter =
vectorSearchGlobalIndexResult.scoreGetter();
+ ScoreGetter scoreGetter = scored.scoreGetter();
for (Long rowId : roaringNavigableMap64) {
dataOutput.writeFloat(scoreGetter.score(rowId));
}
@@ -115,6 +114,6 @@ public class GlobalIndexResultSerializer implements
Serializer<GlobalIndexResult
scoreMap.put(rowId, scores[i++]);
}
- return VectorSearchGlobalIndexResult.create(() ->
roaringNavigableMap64, scoreMap::get);
+ return ScoredGlobalIndexResult.create(() -> roaringNavigableMap64,
scoreMap::get);
}
}
diff --git
a/paimon-common/src/main/java/org/apache/paimon/globalindex/VectorSearchGlobalIndexResult.java
b/paimon-common/src/main/java/org/apache/paimon/globalindex/ScoredGlobalIndexResult.java
similarity index 80%
rename from
paimon-common/src/main/java/org/apache/paimon/globalindex/VectorSearchGlobalIndexResult.java
rename to
paimon-common/src/main/java/org/apache/paimon/globalindex/ScoredGlobalIndexResult.java
index e0fa977663..6334343710 100644
---
a/paimon-common/src/main/java/org/apache/paimon/globalindex/VectorSearchGlobalIndexResult.java
+++
b/paimon-common/src/main/java/org/apache/paimon/globalindex/ScoredGlobalIndexResult.java
@@ -23,8 +23,8 @@ import org.apache.paimon.utils.RoaringNavigableMap64;
import java.util.function.Supplier;
-/** Vector search global index result for vector index. */
-public interface VectorSearchGlobalIndexResult extends GlobalIndexResult {
+/** Vector search global index result for scored index. */
+public interface ScoredGlobalIndexResult extends GlobalIndexResult {
ScoreGetter scoreGetter();
@@ -32,7 +32,7 @@ public interface VectorSearchGlobalIndexResult extends
GlobalIndexResult {
throw new UnsupportedOperationException("Please realize this by
specified global index");
}
- default VectorSearchGlobalIndexResult offset(long offset) {
+ default ScoredGlobalIndexResult offset(long offset) {
if (offset == 0) {
return this;
}
@@ -45,23 +45,22 @@ public interface VectorSearchGlobalIndexResult extends
GlobalIndexResult {
}
return create(
- () -> roaringNavigableMap64Offset,
- (ScoreGetter) rowId -> thisScoreGetter.score(rowId - offset));
+ () -> roaringNavigableMap64Offset, rowId ->
thisScoreGetter.score(rowId - offset));
}
@Override
default GlobalIndexResult or(GlobalIndexResult other) {
- if (!(other instanceof VectorSearchGlobalIndexResult)) {
+ if (!(other instanceof ScoredGlobalIndexResult)) {
return GlobalIndexResult.super.or(other);
}
RoaringNavigableMap64 thisRowIds = results();
ScoreGetter thisScoreGetter = scoreGetter();
RoaringNavigableMap64 otherRowIds = other.results();
- ScoreGetter otherScoreGetter = ((VectorSearchGlobalIndexResult)
other).scoreGetter();
+ ScoreGetter otherScoreGetter = ((ScoredGlobalIndexResult)
other).scoreGetter();
final RoaringNavigableMap64 resultOr =
RoaringNavigableMap64.or(thisRowIds, otherRowIds);
- return new VectorSearchGlobalIndexResult() {
+ return new ScoredGlobalIndexResult() {
@Override
public ScoreGetter scoreGetter() {
return rowId -> {
@@ -79,11 +78,11 @@ public interface VectorSearchGlobalIndexResult extends
GlobalIndexResult {
};
}
- /** Returns a new {@link VectorSearchGlobalIndexResult} from supplier. */
- static VectorSearchGlobalIndexResult create(
+ /** Returns a new {@link ScoredGlobalIndexResult} from supplier. */
+ static ScoredGlobalIndexResult create(
Supplier<RoaringNavigableMap64> supplier, ScoreGetter scoreGetter)
{
LazyField<RoaringNavigableMap64> lazyField = new LazyField<>(supplier);
- return new VectorSearchGlobalIndexResult() {
+ return new ScoredGlobalIndexResult() {
@Override
public ScoreGetter scoreGetter() {
return scoreGetter;
diff --git
a/paimon-common/src/test/java/org/apache/paimon/globalindex/GlobalIndexSerDeUtilsTest.java
b/paimon-common/src/test/java/org/apache/paimon/globalindex/GlobalIndexSerDeUtilsTest.java
index 342612a16e..2fec1e2410 100644
---
a/paimon-common/src/test/java/org/apache/paimon/globalindex/GlobalIndexSerDeUtilsTest.java
+++
b/paimon-common/src/test/java/org/apache/paimon/globalindex/GlobalIndexSerDeUtilsTest.java
@@ -41,7 +41,7 @@ public class GlobalIndexSerDeUtilsTest {
byte[] serialized = serialize(original);
GlobalIndexResult deserialized = deserialize(serialized);
-
assertThat(deserialized).isNotInstanceOf(VectorSearchGlobalIndexResult.class);
+
assertThat(deserialized).isNotInstanceOf(ScoredGlobalIndexResult.class);
assertThat(deserialized.results()).isEqualTo(bitmap);
}
@@ -52,7 +52,7 @@ public class GlobalIndexSerDeUtilsTest {
byte[] serialized = serialize(original);
GlobalIndexResult deserialized = deserialize(serialized);
-
assertThat(deserialized).isNotInstanceOf(VectorSearchGlobalIndexResult.class);
+
assertThat(deserialized).isNotInstanceOf(ScoredGlobalIndexResult.class);
assertThat(deserialized.results().isEmpty()).isTrue();
}
@@ -65,16 +65,16 @@ public class GlobalIndexSerDeUtilsTest {
scoreMap.put(10L, 0.7f);
scoreMap.put(100L, 0.6f);
- VectorSearchGlobalIndexResult original =
- VectorSearchGlobalIndexResult.create(() -> bitmap,
scoreMap::get);
+ ScoredGlobalIndexResult original =
+ ScoredGlobalIndexResult.create(() -> bitmap, scoreMap::get);
byte[] serialized = serialize(original);
GlobalIndexResult deserialized = deserialize(serialized);
-
assertThat(deserialized).isInstanceOf(VectorSearchGlobalIndexResult.class);
+ assertThat(deserialized).isInstanceOf(ScoredGlobalIndexResult.class);
assertThat(deserialized.results()).isEqualTo(bitmap);
- VectorSearchGlobalIndexResult topkResult =
(VectorSearchGlobalIndexResult) deserialized;
+ ScoredGlobalIndexResult topkResult = (ScoredGlobalIndexResult)
deserialized;
ScoreGetter scoreGetter = topkResult.scoreGetter();
assertThat(scoreGetter.score(1L)).isEqualTo(0.9f);
assertThat(scoreGetter.score(5L)).isEqualTo(0.8f);
@@ -92,16 +92,16 @@ public class GlobalIndexSerDeUtilsTest {
scoreMap.put(Integer.MAX_VALUE + 100L, 0.3f);
scoreMap.put(Long.MAX_VALUE - 1, 0.1f);
- VectorSearchGlobalIndexResult original =
- VectorSearchGlobalIndexResult.create(() -> bitmap,
scoreMap::get);
+ ScoredGlobalIndexResult original =
+ ScoredGlobalIndexResult.create(() -> bitmap, scoreMap::get);
byte[] serialized = serialize(original);
GlobalIndexResult deserialized = deserialize(serialized);
-
assertThat(deserialized).isInstanceOf(VectorSearchGlobalIndexResult.class);
+ assertThat(deserialized).isInstanceOf(ScoredGlobalIndexResult.class);
assertThat(deserialized.results()).isEqualTo(bitmap);
- VectorSearchGlobalIndexResult topkResult =
(VectorSearchGlobalIndexResult) deserialized;
+ ScoredGlobalIndexResult topkResult = (ScoredGlobalIndexResult)
deserialized;
ScoreGetter scoreGetter = topkResult.scoreGetter();
assertThat(scoreGetter.score(Integer.MAX_VALUE + 1L)).isEqualTo(0.5f);
assertThat(scoreGetter.score(Integer.MAX_VALUE +
100L)).isEqualTo(0.3f);
diff --git
a/paimon-core/src/main/java/org/apache/paimon/globalindex/DataEvolutionBatchScan.java
b/paimon-core/src/main/java/org/apache/paimon/globalindex/DataEvolutionBatchScan.java
index b101229b97..cbb7582893 100644
---
a/paimon-core/src/main/java/org/apache/paimon/globalindex/DataEvolutionBatchScan.java
+++
b/paimon-core/src/main/java/org/apache/paimon/globalindex/DataEvolutionBatchScan.java
@@ -228,8 +228,8 @@ public class DataEvolutionBatchScan implements
DataTableScan {
if (indexResult.isPresent()) {
GlobalIndexResult result = indexResult.get();
rowRanges = result.results().toRangeList();
- if (result instanceof VectorSearchGlobalIndexResult) {
- scoreGetter = ((VectorSearchGlobalIndexResult)
result).scoreGetter();
+ if (result instanceof ScoredGlobalIndexResult) {
+ scoreGetter = ((ScoredGlobalIndexResult)
result).scoreGetter();
}
}
}
diff --git
a/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorSearchGlobalIndexResult.java
b/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissScoredGlobalIndexResult.java
similarity index 87%
rename from
paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorSearchGlobalIndexResult.java
rename to
paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissScoredGlobalIndexResult.java
index 68de17ec6e..4dbadad7ae 100644
---
a/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorSearchGlobalIndexResult.java
+++
b/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissScoredGlobalIndexResult.java
@@ -19,18 +19,18 @@
package org.apache.paimon.faiss.index;
import org.apache.paimon.globalindex.ScoreGetter;
-import org.apache.paimon.globalindex.VectorSearchGlobalIndexResult;
+import org.apache.paimon.globalindex.ScoredGlobalIndexResult;
import org.apache.paimon.utils.RoaringNavigableMap64;
import java.util.HashMap;
/** Vector search global index result for FAISS vector index. */
-public class FaissVectorSearchGlobalIndexResult implements
VectorSearchGlobalIndexResult {
+public class FaissScoredGlobalIndexResult implements ScoredGlobalIndexResult {
private final HashMap<Long, Float> id2scores;
private final RoaringNavigableMap64 results;
- public FaissVectorSearchGlobalIndexResult(
+ public FaissScoredGlobalIndexResult(
RoaringNavigableMap64 results, HashMap<Long, Float> id2scores) {
this.id2scores = id2scores;
this.results = results;
diff --git
a/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexReader.java
b/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexReader.java
index f33bce9cd1..1abb527cef 100644
---
a/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexReader.java
+++
b/paimon-faiss/paimon-faiss-index/src/main/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexReader.java
@@ -208,7 +208,7 @@ public class FaissVectorGlobalIndexReader implements
GlobalIndexReader {
id2scores.put(scoredRow.rowId, scoredRow.score);
roaringBitmap64.add(scoredRow.rowId);
}
- return new FaissVectorSearchGlobalIndexResult(roaringBitmap64,
id2scores);
+ return new FaissScoredGlobalIndexResult(roaringBitmap64, id2scores);
}
private void configureSearchParams(FaissIndex index) {
diff --git
a/paimon-faiss/paimon-faiss-index/src/test/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexTest.java
b/paimon-faiss/paimon-faiss-index/src/test/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexTest.java
index 0352f3f111..a9c605094e 100644
---
a/paimon-faiss/paimon-faiss-index/src/test/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexTest.java
+++
b/paimon-faiss/paimon-faiss-index/src/test/java/org/apache/paimon/faiss/index/FaissVectorGlobalIndexTest.java
@@ -280,9 +280,8 @@ public class FaissVectorGlobalIndexTest {
try (FaissVectorGlobalIndexReader reader =
new FaissVectorGlobalIndexReader(fileReader, metas,
vectorType, indexOptions)) {
VectorSearch vectorSearch = new VectorSearch(vectors[0], 1,
fieldName);
- FaissVectorSearchGlobalIndexResult result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ FaissScoredGlobalIndexResult result =
+ (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result.results().getLongCardinality()).isEqualTo(1);
long expectedRowId = 0;
assertThat(containsRowId(result, expectedRowId)).isTrue();
@@ -293,17 +292,13 @@ public class FaissVectorGlobalIndexTest {
filterResults.add(expectedRowId);
vectorSearch =
new VectorSearch(vectors[0], 1,
fieldName).withIncludeRowIds(filterResults);
- result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ result = (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(containsRowId(result, expectedRowId)).isTrue();
// Test with multiple results
float[] queryVector = new float[] {0.85f, 0.15f};
vectorSearch = new VectorSearch(queryVector, 2, fieldName);
- result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ result = (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result.results().getLongCardinality()).isEqualTo(2);
}
}
@@ -407,9 +402,8 @@ public class FaissVectorGlobalIndexTest {
// Verify that search returns vectors from the correct file
// The exact match should have rowId equal to the vector index
vectorSearch = new VectorSearch(testVectors.get(200), 1,
fieldName);
- FaissVectorSearchGlobalIndexResult result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ FaissScoredGlobalIndexResult result =
+ (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(containsRowId(result, 200)).isTrue();
}
}
@@ -448,17 +442,14 @@ public class FaissVectorGlobalIndexTest {
new FaissVectorGlobalIndexReader(fileReader, metas,
vectorType, indexOptions)) {
// Search for vector in the remainder file (second file)
VectorSearch vectorSearch = new VectorSearch(testVectors.get(60),
1, fieldName);
- FaissVectorSearchGlobalIndexResult result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ FaissScoredGlobalIndexResult result =
+ (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result).isNotNull();
assertThat(containsRowId(result, 60)).isTrue();
// Search for the last vector
vectorSearch = new VectorSearch(testVectors.get(72), 1, fieldName);
- result =
- (FaissVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ result = (FaissScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result).isNotNull();
assertThat(containsRowId(result, 72)).isTrue();
}
diff --git
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorSearchGlobalIndexResult.java
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneScoredGlobalIndexResult.java
similarity index 83%
rename from
paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorSearchGlobalIndexResult.java
rename to
paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneScoredGlobalIndexResult.java
index da7cc89dc6..a321c3379c 100644
---
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorSearchGlobalIndexResult.java
+++
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneScoredGlobalIndexResult.java
@@ -19,18 +19,18 @@
package org.apache.paimon.lucene.index;
import org.apache.paimon.globalindex.ScoreGetter;
-import org.apache.paimon.globalindex.VectorSearchGlobalIndexResult;
+import org.apache.paimon.globalindex.ScoredGlobalIndexResult;
import org.apache.paimon.utils.RoaringNavigableMap64;
import java.util.HashMap;
-/** Vector search global index result for Lucene vector index. */
-public class LuceneVectorSearchGlobalIndexResult implements
VectorSearchGlobalIndexResult {
+/** Scored global index result for Lucene vector index. */
+public class LuceneScoredGlobalIndexResult implements ScoredGlobalIndexResult {
private final HashMap<Long, Float> id2scores;
private final RoaringNavigableMap64 results;
- public LuceneVectorSearchGlobalIndexResult(
+ public LuceneScoredGlobalIndexResult(
RoaringNavigableMap64 results, HashMap<Long, Float> id2scores) {
this.id2scores = id2scores;
this.results = results;
diff --git
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
index b8e965d6df..d02dc4e87d 100644
---
a/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
+++
b/paimon-lucene/src/main/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexReader.java
@@ -207,7 +207,7 @@ public class LuceneVectorGlobalIndexReader implements
GlobalIndexReader {
id2scores.put(rowId, scoredRow.score);
roaringBitmap64.add(rowId);
}
- return Optional.of(new
LuceneVectorSearchGlobalIndexResult(roaringBitmap64, id2scores));
+ return Optional.of(new LuceneScoredGlobalIndexResult(roaringBitmap64,
id2scores));
}
/** Helper class to store row ID with its score. */
diff --git
a/paimon-lucene/src/test/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexTest.java
b/paimon-lucene/src/test/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexTest.java
index ab30d0cbc7..0ab610ecbd 100644
---
a/paimon-lucene/src/test/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexTest.java
+++
b/paimon-lucene/src/test/java/org/apache/paimon/lucene/index/LuceneVectorGlobalIndexTest.java
@@ -228,9 +228,8 @@ public class LuceneVectorGlobalIndexTest {
try (LuceneVectorGlobalIndexReader reader =
new LuceneVectorGlobalIndexReader(fileReader, metas,
vectorType)) {
VectorSearch vectorSearch = new VectorSearch(vectors[0], 1,
fieldName);
- LuceneVectorSearchGlobalIndexResult result =
- (LuceneVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ LuceneScoredGlobalIndexResult result =
+ (LuceneScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result.results().getLongCardinality()).isEqualTo(1);
long expectedRowId = 0;
assertThat(containsRowId(result, expectedRowId)).isTrue();
@@ -240,16 +239,12 @@ public class LuceneVectorGlobalIndexTest {
filterResults.add(expectedRowId);
vectorSearch =
new VectorSearch(vectors[0], 1,
fieldName).withIncludeRowIds(filterResults);
- result =
- (LuceneVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ result = (LuceneScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(containsRowId(result, expectedRowId)).isTrue();
float[] queryVector = new float[] {0.85f, 0.15f};
vectorSearch = new VectorSearch(queryVector, 2, fieldName);
- result =
- (LuceneVectorSearchGlobalIndexResult)
- reader.visitVectorSearch(vectorSearch).get();
+ result = (LuceneScoredGlobalIndexResult)
reader.visitVectorSearch(vectorSearch).get();
assertThat(result.results().getLongCardinality()).isEqualTo(2);
long rowId1 = 1;
long rowId2 = 3;