|
16 | 16 | */
|
17 | 17 | package org.apache.lucene.tests.index;
|
18 | 18 |
|
| 19 | +import static org.apache.lucene.index.VectorSimilarityFunction.DOT_PRODUCT; |
19 | 20 | import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
|
20 | 21 |
|
21 | 22 | import java.io.ByteArrayOutputStream;
|
@@ -847,6 +848,58 @@ public void testByteVectorScorerIteration() throws Exception {
|
847 | 848 | }
|
848 | 849 | }
|
849 | 850 |
|
| 851 | + public void testEmptyFloatVectorData() throws Exception { |
| 852 | + try (Directory dir = newDirectory(); |
| 853 | + IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) { |
| 854 | + var doc1 = new Document(); |
| 855 | + doc1.add(new StringField("id", "0", Field.Store.NO)); |
| 856 | + doc1.add(new KnnFloatVectorField("v", new float[] {2, 3, 5, 6}, DOT_PRODUCT)); |
| 857 | + w.addDocument(doc1); |
| 858 | + |
| 859 | + var doc2 = new Document(); |
| 860 | + doc2.add(new StringField("id", "1", Field.Store.NO)); |
| 861 | + w.addDocument(doc2); |
| 862 | + |
| 863 | + w.deleteDocuments(new Term("id", Integer.toString(0))); |
| 864 | + w.commit(); |
| 865 | + w.forceMerge(1); |
| 866 | + |
| 867 | + try (DirectoryReader reader = DirectoryReader.open(w)) { |
| 868 | + LeafReader r = getOnlyLeafReader(reader); |
| 869 | + FloatVectorValues values = r.getFloatVectorValues("v"); |
| 870 | + assertNotNull(values); |
| 871 | + assertEquals(0, values.size()); |
| 872 | + assertNull(values.scorer(new float[] {2, 3, 5, 6})); |
| 873 | + } |
| 874 | + } |
| 875 | + } |
| 876 | + |
| 877 | + public void testEmptyByteVectorData() throws Exception { |
| 878 | + try (Directory dir = newDirectory(); |
| 879 | + IndexWriter w = new IndexWriter(dir, newIndexWriterConfig())) { |
| 880 | + var doc1 = new Document(); |
| 881 | + doc1.add(new StringField("id", "0", Field.Store.NO)); |
| 882 | + doc1.add(new KnnByteVectorField("v", new byte[] {2, 3, 5, 6}, DOT_PRODUCT)); |
| 883 | + w.addDocument(doc1); |
| 884 | + |
| 885 | + var doc2 = new Document(); |
| 886 | + doc2.add(new StringField("id", "1", Field.Store.NO)); |
| 887 | + w.addDocument(doc2); |
| 888 | + |
| 889 | + w.deleteDocuments(new Term("id", Integer.toString(0))); |
| 890 | + w.commit(); |
| 891 | + w.forceMerge(1); |
| 892 | + |
| 893 | + try (DirectoryReader reader = DirectoryReader.open(w)) { |
| 894 | + LeafReader r = getOnlyLeafReader(reader); |
| 895 | + ByteVectorValues values = r.getByteVectorValues("v"); |
| 896 | + assertNotNull(values); |
| 897 | + assertEquals(0, values.size()); |
| 898 | + assertNull(values.scorer(new byte[] {2, 3, 5, 6})); |
| 899 | + } |
| 900 | + } |
| 901 | + } |
| 902 | + |
850 | 903 | protected VectorSimilarityFunction randomSimilarity() {
|
851 | 904 | return VectorSimilarityFunction.values()[
|
852 | 905 | random().nextInt(VectorSimilarityFunction.values().length)];
|
|
0 commit comments