From 8a6059268374270b1cfdd0a4a8c31180ab2e270a Mon Sep 17 00:00:00 2001 From: gfhe <90042648+gfhe@users.noreply.github.com> Date: Tue, 22 Nov 2022 11:05:14 +0800 Subject: [PATCH] init each level connections problem At line 215 of `HnswIndex.java`, `randomLevel==0` may not meet expectations, which will reault in `maxM0` not working. ``` for (int level = 0; level <= randomLevel; level++) { int levelM = level == 0 ? maxM0 : maxM; connections[level] = new IntArrayList(levelM); } ``` --- .../src/main/java/com/github/jelmerk/knn/hnsw/HnswIndex.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hnswlib-core/src/main/java/com/github/jelmerk/knn/hnsw/HnswIndex.java b/hnswlib-core/src/main/java/com/github/jelmerk/knn/hnsw/HnswIndex.java index cfbe6f10..fe3ddc89 100644 --- a/hnswlib-core/src/main/java/com/github/jelmerk/knn/hnsw/HnswIndex.java +++ b/hnswlib-core/src/main/java/com/github/jelmerk/knn/hnsw/HnswIndex.java @@ -212,7 +212,7 @@ public boolean add(TItem item) { IntArrayList[] connections = new IntArrayList[randomLevel + 1]; for (int level = 0; level <= randomLevel; level++) { - int levelM = randomLevel == 0 ? maxM0 : maxM; + int levelM = level == 0 ? maxM0 : maxM; connections[level] = new IntArrayList(levelM); }