yass-2 2.0.0

Yet another string similarity library
Documentation
use std::collections::HashMap;
use yass::{ExpectTokenizerType, StrSim, StrSimError};

pub struct SpecificStrSim {
    pub map: HashMap<&'static str, HashMap<&'static str, f64>>,
}

impl StrSim<Vec<char>> for SpecificStrSim {
    fn similarity_pre_tok2(
        &self,
        tokenized_key: &Vec<char>,
        tokenized_query: &Vec<char>,
    ) -> Result<f64, StrSimError> {
        let mut k1 = tokenized_key.into_iter().collect::<String>();
        let mut k2 = tokenized_query.into_iter().collect::<String>();

        if !self.map.contains_key(&k1.as_str()) {
            (k1, k2) = (k2, k1);
        }

        Ok(*self
            .map
            .get(&k1.as_str())
            .unwrap()
            .get(&k2.as_str())
            .unwrap())
    }
}

impl ExpectTokenizerType for SpecificStrSim {
    fn get_expected_tokenizer_type(&self) -> yass::TokenizerType {
        yass::TokenizerType::Seq(Box::new(None))
    }
}