天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

一個簡單的關鍵字過濾算法

早上看到老趙的《一個較完整的關鍵字過濾解決方案(上)》文章,講到怎樣在項目中嵌入過濾方案的問題,以及提到 xingdsumtec 兩位大師發表的系列互拼的文章,在此我也忍不住談談自己遇到的問題以及一個的簡化版的算法。

因為過濾關鍵字機制到處可見,于是聰明的網友就會想到各種各樣的方法突破,例如:

1、中文會用繁體字的方法避開關鍵字掃描
2、在關鍵字中間插入無意思的特殊字符,例如 * & # @ 等,而且個數可變
3、使用諧音或拆字法變換關鍵字

在實現自己的算法時也有些問題:

4、隨著時間推移,關鍵字列表會越來越大,有些論壇常用的正則表達式N次掃描的方法顯得效率很低。
5、關鍵字有不同的嚴重級別,有些需要禁止,有些只需要替換,還有一些可能記錄一下即可。


針對這些問題,可采用的應對方法:

1、加載關鍵字列表時,將所有的關鍵字轉換成繁體字一份,以掃描繁體版的關鍵字;
這個轉換工作只需一句就可以實現了:
s=Microsoft.VisualBasic.Strings.StrConv(word, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0);

2、在掃描原文本時,如果遇到關鍵字的首個文字,忽略其后的特殊字符,直到下一個有意義的文字為止,當然這里需要在定義關鍵字列表時指定哪些才需要這樣掃描,并不是所有關鍵字都采用這種方式;
例如有關鍵字 “你好”經常會被人輸入成“你x好”或者“你xxxxx好”,那么在關鍵字列表里就需要定義成“你*好”,在匹配關鍵字時,如果遇到星號就忽略原文本下一個為特殊的字符。

3、遇到諧音和拆字時,沒什么好辦法了,只好將這些諧音詞和拆分詞也加入到關鍵字列表。

4、不用正則表達式或者 String.IndexOf方法,可以將所有關鍵字的首字相同的組成一個一個小組,然后在將首字放到一個散列表(HashTable/Dictionary),在掃描原文本時先在散列表里掃描,如果碰到了首字再掃描同組的關鍵字,這樣簡單處理一下效率可以提高很多。

還有一個比用散列表更好的方法,將散列表改成一個大小為char.MaxValue的數組,然后將首個文字轉成int,即char->int,然后將關鍵詞集合放到相應下標里。這樣在掃描原文本時,將被掃描的字符轉成int,然后試探數組相應下標的元素是否不為NULL。這樣比用散列表會更快一些。

5、在定義關鍵字時,同時給一個“級別”屬性,例如使用 E,R,B分別表示只記錄、替換、禁止等情況。
于是關鍵字的列表如下所示:
你滾 E
他niang的 R
成*人*網*站 B

這里貼一下關鍵的部分代碼:

Code

NET技術一個簡單的關鍵字過濾算法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 伊人久久国产精品 | 999久久狠狠免费精品 | 草久热的视频在线观看 | 99精品免费观看 | 国内精品自产拍在线少密芽 | 日本69xxxx | 任你懆视频 这里只有精品 人与人特黄一级 | A级韩国乱理伦片在线观看 a级成人免费毛片完整版 | 婷婷综合亚洲爱久久 | 冰山高冷受被c到哭np双性 | 99热久久久无码国产精品性麻豆 | 最近中文字幕无吗免费高清 | 国产亚洲AV无码成人网站 | 萝莉御姐被吸奶 | 日韩人妻少妇一区二区三区 | 国产强奷糟蹋漂亮邻居在线观看 | 久久影院午夜理论片无码 | 欧美精品成人一区二区在线观看 | 中文字幕一区二区三区在线不卡 | 交换年轻夫妇HD中文字幕 | 精品人妻一区二区三区视频53 | 亚洲精品乱码电影在线观看 | 国产呦精品一区二区三区网站 | 扒开校花粉嫩小泬喷潮漫画 | 国产成人综合网在线观看 | 精品国产免费人成视频 | 欧美日韩一区在线观看 | 国产品无码一区二区三区在线 | 先锋资源av| 2020亚洲 欧美 国产 日韩 | 香港论理午夜电影网 | 国产精品一区二区在线观看 | 十九岁在线观看免费完整版电影 | 夜色伊甸园 | 午夜毛片在线观看 | 强开乳罩摸双乳吃奶视频 | 男女爽爽无遮挡午夜视频在线观看 | 中文字幕日本在线mv视频精品 | 中国欧美日韩一区二区三区 | 久久www99re在线播放 | 日本欧美高清一区二区视频 |