jtibshirani commented on a change in pull request #166:
URL: https://github.com/apache/lucene/pull/166#discussion_r645789797



##########
File path: 
lucene/core/src/test/org/apache/lucene/codecs/lucene90/TestLucene90HnswVectorFormat.java
##########
@@ -16,14 +16,76 @@
  */
 package org.apache.lucene.codecs.lucene90;
 
+import java.util.List;
 import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.codecs.VectorFormat;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.VectorField;
 import org.apache.lucene.index.BaseVectorFormatTestCase;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.SegmentCommitInfo;
+import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.index.SegmentInfos;
+import org.apache.lucene.index.VectorValues;
+import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.TestUtil;
+import org.apache.lucene.util.hnsw.HnswGraphBuilder;
 
 public class TestLucene90HnswVectorFormat extends BaseVectorFormatTestCase {
 
   @Override
   protected Codec getCodec() {
     return TestUtil.getDefaultCodec();
   }
+
+  public void testFormatParameters() throws Exception {
+    Directory dir = newDirectory();
+
+    // Create a segment using the default parameters
+    IndexWriterConfig iwc = newIndexWriterConfig();
+    IndexWriter w = new IndexWriter(dir, iwc);
+    Document doc = new Document();
+    doc.add(new VectorField("field", new float[4], 
VectorValues.SimilarityFunction.DOT_PRODUCT));
+    w.addDocument(doc);
+    w.close();
+
+    // Write another segment using different parameters
+    int newMaxConn = HnswGraphBuilder.DEFAULT_MAX_CONN + 3;
+    int newBeamWidth = HnswGraphBuilder.DEFAULT_BEAM_WIDTH + 42;
+    IndexWriterConfig iwc2 =
+        newIndexWriterConfig()
+            .setCodec(
+                new Lucene90Codec() {
+                  @Override
+                  public VectorFormat getVectorFormatForField(String field) {
+                    return new Lucene90HnswVectorFormat(newMaxConn, 
newBeamWidth);
+                  }
+                });
+    IndexWriter w2 = new IndexWriter(dir, iwc2);
+    Document doc2 = new Document();
+    doc2.add(new VectorField("field", new float[4], 
VectorValues.SimilarityFunction.DOT_PRODUCT));
+    w2.addDocument(doc2);
+    w2.close();
+
+    // Check that we record the parameters that were used in the segment infos

Review comment:
       I tried a new testing approach where we randomize the parameters in 
`TestHnsw#testReadWrite`.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to