use std::sync::Arc;
use bytes::Bytes;
use crate::superfile::fts::{builder::FtsBuilder, tokenize::AsciiLowerTokenizer};
pub(super) fn build_blob() -> (Bytes, String) {
let tok = Arc::new(AsciiLowerTokenizer);
let mut b = FtsBuilder::new(tok);
b.register_column("body".into(), false)
.expect("register column");
b.add_doc(0, 0, "rust async runtime").expect("add doc");
b.add_doc(0, 1, "tokio is a rust runtime").expect("add doc");
b.add_doc(0, 2, "java spring boot").expect("add doc");
let bytes = b.finish().expect("finish");
let json = r#"[{"name":"body","tokenizer":"ascii_lower"}]"#;
(Bytes::from(bytes), json.to_string())
}
pub(super) fn build_mixed_df_blob() -> (Bytes, String) {
let tok = Arc::new(AsciiLowerTokenizer);
let mut b = FtsBuilder::new(tok);
b.register_column("body".into(), false)
.expect("register column");
b.add_doc(0, 0, "common rust uniqzero").expect("add doc");
b.add_doc(0, 1, "common rust").expect("add doc");
b.add_doc(0, 2, "common uniqtwo").expect("add doc");
let bytes = b.finish().expect("finish");
let json = r#"[{"name":"body","tokenizer":"ascii_lower"}]"#;
(Bytes::from(bytes), json.to_string())
}
pub(super) fn build_phrase_blob() -> (Bytes, &'static str) {
use crate::superfile::fts::builder::FtsBuilder;
let mut b = FtsBuilder::new(crate::test_helpers::default_tokenizer());
b.register_column("title".into(), true).expect("register");
let docs = [
"new york city",
"york new haven",
"the new york times",
"new haven york",
"new york new york",
];
for (i, d) in docs.iter().enumerate() {
b.add_doc(0, i as u32, d).expect("add doc");
}
(
Bytes::from(b.finish().expect("finish")),
r#"[{"name":"title","tokenizer":"ascii_lower","positions":true}]"#,
)
}