houbb / sensitive-word

👮‍♂️The sensitive word tool for java.(敏感词/违禁词/违法词/脏词。基于 DFA 算法实现的高性能 java 敏感词过滤工具框架。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。高性能敏感词检测过滤组件,附带繁体简体互换,支持全角半角互换,汉字转拼音,模糊搜索等功能。)

Home Page:https://houbb.github.io/opensource/sensitive-word

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

22b、2bc、sbc这些都无法通过配置匹配到空

OPGithub opened this issue · comments

这个ignoreRepeat(true)会出现22b,ignoreRepeat(false)会出现2b ,事实上我想匹配到的是空

final String text = "22b";
List<String> wordList = SensitiveWordBs.newInstance()
        .ignoreRepeat(true)
        .wordResultCondition(WordResultConditions.englishWordMatch())
        .init()
        .findAll(text);

这个englishWordMatch、以及alwaysTrue都会出现sb,事实上我想匹配到的是空

final String text = "sbc";
List<String> wordList = SensitiveWordBs.newInstance()
        .wordResultCondition(WordResultConditions.englishWordMatch())
        .init()
        .findAll(text);

试下这个:

#45

试下这个:

#45

这个会有问题,就是要找到所有的纯字母和数字的敏感词,一个个手动加入到白名单,有点怪,而且如果敏感词库更新了,多了个类似的敏感词,就会导致不可预知的异常

期望能够设置,最长匹配连续的字母数字。比如abbcc 当中出现bc不会有问题,仅在 a bc d 这种情况会匹配到bc。从代码文字意义来说englishWordMatch 这个应该是需要符合这个规则的才对

因为中文词是连续的,所以匹配最长不太可行。 主流的做法就是先最短匹配,结果出来可以做二次筛选或者警告之类的。 发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: guaxi @.> 发送时间: 2024年5月28日 11:09 收件人: houbb/sensitive-word @.> 抄送: 老马啸西风 @.>, Comment @.> 主题: Re: [houbb/sensitive-word] 22b、2bc、sbc这些都无法通过配置匹配到空 (Issue #59) 期望能够设置,最长匹配连续的字母数字。比如abbcc 当中出现bc不会有问题,仅在 a bc d 这种情况会匹配到bc。从代码文字意义来说englishWordMatch 这个应该是需要符合这个规则的才对 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

但是WordResultConditions.englishWordMatch配置这个之后,sbc这是一个单词,不应该匹配到sb才对。

这个问题现在有解决方案吗,试了一下,现在sbc会匹配到sb,sbcd就不会匹配到了