diff --git a/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/main/java/org/apache/geaflow/store/lucene/GraphVectorIndex.java b/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/main/java/org/apache/geaflow/store/lucene/GraphVectorIndex.java index 88934d6b4..dba466a39 100644 --- a/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/main/java/org/apache/geaflow/store/lucene/GraphVectorIndex.java +++ b/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/main/java/org/apache/geaflow/store/lucene/GraphVectorIndex.java @@ -145,6 +145,10 @@ public K searchVectorIndex(boolean isVertex, String fieldName, float[] vector, i // Execute search TopDocs topDocs = searcher.search(knnQuery, topK); + if (topDocs.scoreDocs.length == 0) { + return null; + } + Document firstDoc = searcher.doc(topDocs.scoreDocs[0].doc); K result; diff --git a/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/test/java/org/apache/geaflow/store/lucene/GraphVectorIndexTest.java b/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/test/java/org/apache/geaflow/store/lucene/GraphVectorIndexTest.java index 3231ebe7c..d77d4851b 100644 --- a/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/test/java/org/apache/geaflow/store/lucene/GraphVectorIndexTest.java +++ b/geaflow/geaflow-plugins/geaflow-store/geaflow-store-vector/src/test/java/org/apache/geaflow/store/lucene/GraphVectorIndexTest.java @@ -155,4 +155,11 @@ public void testMultipleVectorsSameKeyDifferentFields() { assertEquals(result1, key); assertEquals(result2, key); } + @Test + public void testSearchNonExistentFieldReturnsNull() { + stringIndex.addVectorIndex(true, "vertex_1", "embedding", new float[]{0.1f, 0.2f, 0.3f, 0.4f}); + // searching for a non-existent field should return null + String result = stringIndex.searchVectorIndex(true, "nonexistent_field", new float[]{0.1f, 0.2f, 0.3f, 0.4f}, 1); + assertEquals(result, null); + } }