Files
qdrant/lib/segment/tests/segment_tests.rs
Daniil 1ad529c315 Allow to include vector into search result (#176)
* feat(#50): include vector into search result

allow to specify 'with_vector' parameter in search api to get search results vector data

* test(#50): fix tests

* chore(#50): apply cargo fmt

* chore(#50): update api docs

run tools/generate_openapi_models.sh

Co-authored-by: Daniil Sunyaev <dasforrum@gmail.com>
2022-01-03 17:12:01 +01:00

60 lines
1.6 KiB
Rust

mod fixtures;
#[cfg(test)]
mod tests {
use crate::fixtures::segment::build_segment_1;
use segment::entry::entry_point::SegmentEntry;
use segment::types::{Condition, Filter, WithPayload};
use std::collections::HashSet;
use std::iter::FromIterator;
use tempdir::TempDir;
#[test]
fn test_point_exclusion() {
let dir = TempDir::new("segment_dir").unwrap();
let segment = build_segment_1(dir.path());
assert!(segment.has_point(3));
let query_vector = vec![1.0, 1.0, 1.0, 1.0];
let res = segment
.search(&query_vector, &WithPayload::default(), false, None, 1, None)
.unwrap();
let best_match = res.get(0).expect("Non-empty result");
assert_eq!(best_match.id, 3);
let ids: HashSet<_> = HashSet::from_iter([3]);
let frt = Filter {
should: None,
must: None,
must_not: Some(vec![Condition::HasId(ids.into())]),
};
let res = segment
.search(
&query_vector,
&WithPayload::default(),
false,
Some(&frt),
1,
None,
)
.unwrap();
let best_match = res.get(0).expect("Non-empty result");
assert_ne!(best_match.id, 3);
let point_ids1: Vec<_> = segment.iter_points().collect();
let point_ids2: Vec<_> = segment.iter_points().collect();
assert!(!point_ids1.is_empty());
assert!(!point_ids2.is_empty());
assert_eq!(&point_ids1, &point_ids2)
}
}