后面办法对很多关键词仍有较好的效率。 首先,关键词大多是2字到5字。 后面说法均以这个为基础,如果有更多字另算。 2字、3字、4字、5字各生成一个敏感词哈希表。 后面分开写了,合成一个数组也可以。 var ban2:Object = {某马:true,屏蔽:true,啦啦:true}; var ban3:Object = {某个马:true,三个字:true,啦啦啦:true,小广告:true}; var ban4:Object = {某个坏银:true,四个字符:true,哈哈哈哈:true,就爱凤姐:true}; var ban5:Object = {某个大法好:true,五个敏感字:true}; 根据上面4组敏感词,自动生成以下索引 生成规则为,索引名是敏感词第一个字,值是一个int 该int的规则为,第i位为1表示上面4表存在长度为i的敏感词,否则不存在长度为i的敏感词 var index:Object = {二:0x04,三:0x08,四:0x10,五:0x20,某:0x3c,啦:0x0c,哈:0x10,小:0x08,就:0x10}; 有一段如下文字,检验其是否包含敏感词: “我就打小广告,气死版主” 规则如下: 1,逐字检验,是否该字在index索引表中。 2,如果不在表中,继续检验 3,如果在表中,根据索引表该键的值,取此字以及此字后的若干字检验详细表。 4,所谓“检测”某关键词str是否在索引表index的方法是,if(index[str]){} 检验例子 ——检测“我” |-不在索引表 ——检测“就” |-在索引表 |-“就”的索引值是0x10,表示有4字以“就”开头的敏感词 |-取“就”和后面的字共4个,组成“就打小广” |-查4字敏感词表,没有这项,继续 ——检测“打” |-不在索引表 ——检测“小” |-在索引表 |-索引值是0x08,表示有3字长度的敏感词 |-取“小”和“小”后面的字,共3个字组成一个词“小广告” |-“小广告”在3字敏感词中,此帖包含敏感词,禁止发布 |
敏感词检测
最新推荐文章于 2023-10-27 10:15:41 发布