#敏感词 #多重 #数据源 # #过滤 #算法 #加载

rust_sensitive

敏感词过滤,支持多种数据源加载、多种过滤算法、多种操作函数

3个稳定版本

1.1.0 2024年5月12日
1.0.1 2024年5月11日
1.0.0 2024年5月10日

#382 in 算法

MIT许可证

17KB
310

🚫 rust-sensitive

build

英文 | 中文

敏感词过滤,支持多种数据源加载、多种过滤算法、多种操作函数

🌟 功能

  • 支持广泛的操作函数
    • filter() 返回过滤后的文本。
    • replace() 返回替换敏感词后的文本。
    • is_sensitive() 返回文本是否包含敏感词。
    • find_one() 返回匹配到的第一个敏感词。
    • find_all() 返回匹配到的所有敏感词。
  • 支持多种数据源加载
    • ✅ 支持内存存储
    • 🔲 支持mysql存储
    • 🔲 支持mongo存储
  • 支持多种过滤算法
    • DFA 使用 HashMap 匹配敏感词。
    • AC自动机

⚙ 使用方法

首次使用

    use rust_sensitive::model::DfaSensitiveWordMap;

    fn test(){
        // Initialize the sensitive_map
        let map =DfaSensitiveWordMap::init_dfa_dic_from_file("./data.txt");
        /* because use once_cell,you can use 
         DfaSensitiveWordMap::get_dfa_dic() 
         to get the sensitive_map 
        */

        /*
        if use ac algorithm,you can use
        use rust_sensitive::model::AcSensitiveWordMap;

        let map =AcSensitiveWordMap::init_ac_dic_from_file("./data.txt"); 
        and because use once_call,you can also use
        AcSensitiveWordMap::get_ac_dic()
        to get the sensitive_map
        */
    }
    fn test2(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        // let map = AcSensitiveWordMap::get_ac_dic();
    }

filter()

    fn filter(&self, text_copy: &str) -> String
    // "hello" is sensitive word
    fn test(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        let result = map.filter("hello,world!");
        println!("{}",result); //",world"

    }

replace()

    replace(&self, text_copy: &str, repl: &str) -> String
    // "hello" is sensitive word
    fn test(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        let result = map.replace("hello,world!","*");
        // repl is like "!"、"*".a single word
        println!("{}",result); //"*****,world"

    }

is_sensitive()

    fn is_sensitive(&self, text: &str) -> bool
    // "hello" is sensitive word
    fn test(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        let result = map.is_sensitive("hello,world!");
        println!("{}",result); //"true"

    }

find_one()

    fn find_one(&self, text: &str) -> String
    // "hello" is sensitive word
    fn test(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        let result = map.find_one("hello,world!");
        println!("{}",result); //"hello"

    }

find_all()

    find_all(&self, text: &str) -> Vec<String>
    // "hello" "world" are sensitive words
    fn test(){
        let map = DfaSensitiveWordMap::get_dfa_dic();
        let result = map.find_all("hello,world!");
        println!("{}",result); //"hello","world"

    }

✔ 获取

在项目目录下运行以下Cargo命令

    cargo add rust_sensitive

或向您的Cargo.toml添加以下行

    [dependencies]
    rust_sensitive = "1.1.0"

📌 TODO

  • 添加mongo数据源支持
  • 添加Bloom算法

依赖项

~625KB