1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//! Parameters for a similarity search.
use crateFilter;
use crateDistanceMetric;
/// The parameters of a nearest-neighbor search.
///
/// `k` is how many results to return, `metric` is how distance is measured,
/// `ef` is an optional search-breadth knob (the candidate-list size some
/// approximate indexes expose; ignored by exact search), and `filter` is an
/// optional metadata predicate restricting which records are eligible. Start
/// from [`SearchParams::new`] and set the optional fields as needed.
///
/// # Examples
///
/// ```
/// use iqdb_types::{DistanceMetric, Filter, SearchParams, Value};
///
/// let params = SearchParams {
/// filter: Some(Filter::eq("published", Value::Bool(true))),
/// ..SearchParams::new(10, DistanceMetric::Cosine)
/// };
///
/// assert_eq!(params.k, 10);
/// assert_eq!(params.metric, DistanceMetric::Cosine);
/// assert_eq!(params.ef, None);
/// assert!(params.filter.is_some());
/// ```