You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by so...@apache.org on 2021/06/09 11:56:59 UTC

[lucene] branch main updated: LUCENE-9992: write empty vector fields when merging (#172)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 465cb17  LUCENE-9992: write empty vector fields when merging (#172)
465cb17 is described below

commit 465cb17d2b5762f01fbe3069dabd5841eaadac8b
Author: Michael Sokolov <so...@falutin.net>
AuthorDate: Wed Jun 9 07:56:50 2021 -0400

    LUCENE-9992: write empty vector fields when merging (#172)
---
 .../org/apache/lucene/codecs/VectorWriter.java     |  4 +---
 .../codecs/lucene90/Lucene90HnswVectorWriter.java  | 22 ++++++++++------------
 .../lucene/index/BaseVectorFormatTestCase.java     |  8 ++++++--
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/codecs/VectorWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/VectorWriter.java
index c6c5964..90d9acc 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/VectorWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/VectorWriter.java
@@ -106,9 +106,7 @@ public abstract class VectorWriter implements Closeable {
     }
     // Create a new VectorValues by iterating over the sub vectors, mapping the resulting
     // docids using docMaps in the mergeState.
-    if (subs.size() > 0) {
-      writeField(mergeFieldInfo, new VectorValuesMerger(subs, mergeState));
-    }
+    writeField(mergeFieldInfo, new VectorValuesMerger(subs, mergeState));
     if (mergeState.infoStream.isEnabled("VV")) {
       mergeState.infoStream.message("VV", "merge done " + mergeState.segmentInfo);
     }
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90HnswVectorWriter.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90HnswVectorWriter.java
index b2df81e..7cb8f7c 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90HnswVectorWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene90/Lucene90HnswVectorWriter.java
@@ -142,18 +142,16 @@ public final class Lucene90HnswVectorWriter extends VectorWriter {
       }
     }
     long vectorIndexLength = vectorIndex.getFilePointer() - vectorIndexOffset;
-    if (vectorDataLength > 0) {
-      writeMeta(
-          fieldInfo,
-          vectorDataOffset,
-          vectorDataLength,
-          vectorIndexOffset,
-          vectorIndexLength,
-          count,
-          docIds);
-      if (vectors.similarityFunction() != VectorValues.SimilarityFunction.NONE) {
-        writeGraphOffsets(meta, offsets);
-      }
+    writeMeta(
+        fieldInfo,
+        vectorDataOffset,
+        vectorDataLength,
+        vectorIndexOffset,
+        vectorIndexLength,
+        count,
+        docIds);
+    if (vectors.similarityFunction() != VectorValues.SimilarityFunction.NONE) {
+      writeGraphOffsets(meta, offsets);
     }
   }
 
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
index e64c147..e1e4a89 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseVectorFormatTestCase.java
@@ -535,12 +535,16 @@ public abstract class BaseVectorFormatTestCase extends BaseIndexFileFormatTestCa
       w.commit();
 
       try (DirectoryReader r = w.getReader()) {
-        assertNotNull(getOnlyLeafReader(r).getVectorValues("v"));
+        VectorValues values = getOnlyLeafReader(r).getVectorValues("v");
+        assertNotNull(values);
+        assertEquals(1, values.size());
       }
       w.deleteDocuments(new Term("id", "0"));
       w.forceMerge(1);
       try (DirectoryReader r = w.getReader()) {
-        assertNull(getOnlyLeafReader(r).getVectorValues("v"));
+        VectorValues values = getOnlyLeafReader(r).getVectorValues("v");
+        assertNotNull(values);
+        assertEquals(0, values.size());
       }
     }
   }