发明内容
本发明的主要目的在于公开了一种关键词过滤系统及其应用方法,以至少解决相关技术中基于软件内存进行关键词过滤时,当内存管理不当会造成内存泄漏,从而导致一定风险的问题。
根据本发明的一个方面,提供了一种关键词过滤系统。
根据本发明的关键词过滤系统包括:远程字典服务器(remote dictonaryserver,简称为Redis)内部设置有存储关键词算法库的第一存储器;关键词数据服务器,内部设置有存储关键词数据库的第二存储器;关键词加载装置,分别与上述远程字典服务器和上述关键词数据服务器相耦合;以及关键词管理服务器,分别与上述远程字典服务器和上述关键词数据服务器相耦合。
优选地,上述远程字典服务器和上述关键词加载装置设置有一组或多组。
优选地,上述远程字典服务器与上述关键词加载装置通过unix域协议或者传输控制协议耦合;上述关键词数据服务器和上述关键词加载装置通过分布式结构化查询语言mysql数据库使用的协议耦合;上述关键词管理服务器与上述远程字典服务器通过传输控制协议耦合,上述关键词管理服务器与上述关键词数据服务器通过分布式mysql数据库使用的协议耦合。
优选地,上述关键词过滤系统还包括:应用服务器和/或网页服务器,其中,上述应用服务器和/或网页服务器,与上述远程字典服务器相耦合。
优选地,上述关键词过滤系统包括应用服务器时,上述应用服务器与上述远程字典服务器通过unix域协议或者传输控制协议耦合。
优选地,上述关键词过滤系统包括网页服务器时,上述网页服务器与上述远程字典服务器通过传输控制协议耦合。
根据本发明的另一方面,提供了一种关键词过滤系统的应用方法。
根据本发明的关键词过滤系统的应用方法包括:远程字典服务器启动后运行关键词加载装置,以使的所述关键词加载装置将关键词数据服务器中的初始关键词信息以循环的方式通过命令加载到所述远程字典服务器的内存中;所述远程字典服务器接收来自于应用服务器或者网页服务器的需要过滤的内容;所述远程字典服务器执行过滤算法,对需要过滤的内容进行过滤并对于预定时间内的过滤内容进行统计,形成统计数据。
优选地,上述方法还包括:所述关键词管理服务器在维护所述关键词数据服务器的同时,将所述关键词数据服务器中的数据通过命令实时同步到所述远程字典服务器中。
优选地,在所述远程字典服务器对于预定时间内的过滤内容进行统计,形成统计数据之后,还包括:所述远程字典服务器将过滤后的结果反馈给所述应用服务器或者所述网页服务器。
优选地,在所述远程字典服务器对于预定时间内的过滤内容进行统计,形成统计数据之后,还包括:所述关键词管理服务器通过命令向所述远程字典服务器查询统计数据;所述关键词管理服务器接收来自于所述远程字典服务器的统计数据;所述关键词管理服务器获取所述统计数据后形成统计报表,以便于定期维护和重新设定关键词。
与现有技术相比,本发明实施例至少具有以下优点:使用集成有关键词算法库的远程字典服务器(以下称为Redis-censor-server)构建关键词过滤系统,Redis的协议属于文本协议,该协议本身不支持异步Pipeline(异步Pipeline一般通过消息的SeqID实现),解决了相关技术中基于软件内存进行关键词过滤时,当内存管理不当会造成内存泄漏,从而导致一定风险的问题,从而有效提高了可靠性。
具体实施方式
下面结合说明书附图对本发明的具体实现方式做一详细描述。
图2是根据本发明实施例的关键词过滤系统的结构框图。如图2所示,该关键词过滤系统包括:远程字典服务器20(Redis-censor-server),内部设置有存储关键词算法库的第一存储器200;关键词数据服务器(Censor-database)22,内部设置有存储关键词数据库的第二存储器220;关键词加载装置(Censor-loader)24,分别与上述远程字典服务器和上述关键词数据服务器22相耦合;以及关键词管理服务器(Censor-admin)26,分别与上述远程字典服务器20和上述关键词数据服务器22相耦合。
在图2所示的系统中,使用集成有关键词算法库(Libcensor)的远程字典服务器(以下称为Redis-censor-server)构建关键词过滤系统,Redis的协议属于文本协议,该协议本身不支持异步Pipeline(异步Pipeline一般通过消息的SeqID实现),解决了相关技术中基于软件内存进行关键词过滤时,内存管理不当造成内存泄漏,导致一定风险的问题,从而有效提高了可靠性。
优选地,上述关键词过滤系统中,上述远程字典服务器和上述关键词加载装置可以设置有一组或多组。图3示出了部署了1组远程字典服务器和关键词加载装置。在具体实施过程中,上述远程字典服务器和上述关键词加载装置可以部署在同一台计算机设备上。
在优选实施过程中,上述Censor-loader可以是开源的Redis服务器的Java语言客户端,Censor-loader在Redis-censor-server启动后会将关键词从数据库Censor-database逐条读取并同步到Redis-censor-server的内存中。
上述Censor-admin可以维护多组Redis-censor-server的词库同步;运营人员如果需要删除或添加新的关键词则通过Censor-admin进行Redis-censor-server和Censor-database的同步。
优选地,如图3所示,上述关键词过滤系统还可以包括:应用服务器(AppServer)和/或网页服务器(Web Server),其中,上述应用服务器和/或网页服务器,与上述远程字典服务器相耦合。
在优选实施过程中,可以在App Server上设置Java语言客户端,在WebServer上设置PHP语言客户端,用户通过应用服务器(App Server)和/或网页服务器(Web Server)上设置的客户端组件库对需要过滤的内容采用扩展的命令(wdetect)进行过滤。
在上述关键词过滤系统中,上述远程字典服务器与上述关键词加载装置通过unix域协议(Unix Domain Socket,简称为UDS)或者传输控制协议(Transmission Control Protocol,简称为TCP)耦合;上述关键词数据服务器和上述关键词加载装置通过分布式(microsoft structure quest language,简称为mysql)数据库使用的协议耦合;上述关键词管理服务器与上述远程字典服务器通过TCP耦合,上述关键词管理服务器与上述关键词数据服务器通过分布式mysql数据库使用的协议耦合。
上述关键词过滤系统包括App Server时,上述App Server与上述远程字典服务器通过unix域协议(UDS)或者传输控制协议耦合。其中,App Server与Redis-censor-server采用UDS通信时,需要将Redis-censor-server与AppServer部署在一台计算机上。
上述关键词过滤系统包括Web Server时,上述Web Server与上述远程字典服务器通过传输控制协议(TCP)耦合。
以下结合图3进一步描述上述优选实施方式。基于现有开源的Redis服务器,通过二次开发扩展其命令将关键词算法库(Libcensor)集成到Redis服务器内部,得到图3中所示的Redis-censor-server。通过Censor-loader将关键词数据库Censor-database中的数据加载到Redis-censor-server服务器中,部署多台Redis-censor-server服务器后客户端可通过扩展命令后的Phpredis,Jedis和Hiredis等常用开发语言客户端进行统一访问。此外可以通过扩展Redis命令进行关键词库的删除与增加进行关键词的实时发布,此部分可以通过Censor-admin来完成。以下分别对上述各组件进行描述:
Libcensor:使用标准c语言实现的算法库,Libcensor属于抽象层面的软件库,可以采用相关技术中实现基本过滤功能的算法库充当Libcensor,此组件也可以由具体的第三方提供,具有可替换性;
Redis-censor-server:通过二次开发扩展开源的Redis服务器而成为本系统的核心服务器,内部集成了关键词过滤算法Libcensor;
Censor-database:基于mysql的关键词数据库,可以是一个或多个关键词数据表,该关键词数据表的内容具体可以参见表1。
表1
GroupID |
WordText |
WordType |
IsPY |
20140722 |
测试1 |
1 |
0 |
20140722 |
测试2 |
0 |
0 |
20140723 |
ceshi3 |
1 |
1 |
… |
… |
… |
… |
在表1中,GroupID为关键词分组号,WordText为关键词,WordType标识出关键词的类型(0-敏感词,1-高危词),IsPY指示关键词内容是否是拼音。
Censor-loader:使用Java开发语言实现,主要作用为从Censor-database加载关键词来初始化Redis-censor-server;
Censor-admin:使用PHP语言实现的管理站点,用于关键词库的维护与关键词命中情况的统计;
Phpredis:开源的Redis服务器的PHP语言客户端,需要扩展命令;
Jedis:开源的Redis服务器的Java语言客户端,需要扩展命令;
Hiredis:开源的Redis服务器的C/C++语言客户端,需要扩展命令;
在具体实施过程中,可以根据系统规模部署多台高性能的Linux服务器作为关键词过滤的算法核心服务器使用,通过扩展Redis的各个客户端来提供多产品/多语言的支持。
对于Redis系列组件扩展的主要命令有:
wadd:用于增加关键词;
wremove:用于移除某个关键词;
wclear:全部移除关键词库;
wdetect:用于对文本进行关键词过滤;
wstat:用于统计关键词命中情况,以便运营人员实时设定词库。
图4是根据本发明优选实施例的关键词过滤系统的应用方法的流程图。如图4所示,该流程主要包括以下处理:
步骤S401:远程字典服务器启动后运行关键词加载装置,以使的上述关键词加载装置将关键词数据服务器中的初始关键词信息以循环的方式通过命令加载到上述远程字典服务器的内存中;
步骤S403:上述远程字典服务器接收来自于应用服务器或者网页服务器的需要过滤的内容;
步骤S405:上述远程字典服务器执行过滤算法,对需要过滤的内容进行过滤并对于预定时间内的过滤内容进行统计,形成统计数据。
在使用集成有关键词算法库(Libcensor)的远程字典服务器(以下称为Redis-censor-server)构建关键词过滤系统中,远程字典服务器执行关键词过滤,Redis的协议属于文本协议,该协议本身不支持异步Pipeline(异步Pipeline一般通过消息的SeqID实现),解决了相关技术中基于软件内存进行关键词过滤时,内存管理不当造成内存泄漏,导致一定风险的问题,从而有效提高了可靠性。
优选地,上述方法还可以包括以下处理:上述关键词管理服务器在维护上述关键词数据服务器的同时,将上述关键词数据服务器中的数据通过命令实时同步到上述远程字典服务器中。
优选地,在上述远程字典服务器对于预定时间内的过滤内容进行统计,形成统计数据之后,还可以包括以下处理:上述远程字典服务器将过滤后的结果反馈给上述应用服务器或者上述网页服务器。
优选地,在上述远程字典服务器对于预定时间内的过滤内容进行统计,形成统计数据之后,还可以包括以下处理:上述关键词管理服务器通过命令向上述远程字典服务器查询统计数据;上述关键词管理服务器接收来自于上述远程字典服务器的统计数据;上述关键词管理服务器获取上述统计数据后形成统计报表,以便于定期维护和重新设定关键词。
以下结合图5进一步描述上述优选实施过程。
图5是根据本发明优选实施例的关键词过滤系统的应用方法的信息交互流程图。如图5所示,该信息交互流程主要包括以下处理:
步骤S501:关键词过滤系统中的核心服务器远程字典服务器Redis-censor-server通过脚本启动后会运行关键词加载装置Censor-loader,Censor-loader将关键词数据服务器Censor-database中的初始关键词信息以循环的方式通过命令(例如:wadd命令)加载到Redis-censor-server的内存中。
步骤S503:运营人员通过Censor-admin管理界面增加/删除关键词,或清空关键词,Censor-admin在维护Censor-database的同时通过wadd,wremove,wclear等命令实时同步到Redis-censor-server。
步骤S505:用户通过WebServer或者AppServer中扩展后的Redis客户端组件库将需要过滤的内容发送至Redis-censor-server。
其中,WebServer与AppServer完全对等,只是工程部署角色不同。
步骤S507:核心服务器Redis-censor-server执行过滤算法,对需要过滤的内容进行过滤并对于一定时间内的过滤内容进行统计,包括某个关键词命中次数与命中的具体情况,形成统计数据。
步骤S509:核心服务器Redis-censor-server将过滤后的结果反馈给WebServer或者AppServer。
步骤S511:Censor-admin通过命令(例如,wstat命令)向核心服务器Redis-censor-server查询统计数据。
步骤S513:核心服务器Redis-censor-server将统计数据发送给Censor-admin,Censor-admin获取此统计数据后形成统计报表,以便于运营人员根据统计报表定期维护和重新设定关键词。
需要说明的是,步骤S501是系统启动步骤,步骤S503是系统维护步骤,步骤S505至步骤S509是系统内容过滤步骤,步骤S511至步骤S513是系统统计分析步骤。步骤S503与其他步骤没有时间执行先后关系,即步骤S503可以在其他步骤执行前执行,也可以在其他步骤执行后执行。
由此可见,上述系统可为业务系统提供高性能的关键词服务,实现成本较低,便于系统人员或运营人员维护和管理。此外,上述系统还支持多语言和多产品。
综上所述,借助本发明提供的上述实施例,使用集成有关键词算法库(Libcensor)的远程字典服务器(Redis-censor-server)构建关键词过滤系统,Redis的协议属于文本协议,该协议本身不支持异步Pipeline(异步Pipeline一般通过消息的SeqID实现),解决了相关技术中基于软件内存进行关键词过滤时,内存管理不当造成内存泄漏,导致一定风险的问题,从而有效提高了可靠性。在本系统中,即使Redis-censor-server宕机,在跳过关键词检查的情形下,业务应用服务器也不会受到影响,因而不会涉及服务器进程的重新启动,保证了业务的正常进行。此外,上述系统还支持多语言和多产品,有利于系统的横向扩展。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。