3个稳定版本
1.1.0 | 2024年5月12日 |
---|---|
1.0.1 | 2024年5月11日 |
1.0.0 | 2024年5月10日 |
#382 in 算法
17KB
310 行
🚫 rust-sensitive
敏感词过滤,支持多种数据源加载、多种过滤算法、多种操作函数
🌟 功能
- 支持广泛的操作函数
filter()
返回过滤后的文本。replace()
返回替换敏感词后的文本。is_sensitive()
返回文本是否包含敏感词。find_one()
返回匹配到的第一个敏感词。find_all()
返回匹配到的所有敏感词。
- 支持多种数据源加载
- ✅ 支持内存存储
- 🔲 支持mysql存储
- 🔲 支持mongo存储
- 支持多种过滤算法
- ✅ DFA 使用
HashMap
匹配敏感词。 - ✅ AC自动机
- ✅ DFA 使用
⚙ 使用方法
首次使用
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