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