Skip to content

Commit

Permalink
fix: hnsw index now restores the statement (remove deleted property) …
Browse files Browse the repository at this point in the history
…when rebuild is executed
  • Loading branch information
lvca committed Sep 20, 2023
1 parent 08123a1 commit 32a2113
Showing 1 changed file with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,9 @@ public void addAll(final List<Item<TId, TVector>> embeddings, final BuildVectorI
MutableVertex vertex;
if (existent.hasNext()) {
vertex = existent.next().asVertex().modify();
final Boolean deleted = vertex.getBoolean(deletedPropertyName);
if (deleted != null && deleted)
vertex.remove(deletedPropertyName);
} else
vertex = database.newVertex(vertexType);

Expand Down Expand Up @@ -325,13 +328,20 @@ public boolean add(Vertex vertex) {

globalLock.lock();
try {
final Boolean deleted = vertex.getBoolean(deletedPropertyName);
if (deleted != null && deleted) {
vertex = vertex.modify();
((MutableVertex) vertex).remove(deletedPropertyName);
((MutableVertex) vertex).save();
}

final long totalEdges = vertex.countEdges(Vertex.DIRECTION.OUT, getEdgeType(0));
if (totalEdges > 0)
// ALREADY INSERTED
return true;

vertex = vertex.modify().set("vectorMaxLevel", randomLevel).save();

if (cache != null)
cache.put(vertex.getIdentity(), vertex);

Expand Down Expand Up @@ -918,9 +928,13 @@ public long build(final HnswVectorIndexRAM origin, final int buildIndexBatchSize

final MutableVertex vertex;
final IndexCursor existent = underlyingIndex.get(new Object[] { node.item.id() });
if (existent.hasNext())
if (existent.hasNext()) {
vertex = existent.next().asVertex().modify();
else
final Boolean deleted = vertex.getBoolean(deletedPropertyName);
if (deleted != null && deleted)
vertex.remove(deletedPropertyName);

} else
vertex = database.newVertex(vertexType);

vertex.set(idPropertyName, node.item.id()).set(vectorPropertyName, node.item.vector());
Expand Down

0 comments on commit 32a2113

Please sign in to comment.