Struct arroy::Writer

source ·
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>

source

pub fn new(database: Database<D>, index: u16, dimensions: usize) -> Writer<D>

Creates a new writer from a database, index and dimensions.

source

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.

source

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.

source

pub fn item_vector( &self, rtxn: &RoTxn<'_>, item: ItemId, ) -> Result<Option<Vec<f32>>>

Returns an Optional vector previous stored in this database.

source

pub fn is_empty(&self, rtxn: &RoTxn<'_>) -> Result<bool>

Returns true if the index is empty.

source

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.

source

pub fn contains_item(&self, rtxn: &RoTxn<'_>, item: ItemId) -> Result<bool>

Returns true if the database contains the given item.

source

pub fn iter<'t>(&self, rtxn: &'t RoTxn<'_>) -> Result<ItemIter<'t, D>>

Returns an iterator over the items vector.

source

pub fn add_item( &self, wtxn: &mut RwTxn<'_>, item: ItemId, vector: &[f32], ) -> Result<()>

Add an item associated to a vector in the database.

source

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.
source

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.

source

pub fn clear(&self, wtxn: &mut RwTxn<'_>) -> Result<()>

Removes everything in the database, user items and internal tree nodes.

source

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.

Trait Implementations§

source§

impl<D: Debug + Distance> Debug for Writer<D>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<D> Freeze for Writer<D>

§

impl<D> RefUnwindSafe for Writer<D>
where D: RefUnwindSafe,

§

impl<D> Send for Writer<D>

§

impl<D> Sync for Writer<D>

§

impl<D> Unpin for Writer<D>
where D: Unpin,

§

impl<D> UnwindSafe for Writer<D>
where D: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V