在用户帐号体系中,每个用户都会设置一个彰显自己个性的用户昵称,这些用户输入的昵称中有些词是敏感词,不可以使用,那么就需要对用户的昵称进行过滤去除其中的关键词,这样就涉及下面几个细节:
其中核心功能点:初始化、敏感词查找、匹配策略、用户输入
初始化:将关键词读入内存中,并按照预先设计的数据结构进行初始化,而且初始化的最终目标是提高关键词查找的效率。
敏感词查找:精确匹配(文本全部与关键词完全匹配)、包含匹配(文本全部包含关键词匹配)
本文重点围绕初始化展开,在这方面比较常用的有:
String、Hash、Trie、Bloom Filer。
String
在关键词初期,可以将需要的关键词拼接成字符串,然后根据字符串进行查找,比如:strops、strstr等,不同的语言都提供了丰富的字符串函数。
Hash
该结构使用场景较多,也容易接受,所以不再展开介绍
Trie
是在上述Hash结构后的进一步优化,将关键词初始化为树型结构,当然比前面的实现方式也更复杂
Bloom Filter
之所以将Bloom Filter放到最后讲,是因为该算法有一定的错误率,所以需要根据实际要求进行选择。
参考资料: