Skip to content

Commit bdc9775

Browse files
authored
KnnIndexTester: always emit the number of segments (#132576)
Regardless of force merge or not, it's useful to see the number of segments. Force merge will result in a number of segments of 1, as expected.
1 parent 686a11a commit bdc9775

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

qa/vector/src/main/java/org/elasticsearch/test/knn/KnnIndexTester.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
import org.apache.lucene.codecs.KnnVectorsFormat;
1616
import org.apache.lucene.codecs.lucene101.Lucene101Codec;
1717
import org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsFormat;
18+
import org.apache.lucene.index.DirectoryReader;
19+
import org.apache.lucene.index.IndexReader;
1820
import org.apache.lucene.index.LogByteSizeMergePolicy;
1921
import org.apache.lucene.index.LogDocMergePolicy;
2022
import org.apache.lucene.index.MergePolicy;
2123
import org.apache.lucene.index.NoMergePolicy;
2224
import org.apache.lucene.index.TieredMergePolicy;
25+
import org.apache.lucene.store.FSDirectory;
2326
import org.elasticsearch.cli.ProcessInfo;
2427
import org.elasticsearch.common.Strings;
2528
import org.elasticsearch.common.logging.LogConfigurator;
@@ -37,7 +40,9 @@
3740
import org.elasticsearch.xcontent.XContentParserConfiguration;
3841
import org.elasticsearch.xcontent.XContentType;
3942

43+
import java.io.IOException;
4044
import java.io.InputStream;
45+
import java.io.UncheckedIOException;
4146
import java.lang.management.ThreadInfo;
4247
import java.nio.file.Files;
4348
import java.nio.file.Path;
@@ -230,10 +235,9 @@ public static void main(String[] args) throws Exception {
230235
}
231236
if (cmdLineArgs.forceMerge()) {
232237
knnIndexer.forceMerge(indexResults);
233-
} else {
234-
knnIndexer.numSegments(indexResults);
235238
}
236239
}
240+
numSegments(indexPath, indexResults);
237241
if (cmdLineArgs.queryVectors() != null && cmdLineArgs.numQueries() > 0) {
238242
for (int i = 0; i < results.length; i++) {
239243
int nProbe = nProbes[i];
@@ -265,6 +269,14 @@ private static MergePolicy getMergePolicy(CmdLineArgs args) {
265269
return mergePolicy;
266270
}
267271

272+
static void numSegments(Path indexPath, KnnIndexTester.Results result) {
273+
try (FSDirectory dir = FSDirectory.open(indexPath); IndexReader reader = DirectoryReader.open(dir)) {
274+
result.numSegments = reader.leaves().size();
275+
} catch (IOException e) {
276+
throw new UncheckedIOException("Failed to get segment count for index at " + indexPath, e);
277+
}
278+
}
279+
268280
static class FormattedResults {
269281
List<Results> indexResults = new ArrayList<>();
270282
List<Results> queryResults = new ArrayList<>();

qa/vector/src/main/java/org/elasticsearch/test/knn/KnnIndexer.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
import org.apache.lucene.document.KnnFloatVectorField;
2828
import org.apache.lucene.document.StoredField;
2929
import org.apache.lucene.index.ConcurrentMergeScheduler;
30-
import org.apache.lucene.index.DirectoryReader;
31-
import org.apache.lucene.index.IndexReader;
3230
import org.apache.lucene.index.IndexWriter;
3331
import org.apache.lucene.index.IndexWriterConfig;
3432
import org.apache.lucene.index.MergePolicy;
@@ -94,14 +92,6 @@ class KnnIndexer {
9492
this.mergePolicy = mergePolicy;
9593
}
9694

97-
void numSegments(KnnIndexTester.Results result) {
98-
try (FSDirectory dir = FSDirectory.open(indexPath); IndexReader reader = DirectoryReader.open(dir)) {
99-
result.numSegments = reader.leaves().size();
100-
} catch (IOException e) {
101-
throw new UncheckedIOException("Failed to get segment count for index at " + indexPath, e);
102-
}
103-
}
104-
10595
void createIndex(KnnIndexTester.Results result) throws IOException, InterruptedException, ExecutionException {
10696
IndexWriterConfig iwc = new IndexWriterConfig().setOpenMode(IndexWriterConfig.OpenMode.CREATE);
10797
iwc.setCodec(codec);

0 commit comments

Comments
 (0)