use usearch::DenseAbsorbConfig;use usearch::DenseRefineConfig;use usearch::DenseSplitConfig;use usearch::RefineReport;3.0.0-rc.1 · 4c3e5023
refine re-runs the neighbor selection over entries already in the graph and returns a RefineReport of the nodes re-selected, those whose neighbors changed, the islands found and reconnected, and the reachability audit closing the heal, so a batch built at a low expansion factor reaches the quality of a slower build afterwards. changed reaching zero is what settled looks like.
On a RAM handle searches may run throughout, on a VRAM one they may not, and insertions never may.
absorb takes donor indexes, handed over by value, one after another, keeping their graphs rather than re-inserting their entries and linking each in by walks across the appended part.
Readers of a RAM index may keep searching throughout, while a VRAM one admits no overlapping search.
index.on(&executor).absorb([first_shard, second_shard])?;index.on(&executor).split(&[&left, &right][..])?; // two empty receivers take a part each
A stopped absorb cuts only its closing refinement, every donor already moved, and reports Status::Cancelled. split is its inverse, leaving the source empty and live; both answer a RefineReport.
API
StructDenseAbsorbConfigThe donors an absorb consumes and the handler counting them; see DenseVerbs::absorb.