pub struct Writer<D: Distance> { /* private fields */ }Expand description
A writer to store new items, remove existing ones, and build the search tree to query the nearest neighbors to items or vectors.
Implementations§
source§impl<D: Distance> Writer<D>
impl<D: Distance> Writer<D>
sourcepub fn new(database: Database<D>, index: u16, dimensions: usize) -> Writer<D>
pub fn new(database: Database<D>, index: u16, dimensions: usize) -> Writer<D>
Creates a new writer from a database, index and dimensions.
sourcepub fn prepare_changing_distance<ND: Distance>(
self,
wtxn: &mut RwTxn<'_>,
) -> Result<Writer<ND>>
pub fn prepare_changing_distance<ND: Distance>( self, wtxn: &mut RwTxn<'_>, ) -> Result<Writer<ND>>
Returns a writer after having deleted the tree nodes and rewrote all the items
for the new Distance format to be able to modify items safely.
sourcepub fn set_tmpdir(&mut self, path: impl Into<PathBuf>)
pub fn set_tmpdir(&mut self, path: impl Into<PathBuf>)
Specifies the folder in which arroy will write temporary files when building the tree.
If specified it uses the tempfile::tempfile_in function, otherwise it will
use the default tempfile::tempfile function which uses the OS temporary directory.
sourcepub fn item_vector(
&self,
rtxn: &RoTxn<'_>,
item: ItemId,
) -> Result<Option<Vec<f32>>>
pub fn item_vector( &self, rtxn: &RoTxn<'_>, item: ItemId, ) -> Result<Option<Vec<f32>>>
Returns an Optional vector previous stored in this database.
sourcepub fn need_build(&self, rtxn: &RoTxn<'_>) -> Result<bool>
pub fn need_build(&self, rtxn: &RoTxn<'_>) -> Result<bool>
Returns true if the index needs to be built before being able to read in it.
sourcepub fn contains_item(&self, rtxn: &RoTxn<'_>, item: ItemId) -> Result<bool>
pub fn contains_item(&self, rtxn: &RoTxn<'_>, item: ItemId) -> Result<bool>
Returns true if the database contains the given item.
sourcepub fn iter<'t>(&self, rtxn: &'t RoTxn<'_>) -> Result<ItemIter<'t, D>>
pub fn iter<'t>(&self, rtxn: &'t RoTxn<'_>) -> Result<ItemIter<'t, D>>
Returns an iterator over the items vector.
sourcepub fn add_item(
&self,
wtxn: &mut RwTxn<'_>,
item: ItemId,
vector: &[f32],
) -> Result<()>
pub fn add_item( &self, wtxn: &mut RwTxn<'_>, item: ItemId, vector: &[f32], ) -> Result<()>
Add an item associated to a vector in the database.
sourcepub fn append_item(
&self,
wtxn: &mut RwTxn<'_>,
item: ItemId,
vector: &[f32],
) -> Result<()>
pub fn append_item( &self, wtxn: &mut RwTxn<'_>, item: ItemId, vector: &[f32], ) -> Result<()>
Attempt to append an item into the database. It is generaly faster to append an item than insert it.
There are two conditions for an item to be successfully appended:
- The last item ID in the database is smaller than the one appended.
- The index of the database is the highest one.
sourcepub fn del_item(&self, wtxn: &mut RwTxn<'_>, item: ItemId) -> Result<bool>
pub fn del_item(&self, wtxn: &mut RwTxn<'_>, item: ItemId) -> Result<bool>
Deletes an item stored in this database and returns true if it existed.
sourcepub fn clear(&self, wtxn: &mut RwTxn<'_>) -> Result<()>
pub fn clear(&self, wtxn: &mut RwTxn<'_>) -> Result<()>
Removes everything in the database, user items and internal tree nodes.
sourcepub fn build<R: Rng + SeedableRng>(
self,
wtxn: &mut RwTxn<'_>,
rng: &mut R,
n_trees: Option<usize>,
) -> Result<()>
pub fn build<R: Rng + SeedableRng>( self, wtxn: &mut RwTxn<'_>, rng: &mut R, n_trees: Option<usize>, ) -> Result<()>
Generates a forest of n_trees trees.
More trees give higher precision when querying at the cost of more disk usage. After calling build, no more items can be added.
This function is using rayon to spawn threads. It can be configured
by using the rayon::ThreadPoolBuilder and the
rayon::ThreadPool::install to use it.