SearchIterator()
Creates an iterator that retrieves search results in batches while preserving the server search token and one MVCC session timestamp across pages.
pub async fn search_iterator(&self, request: SearchIteratorRequest) -> Result<SearchIterator>
Request Syntax
let request = SearchIteratorRequest::builder()
.search(
SearchRequest::builder()
.collection_name("books")
.vector_field("embedding")
.vectors(SearchVectors::Float(vec![vec![0.1, 0.2, 0.3, 0.4]]))
.limit(1000)
.build()?,
)
.batch_size(100)
.build()?;
let mut iterator = client.search_iterator(request).await?;
REQUEST FIELDS:
search: SearchRequestThe
SearchRequestthat defines the collection, vector field, and query vectors. Search iterators do not support primary-key IDs ororder_by_fields. Required.batch_size: usizeNumber of hits returned per
next()call. Defaults to1000.limit: Option<usize>Optional total number of hits to iterate before stopping.
RETURN TYPE:
Result
RETURNS:
A SearchIterator used to page through the search results in batches. Returns an Error if the operation fails.
SearchIterator
next() // -> Result<Option<response::dql::SearchResponse>>
close() // -> Result<()>
METHODS:
next()(Result) -Fetches the next batch of search results, or
Nonewhen exhausted.close()(Result<()>) -Closes the iterator and releases server resources.
Example
let request = SearchIteratorRequest::builder()
.search(
SearchRequest::builder()
.collection_name("books")
.vector_field("embedding")
.vectors(SearchVectors::Float(vec![vec![0.1, 0.2, 0.3, 0.4]]))
.limit(1000)
.build()?,
)
.batch_size(100)
.build()?;
let mut iterator = client.search_iterator(request).await?;
while let Some(batch) = iterator.next().await? {
println!("got {} hits", batch.results().len());
}