java工具:基于字典树(Trie)的敏感词查找的实现

项目地址

https://github.com/kylin-hunter/k-dic



前言

基于字典树(单词查找树/Trie树)的敏感词查找的实现


一、字典树

字典树又称单词查找树,Trie树,是一种树形结构,主要用于处理大量字符串的查找工作。

在这里插入图片描述

二、使用步骤

1 引入库

1.1 编译并发布到本地

        gradle clean build publishToMavenLocal-x test

1.2 gradle (gradle.org)


        implementation'io.github.kylin-hunter:k-dic-app:1.0.4'

1.3 maven (maven.apache.org)


        <dependency>
          <groupId>io.github.kylin-hunter</groupId>
            <artifactId>k-dic-app</artifactId>
          <version>1.0.4</version>
        </dependency>

2 示例

2.1 主要Api:

2.1.1 添加敏感词到词典
    /**
     * @title  添加敏感词到词典中
     * @description 
     * @author BiJi'an 
     * @param hitMode  命中模式 ,
     *                 分为高中低三种命中模式,以北京为例  
     *                 HIGH模式:支持命中"北京" 
     *                 MIDDLE模式:支持HIGH模式, 还额外支持特殊符号夹在其中,例如 "北*京" "北@#京"
     *                 LOW:支持HIGH+MIDDLE模式, 还额外支持含有一些其他字符,例如 "北啊京" "北*大*京"  
     * @param keyword  敏感词 ,例如:北京
     * @param assistedKeywords 辅助词:需要需要命中这些词,敏感词才能够真正命中,允许为空
     * @date 2022-12-07 23:06
     * @return void
     */
    public void add(HitMode hitMode, String keyword, String[] assistedKeywords) ;
2.1.2 检查敏感词
    
    /**
     * @param inputText 待检测的文本
     * @param findLevel findLevel ,支持三种查询模式
     *                  HIGH: 高度匹配检查 , 参考上文 HitMode.HIGH
     *                  HIGH_MIDDLE: 高度检查+中度检查 , 参考上文 HitMode.MIDDLE
     *                  HIGH_MIDDLE_LOW: 高度检查+中度检查+低度检查 , 参考上文 HitMode.LOW
     * @return List<MatchResult< SensitiveWord>> 命中的敏感词,包括命中的敏感词的位置
     * @title 查询敏感词
     * @description
     * @author BiJi'an
     * @date 2022-12-05 02:46
     */
    public List<MatchResult<SensitiveWord>> match(String inputText, FindLevel findLevel) ;

2.2代码示例:

       
        String text = "北京和北**京和北**啊**京"
                + "北京海淀和北**京海淀和北**啊**京海淀"
                + "河北和河**北和河**啊**北和廊坊和张家口"
                + "乌鲁木齐和乌鲁**木齐和乌鲁**啊**木齐"
                + "呼和浩特和呼和**浩特和呼和**啊**浩特和新疆"
                + "上海和上**海和上**啊**海"
                + "山西和山**西和山**啊**西李小龙和成龙"; // 构造测试文本

        DicSensitive dicSensitive = new DicSensitive();
        // 支持高度命中:"北京"
        dicSensitive.add(HitMode.HIGH, "北京");
        // 支持高度命中:"北京海淀"
        dicSensitive.add(HitMode.HIGH, "北京海淀");
        // 支持高度命中:"河北",同时还要辅助命中:"廊坊", "张家口"
        dicSensitive.add(HitMode.HIGH, "河北", new String[] {
   "廊坊", "张家口"});
        // 支持高度命中:"乌鲁木齐"
        // 支持中度命中:"乌鲁**木齐" "乌鲁@#木齐"等等
        dicSensitive.add(HitMode.MIDDLE, "乌鲁木齐");
        // 支持高度命中:"呼和浩特",同时还要辅助命中: "新疆"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羲圣

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值