WordFilter - 高性能敏感词过滤前置库

原创 LSE WordFilter - 高性能敏感词过滤前置库 1.0.1

请登录后获取
版权类型
原创
版权链接
https://github.com/15551057621/WordFilter
Wiki/文档
https://github.com/15551057621/WordFilter
前置组件
lse-node
适配版本(基岩)
  1. 全版本
[MD] ## 🚀 插件概述 WordFilter 是一个高性能敏感词过滤前置库 基于 AC自动机(Aho-Corasick) 算法实现,支持百万级词库毫秒级响应。 作为前置库,它不主动拦截任何消息,仅导出 API 供其他插件调用。 ## ✨ 核心特性 - 高性能 - 单次检测 < 0.3ms,缓存命中 < 0.01ms - 跨平台 - 同时支持 LSE-Node 和纯 Node.js 环境 - 结果缓存 - 相同文本直接返回缓存结果 - 长文本支持 - 自动分片处理,支持任意长度文本 - AC自动机算法 - O(n) 时间复杂度,与词库大小无关 > 在纯 Node.js 环境下使用时需要手动修改本项目源码 (因为我没搞懂npm导出) ## 📂 词库格式 词库文件为 .txt 文本文件,每行一个敏感词,支持 # 注释: ``` # 敏感词库示例 # 每行一个敏感词 敏感词1 咕咕嘎嘎 ``` > 注意:词库文件放入 wordlist/ 目录,支持多个文件,插件会自动合并。 > 可以在这里找到相关词库文件 >> [URL='https://github.com/konsheng/Sensitive-lexicon']一个持续更新的中文敏感词库[/URL] << ## ⚙️ 配置说明 修改 index.js 中的 CONFIG 对象: ```javascript const CONFIG = Object.freeze({ WORD_LIST_PATH: './wordlist/', // 词库目录 REPLACE_CHAR: '喵', // 替换字符 ENABLE_CACHE: true, // 启用缓存 CACHE_SIZE: 5000, // 缓存大小 CHUNK_SIZE: 512, // 分片大小 }); ``` ## 📁 文件结构 ``` WordFilter/ ├── index.js # 主程序 ├── package.json # npm 配置 ├── manifest.json # LSE 插件清单 └── wordlist/ # 词库目录 ├── words_1.txt ├── words_2.txt └── words_3.txt ``` ## 🔌 API 接口文档 ```javascript const WFLib = { // 导入 API contains: ll.imports('WordFilter', 'contains'), filter: ll.imports('WordFilter', 'filter'), match: ll.imports('WordFilter', 'match'), status: ll.imports('WordFilter', 'status'), reload: ll.imports('WordFilter', 'reload'), clearCache: ll.imports('WordFilter', 'clearCache') } ``` #### 检测文本是否包含敏感词 `WFLib.contains(text)` - 参数: - text : String 待检测的文本内容 - 返回值:是否包含敏感词 - 返回值类型:Boolean #### 过滤文本中的敏感词 `WFLib.filter(text)` - 参数: - text : String 待过滤的文本内容 - 返回值:过滤后的文本(敏感词替换为 *) - 返回值类型:String #### 获取匹配的敏感词列表 `WFLib.match(text)` - 参数: - text : String 待检测的文本内容 - 返回值:匹配到的敏感词列表(自动去重) - 返回值类型:Array<String> #### 获取过滤器状态信息 `WFLib.status()` - 参数:无 - 返回值:过滤器当前状态对象 - 返回值类型:Object 返回值结构: | 字段 | 类型 | 说明 | |------|------|------| | isReady | Boolean | 过滤器是否已初始化完成 | | wordCount | Integer | 词库中的敏感词数量 | | cacheSize | Integer | 检测结果缓存大小 | | nodeCount | Integer | AC自动机节点数量 | | filterCacheSize | Integer | 过滤结果缓存大小 | #### 重新加载词库 `WFLib.reload()` - 参数:无 - 返回值:是否重新加载成功 - 返回值类型:Promise<Boolean> #### 清空缓存 `WFLib.clearCache()` - 参数:无 - 返回值:无 - 返回值类型:void [/MD]
后退
顶部 底部