SpringBoot从零开始的问答社区 (4)文本过滤-字典树

本文档介绍了如何使用字典树(Trie)数据结构来构建敏感词过滤系统,以提高文本过滤效率并保障社区的数据安全。在项目启动时自动加载敏感词库,并提供文本过滤方法,将敏感词替换为星号,同时提及了HTML注入的防护,推荐使用Spring的HTML过滤方法。
摘要由CSDN通过智能技术生成

在上一篇中,完成了首页的“问题列表”,经过测试,数据和页面都没有问题。然而这里有一个不容忽视的问题,那就是实际生产环境中“问题”将是由用户发出来的,UGC 可不会按照规矩来,这些文本中的坑,懂的都懂……最经典的问题就是 HTML 注入和敏感词,两者都会使社区的用户体验大大降低,前者还可能会造成数据安全问题,后者则可能涉及到法律问题,因此文本过滤是无论如何都非常有必要做的。

敏感词过滤

思考一下,需要被过滤的关键词数量是比较多的,而且其中的一些关键词比较相似。如果要到目标文本中一个个找关键词,必然需要多次遍历长文本,效率非常低,因此比较理想的做法是把关键词构建成一个树,只遍历文本一次就完成查找的任务。

字典树又称为单词查找树、前缀树,典型应用于统计、排序和保存大量的字符串,但不仅限于字符串,所以经常被搜索引擎系统用于文本词频统计。它的优点在于,利用字符串的公共前缀来减少查询时间,最大程度减少无谓的字符串比较,查询效率比哈希树高。看完这段百度百科对字典树的介绍,不难发现它是比较适合用于本场景下的敏感词检索的。

字典树

字典树是一种树形结构,它的基本性质为:

  • 根节点不包含字符,除根节点外每一个节点都只包含一个字符;
  • 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串;
  • 每个节点的所有子节点包含的字符都不相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值