• 大小: 14KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Java
  • 标签: 敏感词  广告词  过滤  

资源简介

1、匹配大小写过滤 2、匹配全角半角过滤 3、匹配过滤停顿词过滤。 例如: 解析问题: 你是逗比吗? 解析字数 : 33 加载时间 : 325928565ns 加载时间 : 325ms 解析时间 : 330260250ns 解析时间 : 330ms 你是逗比吗?****!****,你竟然用***,********* 是否包含敏感词: true 解析时间 : 149028ns 解析时间 : 0ms

资源截图

代码片段和文件信息

package org.andy.sensitivewdfilter;

/**
 * 创建时间:2016年8月30日 下午2:57:10
 * 
 * @author andy
 * @version 2.2
 */
public class FilterSet{

private final long[] elements;


public FilterSet() {
 elements = new long[1 + (65535 >>> 6)];
}

public void add(final int no) {
elements[no >>> 6] |= (1L << (no & 63));
}

public void add(final int... no) {
for(int currNo : no)
elements[currNo >>> 6] |= (1L << (currNo & 63));
}

public void remove(final int no) {
elements[no >>> 6] &= ~(1L << (no & 63));
}

/**
 * 
 * @param no
 * @return true:添加成功 false:原已包含
 */
public boolean addAndNotify(final int no) {
int eWordNum = no >>> 6;
long oldElements = elements[eWordNum];
elements[eWordNum] |= (1L << (no & 63));
boolean result = elements[eWordNum] != oldElements;
// if (result)
// size++;
return result;
}

/**
 * 
 * @param no
 * @return true:移除成功 false:原本就不包含
 */
public boolean removeAndNotify(final int no) {
int eWordNum = no >>> 6;
long oldElements = elements[eWordNum];
elements[eWordNum] &= ~(1L << (no & 63));
boolean result = elements[eWordNum] != oldElements;
return result;
}

public boolean contains(final int no) {
        return (elements[no >>> 6] & (1L << (no & 63))) != 0;
    }

public boolean containsAll(final int... no) {
if(no.length==0)
return true;
for(int currNo : no)
if((elements[currNo >>> 6] & (1L << (currNo & 63))) == 0)
return false;
return true;
}

/**
 * 不如直接循环调用contains
 * @param no
 * @return
 */
public boolean containsAll_ueslessWay(final int... no) {
long[] elements = new long[this.elements.length];
for(int currNo : no){
elements[currNo >>> 6] |= (1L << (currNo & 63));
}//这一步执行完跟循环调用contains差不多了

for (int i = 0; i < elements.length; i++)
if ((elements[i] & ~this.elements[i]) != 0)
return false;
return true;
}

/**
 * 目前没有去维护size,每次都是去计算size
 * @return
 */
public int size() {
int size = 0;
for (long element : elements)
size += Long.bitCount(element);
return size;
}

public static void main(String[] args) {
FilterSet oi = new FilterSet();
System.out.println(oi.elements.length);
}

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-08-31 11:28  sensitivewd-filter\
     文件        2239  2016-08-30 21:13  sensitivewd-filter\pom.xml
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\java\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\java\org\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\java\org\andy\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\
     文件        2396  2016-08-30 21:11  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\FilterSet.java
     文件        5807  2016-08-31 10:56  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\WordFilter.java
     文件        1675  2016-08-30 21:11  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\WordNode.java
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\util\
     文件        3502  2016-08-30 21:11  sensitivewd-filter\src\main\java\org\andy\sensitivewdfilter\util\BCConvert.java
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\main\resources\
     文件         179  2016-08-30 15:39  sensitivewd-filter\src\main\resources\stopwd.txt
     文件        6119  2016-08-30 16:42  sensitivewd-filter\src\main\resources\wd.txt
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\java\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\java\org\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\java\org\andy\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\java\org\andy\sensitivewdfilter\
     目录           0  2016-08-31 11:28  sensitivewd-filter\src\test\java\org\andy\sensitivewdfilter\test\
     文件        1061  2016-08-31 10:44  sensitivewd-filter\src\test\java\org\andy\sensitivewdfilter\test\TestSensitiveWdFilter.java
     目录           0  2016-08-31 11:29  sensitivewd-filter\src\test\resources\

评论

共有 条评论