Budgeted MaxSim: only uses the first `budget` query vectors (Matryoshka ordering). When `budget` equals or exceeds `query.len()` this is equivalent to `maxsim`. Returns 0.0 if either side is empty or budget is 0.
(
query: &[Vec<f32>],
doc: &[Vec<f32>],
budget: u8,
metric: DistanceMetric,
)
| 62 | /// |
| 63 | /// Returns 0.0 if either side is empty or budget is 0. |
| 64 | pub fn budgeted_maxsim( |
| 65 | query: &[Vec<f32>], |
| 66 | doc: &[Vec<f32>], |
| 67 | budget: u8, |
| 68 | metric: DistanceMetric, |
| 69 | ) -> f32 { |
| 70 | let effective = (budget as usize).min(query.len()); |
| 71 | maxsim(&query[..effective], doc, metric) |
| 72 | } |
| 73 | |
| 74 | // --------------------------------------------------------------------------- |
| 75 | // Tests |