pub fn optimize_fastcover_dict(
samples: &[u8],
sample_sizes: &[usize],
dict_size: usize,
options: &FastCoverOptions,
finalize: FinalizeOptions,
) -> Result<(Vec<u8>, FastCoverOptions)>Available on crate feature
dict-builder only.Expand description
Train FastCOVER dictionaries over a range of k and d and keep the one
the scoring samples compress best with (the reference’s
ZDICT_optimizeTrainFromBuffer_fastCover, which zstd --train and
ZDICT_trainFromBuffer run). Returns it with the options that built it.
The search is optimize_cover_dict’s; a non-positive split_point is
0.75 here.
§Errors
As optimize_cover_dict and train_fastcover_dict.
§Examples
use structured_zstd::dictionary::{FastCoverOptions, FinalizeOptions, optimize_fastcover_dict};
let mut samples = Vec::new();
let mut sizes = Vec::new();
for i in 0..200u32 {
let line = format!("tenant=demo table=orders key={i} region=eu status=shipped\n");
sizes.push(line.len());
samples.extend_from_slice(line.as_bytes());
}
let (dict, chosen) = optimize_fastcover_dict(
&samples,
&sizes,
4096,
&FastCoverOptions::default(),
FinalizeOptions::default(),
)
.unwrap();
assert!(dict.len() <= 4096 && chosen.cover.d == 8);