敏感詞 v0.19.0 新特性之敏感詞單個編輯,不必重複初始化

老马啸西风發表於2024-09-19

敏感詞系列

sensitive-word-admin 敏感詞控臺 v1.2.0 版本開源

sensitive-word-admin v1.3.0 釋出 如何支援分散式部署?

01-開源敏感詞工具入門使用

02-如何實現一個敏感詞工具?違禁詞實現思路梳理

03-敏感詞之 StopWord 停止詞最佳化與特殊符號

04-敏感詞之字典瘦身

05-敏感詞之 DFA 演算法(Trie Tree 演算法)詳解

06-敏感詞(髒詞) 如何忽略無意義的字元?達到更好的過濾效果

v0.10.0-髒詞分類標籤初步支援

v0.11.0-敏感詞新特性:忽略無意義的字元,詞標籤字典

v0.12.0-敏感詞/髒詞詞標籤能力進一步增強

v0.13.0-敏感詞特性版本釋出 支援英文單詞全詞匹配

v0.16.1-敏感詞新特性之字典記憶體資源釋放

v0.19.0-敏感詞新特性之敏感詞單個編輯,不必重複初始化

v0.20.0 敏感詞新特性之數字全部匹配,而不是部分匹配

v0.21.0 敏感詞新特性之白名單支援單個編輯,修正白名單包含黑名單時的問題

view

業務背景

[功能]建議增加敏感詞的單個增刪改,避免重複初始化,提升效率。

針對單個黑名單詞的新增/刪除,無需全量初始化

使用場景:在初始化之後,我們希望針對單個詞的新增/刪除,而不是完全重新初始化。這個特性就是為此準備的。

支援版本:v0.19.0

方法說明

SensitiveWordBs 引導類新增如下 2 個方法:

addWord(word) 新增敏感詞,支援單個詞/集合

removeWord(word) 刪除敏感詞,支援單個詞/集合

例項程式碼:

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>sensitive-word</artifactId>
    <version>0.19.0</version>
</dependency>

測試程式碼

final String text = "測試一下新增敏感詞,驗證一下刪除和新增對不對";

SensitiveWordBs sensitiveWordBs =
SensitiveWordBs.newInstance()
        .wordAllow(WordAllows.empty())
        .wordDeny(WordDenys.empty())
        .init();

// 當前
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());

// 新增單個
sensitiveWordBs.addWord("測試");
sensitiveWordBs.addWord("新增");
Assert.assertEquals("[測試, 新增, 新增]", sensitiveWordBs.findAll(text).toString());

// 刪除單個
sensitiveWordBs.removeWord("新增");
Assert.assertEquals("[測試]", sensitiveWordBs.findAll(text).toString());
sensitiveWordBs.removeWord("測試");
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());

// 新增集合
sensitiveWordBs.addWord(Arrays.asList("新增", "測試"));
Assert.assertEquals("[測試, 新增, 新增]", sensitiveWordBs.findAll(text).toString());
// 刪除集合
sensitiveWordBs.removeWord(Arrays.asList("新增", "測試"));
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());

// 新增陣列
sensitiveWordBs.addWord("新增", "測試");
Assert.assertEquals("[測試, 新增, 新增]", sensitiveWordBs.findAll(text).toString());
// 刪除集合
sensitiveWordBs.removeWord("新增", "測試");
Assert.assertEquals("[]", sensitiveWordBs.findAll(text).toString());

小結

單個敏感詞的調整可以大幅度提升效能,降低使用成本。

開原始碼

敏感詞 https://github.com/houbb/sensitive-word

敏感詞 https://github.com/houbb/sensitive-word-admin

相關文章