use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Default)]
pub enum QueryScorer {
#[default]
OkapiBM25,
#[allow(dead_code)]
Tfidf,
#[allow(dead_code)]
Jaccard,
#[allow(dead_code)]
QueryRatio,
#[allow(dead_code)]
BM25,
#[allow(dead_code)]
BM25F,
#[allow(dead_code)]
BM25Plus,
}
impl QueryScorer {
#[allow(dead_code)]
pub fn possible_names() -> &'static [&'static str] {
&["okapibm25", "tfidf", "jaccard", "queryratio"]
}
pub fn as_str(&self) -> &'static str {
match *self {
QueryScorer::OkapiBM25 => "okapibm25",
QueryScorer::Tfidf => "tfidf",
QueryScorer::Jaccard => "jaccard",
QueryScorer::QueryRatio => "queryratio",
QueryScorer::BM25 => "bm25",
QueryScorer::BM25F => "bm25f",
QueryScorer::BM25Plus => "bm25plus",
}
}
}
impl fmt::Display for QueryScorer {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
#[allow(dead_code)]
pub enum NgramType {
#[serde(rename = "window")]
Window,
#[serde(rename = "edge")]
Edge,
}