数据发送方法及服务器应用、计算设备及计算机可读介质与流程

文档序号:15736932发布日期:2018-10-23 21:38阅读:156来源:国知局

本申请涉及互联网数据处理技术领域,特别涉及一种数据发送方法及 服务器应用,一种关键词查找树的获取方法及客户端应用,计算机可读 介质,计算设备以及用户界面交互设备。



背景技术:

随着互联网技术的发展,各种与外界交流的客户端,例如,即时通信 软件、电子邮箱等等,在用户日常生活中的应用越来越普遍。为了避免 用户在与外界交流的过程中,使用一些关键词,例如,暴恐等不利于公 共安全的词汇。一般情况下,客户端都具有将用户输入的文本与预先设 定的关键词库进行匹配,进而确定用户输入的待匹配文本中是否存在关 键词的功能。

在现有技术中,服务器直接将关键词库发送至客户端,由客户端接收 到关键词库后进行保存,以便后续进行文本匹配。



技术实现要素:

但是发明人在研究过程中发现,客户端接收服务器发送的关键词库 时,关键词库很可能被第三方恶意获取到,即便关键词库在传输过程中 进行加密,加密后的关键词库也很容易被解密,因此现有技术中关键词 库被泄露的风险很大,存在关键词库传输的安全性低的缺点。

而发明人在研究过程中还发现,客户端根据关键词库生成关键词查 找树的耗时较长,客户端基于关键词查找树将用户输入的待匹配文本进 行匹配的速度较慢。

基于此,本申请提供了一种数据发送方法,该方法应用于服务器上, 由服务器根据关键词库生成关键词查找树后,再将关键词查找树进行处 理后发送至客户端。因为服务器发送的是关键词查找树而非关键词库, 所以即便关键词查找树被第三方恶意获取到,也无法直接从关键词查找 树得到关键词库,因此,发送关键词查找树的安全性得到了提升。与此 同时,本申请提供了一种关键词查找树的获取方法,该方法应用于客户 端上,客户端接收服务器发送的关键词查找树,以便后续直接将用户输 入的待匹配文本与关键词查找树进行匹配,进而确定用户输入的待匹配 文本中是否存在关键词。

本申请还提供了一种服务器应用和一种客户端应用,计算机可读介 质,计算设备和用户界面交互设备,用以保证上述方法在实际中的实现 及应用。

为了解决上述问题,本申请公开了一种数据发送方法,该方法应用于 服务器上,该方法包括:

获取关键词库;

依据所述关键词库包括的各关键词,生成关键词查找树;

将所述关键词查找树作为目标数据发送至客户端。

本申请实施例还公开了一种关键词查找树的获取方法,该方法应用于 客户端上,该方法包括:

接收服务器发送的目标数据,所述目标数据包括关键词查找树;

从所述目标数据中获取所述关键词查找树。

本申请实施例还提供了一种服务器应用,包括:

第一获取单元,用于获取关键词库;

生成单元,用于依据所述关键词库包括的各关键词,生成关键词查找 树;

发送单元,用于将所述关键词查找树作为目标数据发送至客户端。

本申请实施例还提供了一种客户端应用,包括:

接收单元,用于接收服务器发送的目标数据;

第二获取单元,用于从所述目标数据中获取关键词查找树。

本申请实施例还提供了一种计算设备,包括:处理器、存储器、网 络接口和总线系统;

所述总线系统,用于将所述计算设备的各个硬件组件耦合在一起;

所述网络接口,用于实现所述计算设备与至少一个其它计算设备之 间的通信连接;

所述存储器,用于存储程序指令和/或数据;

所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以 下操作:

获取关键词库;依据所述关键词库包括的各关键词,生成关键词查找 树;将所述关键词查找树作为目标数据发送至客户端。

本申请实施例还提供了一种计算设备,包括:处理器、存储器、网 络接口和总线系统;

所述总线系统,用于将所述计算设备的各个硬件组件耦合在一起;

所述网络接口,用于实现所述计算设备与至少一个其它计算设备之 间的通信连接;

所述存储器,用于存储程序指令和/或数据;

所述处理器,用于读取所述存储器中存储的指令和/或数据,执行以 下操作:

接收服务器发送的目标数据;从所述目标数据中获取关键词查找树。

本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储 有使计算机执行用于数据发送的程序,该处理包括以下步骤:

获取步骤,其获取关键词库;

生成步骤,其依据所述关键词库包括的各关键词,生成关键词查找 树;

发送步骤,其将所述关键词查找树作为目标数据发送至客户端。

本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储 有使计算机执行用于关键词查找树的获取程序,该处理包括以下步骤:

接收步骤,其接收服务器发送的目标数据,所述目标数据包括关键词 查找树;

获取步骤,其从所述目标数据中获取所述关键词查找树。

本申请实施例还提供了一种用户界面交互设备,其特征在于,包括:

第一交互模块,用于在接收第一触发指令后,向处理器转发所述第 一触发指令,以便处理器获取关键词库;

第二交互模块,用于接收第二触发指令,并向处理器转发所述第一 触发指令,以便接收处理器发送的关键词查找树并显示所述关键词查找 树,所述关键词查找树为处理器基于所述关键词库生成;

第三交互模块,用于接收第三触发指令,并向处理器转发所述第三 触发指令,以便处理器将所述关键词查找树作为目标数据发送至客户端;

其中,所述关键词查找树由处理器按照下述方式生成:获取各关键词 包括的各单字之间的节点关系,所述节点关系用于表示各关键词包括的 多个单字之间的单字顺序;依据所述节点关系生成所述各关键词的关键 词查找树。

本申请实施例还提供了一种用户界面交互设备,包括:

第四交互模块,用于在接收第四触发指令后,向处理器转发所述第 四触发指令,以便处理器接收服务器发送的目标数据,所述目标数据包 括关键词查找树;

第五交互模块,用于接收第五触发指令,并向处理器转发所述第五 触发指令,以便处理器从所述目标数据中获取所述关键词查找树并显示 所述关键词查找树。

与现有技术相比,本申请实施例包括以下优点:

在本申请实施例中,服务器首先根据关键词库生成具有匹配功能的 关键词查找树,然后,将此关键词查找树发送至客户端,即使在传输的 过程中关键词查找树被泄露或被不法分子截获,由于根据关键词查找树 很难逆向确定出关键词库,因此,采用本申请实施例的方法提高了关键 词库的传输安全性。

同时,在客户端接收到关键词查找树后,直接将用户输入的待匹配 文本与关键词查找树进行匹配,不仅节省了现有技术中生成关键词查找 树的时间,使得客户端能够直接依据关键词查找树对用户输入的待匹配 文本进行关键词匹配,匹配的速度得到了提高。

当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有 优点。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述 中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创 造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请在实际应用中的场景架构图;

图2a是本申请的一种数据发送方法实施例的流程图;

图2b是本申请生成的一颗关键词查找树的示例性示意图;

图2c是本申请生成一颗关键词查找树的过程示例性示意图;

图3是本申请的一种关键词查找树的获取方法实施例的流程图;

图4是本申请的一种服务器应用实施例的结构框图;

图5是本申请的一种客户端应用实施例的结构框图;

图6是本申请的一种计算设备的硬件结构示意图;

图7是本申请的另一种计算设备的硬件结构示意图;

图8a是本申请的一种交互设备的屏幕展示示意图;

图8b是本申请的一种交互设备展示的关键词查找树的示意图;

图9a是本申请的另一种交互设备的屏幕展示示意图;

图9b是本申请的另一种交互设备展示的关键词查找树的示意图;

图9c是本申请的另一种交互设备展示匹配结果的示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案 进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实 施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本 申请保护的范围。

参考图1,示出了根据本申请一个实施例提供的应用架构图,服务器101与客户端102之间进行通信,首先,服务器101根据关键词库生成具 有匹配关键词功能的关键词查找树,然后,服务器将此关键词查找树进 行序列化(即将关键词查找树转换为可以存储或者传输的数据的过程) 和加密,并将加密后的关键词查找树发送至客户端102。客户端102首先 对接收到加密后的关键词查找树进行解密以及反序列化后,得到具有匹 配关键词功能的关键词查找树;然后,将用户输入的待匹配文本与关键 词查找树进行匹配,进而确定出用户输入的待匹配文本中是否存在关键 词。

参考图2a,示出了本申请一种数据发送方法实施例的流程图,该方 法可以应用于服务器上,本实施例可以包括以下步骤:

步骤201:获取关键词库。

在本实施例中,服务器可以从关键词词库维护系统中来获取关键词 库,在此关键词库中包含了各种关键词,并且该关键词一般都是一些敏 感词,例如,暴恐、黄色的词语。

步骤202:依据所述关键词库包括的关键词,生成关键词查找树。

在服务器获取关键词库后,接着依据获取的关键词库包括的关键词, 生成关键词查找树,具体生成关键词查找树的过程可以包括步骤A1~步 骤A2:

步骤A1:获取各关键词包括的各单字之间的节点关系,所述节点关 系用于表示各关键词包括的多个单字之间的单字顺序。

在本实施例中,服务器获取的关键词库中包含了多个关键词,一般 情况下,每个关键词都有多个单字组成,单字可以是单个的英文字符或 者单个的中文汉字等。

因此,各关键词中的各单字具有一定的先后顺序。例如,关键词库 中的关键词“法轮功”,由“法”、“轮”、“功”这三个单字组成,并且这三个 单字的先后顺序依次为“法”、“轮”、“功”。在本实施例中,将关键词中各 单字的先后顺序用节点关系来表示,具体的,由于关键词“法轮功”中单字 “轮”在单字“法”的后面,将单字“轮”称为单字“法”的子节点,同理,将单 字“功”称为单字“轮”的子节点。按照这种方法,关键词库中各关键词中的 各单字都存在节点关系。

步骤A2:依据所述节点关系生成所述关键词的关键词查找树。

在获取关键词库中各关键词中各单字及其对应的节点关系后,接着, 可以根据各关键词中的单字对应的节点关系生成关键词库中所有关键词 所对应的一颗关键词查找树。参考图2b所示即为采用关键词“法轮功”、 “法力”与“天安门”生成的关键词查找树。在图2b中采用了拼音的保存 形式进行举例说明,而在实际应用中,本领域技术人员可以采用拼音、 中文字符或者其他能够唯一确定一个关键词的字符,来作为关键词查找 树的节点进行保存。

具体的,步骤A2中依据各关键词中的单字所对应的节点关系,生成 关键词查找树的过程可以包括步骤B1~步骤B5:

步骤B1:为关键词查找树生成根节点,所述根节点作为初始节点。

在依据关键词的节点关系生成关键词查找树时,首先为关键词查找树 生成根节点,具体的,在本实施例中,为关键词查找树生成的根节点为 一个无任何单字的空节点,此空节点表示将用户输入的待匹配的文本与 关键词查找树进行匹配的开始,并将根节点作为生成关键词查找树的初 始节点。所述根节点可以作为生成关键词查找树的初始节点。参考图2c 左上角所示即为关键词查找树的根节点,由于在本实施例中根节点为一 个无任何单字的空节点,所以图2c左上角用一个空心圆来表示根节点。

步骤B2:依据所述单字顺序获取各关键词的第一个单字作为初始单 字。

在本实施例中,为了在生成关键词查找树的过程中,方便描述各关键 词间的节点关系,先将生成的根节点确定为初始节点,并将放在初始节 点后面且接挨着初始节点的单字称为初始节点的子节点。具体的,第一 次确定初始节点的子节点时,首先需要获取各关键词所包含的单字中的 第一个单字,并将各关键词的第一个单字作为初始单字。

例如,关键词库中存在关键词“法轮功”、“天安门”与“法力”,在本步 骤中,将这三个关键词中的第一个单字“法”、“天”,“法”作为初始单字。 在关键词库中除了“法轮功”、“天安门”与“法力”外,还有其他的关键词, 对于其他的关键词,同样将第一个单字作为初始单字。

步骤B3:对所述初始单字进行去重处理,得到各关键词的、互不相 同的目标单字,以及,分别将互不相同的目标单字作为所述初始节点的 各个子节点,生成初始查找树。

在一般情况下,关键词库中具有较多的关键词,有时多个关键词的初 始单字相同,因此,在本步骤中,需要对确定出各关键词的初始单字进 行去重处理,并将各关键词的初始单字去重后得到的互不相同的单字称 为目标单字。接着,将各互不相同的目标单字都作为初始节点的子节点 得到初始查找树。此时,初始节点同时具有多个子节点,并且多个子节 点间互称为兄弟节点。

例如,步骤B2中,初始单字“法”、“天”,“法”中就存在两个“法”, 表明初始单字中存在重复的单字,因此,在本步骤中将两个单字“法”只保 留一个,此时,初始单字变为“法”、“天”,将“法”、“天”作为初始节点的 子节点,同时,“法”、“天”是兄弟节点。此时,初始节点与“法”、“天”等 子节点构成了初始查找树。参考图2c的右上角所示即为采用关键词“法轮 功”、“天安门”与“法力”生成的初始查找树。在该初始查找树中,根节点 的子节点仅有两个“fa”和“tian”,这两个子节点分别对应了互不相同的 两个目标单字“法”和“天”。当然,图2c中仅仅以三个关键词为例进行 说明及示意,在实际应用中,无论关键词库中有多少关键词,都可以采 用本步骤所示的方式进行去重处理,从而得到根节点的子节点。

步骤B4:按照所述单字顺序获取各所述目标单字相邻的各后续单字。

对各关键词的第一个单字进行去重后得到了多个目标单字,在本步 骤中,接着获取各目标单字后相邻的单字,即获取各关键词的第二个单 字,以及各关键词的第三个单字,以此类推,获取各关键词的各后续单 字。

例如,关键词“法轮功”、“天安门”与“法力”中第二个关键词分别是 “轮”、“安”、“力”,第三个单字分别为“功”与“门”。

步骤B5:将所述各后续单字作为初始单字,以及所述初始节点的各 个子节点作为初始节点,执行所述对所述初始单字进行去重处理,直至 所述关键词库中的所有关键词都处理完毕,得到关键词查找树。

将初始节点的各子节点分别作为初始节点,将目标单字后面相邻的 单字作为初始单字,按照步骤B3所述的方法,对初始单字进行去重处理, 将得到的互不相同的单字作为目标单字,将目标单字作为各初始节点的 子节点。以此类推,直至关键词库中的各关键词的最后一个单字都作为 子节点后,得到了关键词查找树。

例如,将关键词“法轮功”、“天安门”与“法力”中的“法”、“天”都作为 初始节点,将这三个关键词中的第二个单字“轮”、“安”与“力”作为初始单 字进行去重处理,得到“轮”、“安”、“力”三个单字,由于三个单字中的“轮”、 “力”在关键词中都与初始节点“法”相邻,所以,将“轮”、“力”称为初始节 点“法”的子节点;同理将“安”称为初始节点“天”的子节点。

参考图2c的右下角所示即为将初始查找树中“fa”、“tian”作为初始 节点,“lun”与“li”分别对应互不相同的目标单字“轮”与“力”,并作 为作为初始节点“fa”的子节点,“an”对应了目标单字“安”,并作为初 始节点“tian”的子节点,从而得到的初始查找树。接着,按照同样的方 法,将“轮”、“安”、“力”都作为初始节点,将三个关键词中的第三个单字 “功”、“门”作为初始单字进行去重处理得到“功”、“门”,将“功”、“门”称 为目标单字。由于在关键词中“功”与初始节点“轮”相邻,所以将“功”作为 初始节点“轮”的子节点;同理,将“门”作为初始节点“安”的子节点。以此 类推,直至关键词库中的所有关键词的最后一个单字都作为对应的前一 单字的子节点。

参考图2c的左下角所示即为将“lun”、“li”与“an”作为初始节点, “gong”对应目标单字“功”,并作为初始节点“lun”的子节点,“men” 对应目标单字“门”,并作为初始节点“an”的子节点,得到的关键词查 找树。此时,关键词“法轮功”、“天安门”与“法力”的关键词查找树 生成完毕。当然,图2c中仅仅以三个关键词为例进行说明及示意,在实 际应用中,无论关键词库中有多少关键词,都可以采用本步骤所示的方 式,在初始查找树的基础上,寻找初始节点的子节点,直至所有的关键 词中的最后一个单字作为子节点,进而生成关键词查找树。

需要说明的是,图2c只是为了示意生成关键词查找树的过程,将关 键词中单字对应的汉语拼音作为关键词查找树中的节点。在实际生成关 键词查找树时,不限于只采用关键词中单字对应的汉语拼音作为关键词 查找树的节点,还可以采用其他的形式,例如,单字对应的英文单词等。 按照步骤B1~步骤B5执行后,得到了各关键词中每一个单字都是其前一 个单字的子节点,在计算机中可以通过有限状态自动机(Deterministic Finite Automaton,DFA)来表示关键词库中各关键词中单字间的节点关 系。在实际中,有限状态自动机具有多种形式,本实施例采用其中的二 数组Trie(Double-Array Trie)来表示有限状态自动机。其中,二数组Trie 中包括base和check两个数组,base数组中的每个元素表示一个Trie节 点,即一个状态;check数组表示某一状态的前驱状态,即某个节点的前 驱节点。

具体的,在本实施例中,从计算机程序方面,根据关键词库中各关 键词中各单字的节点关系来生成关键词查找树,即二数组Trie的具体过 程可以包括步骤C1~步骤C5:

步骤C1:初始化代表状态的数组base[],和,表示前驱状态的数组 check[],数组base[]与数组check[]的数组类型均为int[],并且,数组base[] 的初始值设为1,即base[0]=1,数组check[]的初始值设置为0,即 check[0]=0。

步骤C2:由于关键词库中各关键词中第N个单字互称为是兄弟节点, 在本步骤中,对于每一群兄弟节点,例如[a1,a2,a3,…,an],寻找一 个begin值,使得check[begin+a1+…+an]=0,即寻找n个空闲空间来存放 这些兄弟节点。

步骤C3:在寻找到兄弟节点的存储空间后,将各兄弟节点的check 值设置为check[begin+an]=begin。

步骤C4:判断各兄弟节点是否存在子节点,若存在,则在兄弟节点 下插入子节点,若不存在,则将兄弟节点的base值设置为负值。

在本步骤中,若兄弟节点存在子节点时,在兄弟节点下插入子节点 的过程为,将兄弟节点的base值作为begin值,接着按照步骤C2所述的 动作,寻找存放兄弟节点的子节点的空间。

步骤C5:将各子节点分别作为兄弟节点,接着执行步骤C4,直至关 键词库中的所有关键词中的所有单字都插入完毕,此时,有限状态自动 机即关键词查找树生成完毕。

步骤203:将所述关键词查找树作为目标数据发送至客户端。

在关键词查找树生成后,即二数组Trie生成后,需要将其发送至客 户端,由于生成的二数组Trie不能直接传输,因此,需要将生成的二数 组Trie进行序列化,即将对象的状态信息转化为可以传输或者存储的形 式的过程。

在本步骤中,首先对生成的二数组Trie进行序列化,例如,如果选 择使用Java实现,可以采用JDK或者其他框架来实现,得到字节数组; 接着,对字节数组按照预设的加密算法进行加密,例如,采用RSA非对 称加密算法或者AES对称加密算法,对字节数组进行加密得到目标数据; 在得到目标数据后,将该目标数据发送至客户端。

需要说明的是,在本实施例中,可以不对字节数组进行加密,直接 将字节数组作为目标数据发送至客户端。

在本实施例中,还可以包括步骤204:存储字节数组。

为了方便向客户端发送字节数组,可以将字节数组先进行存储,例 如,存储在本地磁盘或者数据库中,以后在需要向客户端发送该字节数 组时,直接从存储器中获取再发送即可,本实施例中,将字节数组在本 地磁盘中。在实际中,还可以存储加密后的字节数组,具体存储方式与 存储未加密的字节数组相同,这里不再赘述。

通过本实施例,服务器首先根据关键词库生成关键词查找树,然后, 将此关键词查找树发送至客户端,即使在传输的过程中关键词查找树被 泄露或被不法分子截获,由于根据关键词查找树很难逆向确定出关键词 库,因此,在传输的过程中提高了关键词查找树的传输安全性。

参考图3,示出了本申请一种关键词查找树的获取方法实施例的流程 图,本实施例可以应用于客户端,本实施例可以包括以下步骤:

步骤301:接收服务器发送的目标数据,所述目标数据包括关键词查 找树。

客户端在进行关键词匹配之前,需要先接收服务器发送的目标数据, 此目标数据是服务器对关键词查找树进行序列化得到的字节数组,或者 是加密后的字节数组。

步骤302:从所述目标数据中获取所述关键词查找树。

客户端接收服务器发送的目标数据后,从目标数据中获取关键词查找 树。具体的,客户端按照服务端提供目标数据的方式来获取目标数据中 的关键词查找树。例如,若客户端接收到的目标数据是字节数组,客户 端直接对字节数组进行反序列化,即可获取目标数据中的关键词查找树。

若客户端接收的目标数据是加密后的字节数组,例如,目标数据是封 装的SDK,该封装的SDK解密方式是对客户端透明的,客户端直接按照 解密方式对该封装的SDK进行解密,得到字节数组,接着对该字节数组 进行反序列化,得到关键词查找树。

在不同的实施例中,在步骤302获取到关键词查找树之后,还可以 包括:

步骤303:响应于输入待匹配的文本,依据所述关键词查找树对所述 待匹配的文本进行关键词匹配。

客户端在获取关键词查找树后,当用户输入待匹配的文本时,客户 端依据获取的关键词查找树对用户输入的待匹配的文本进行关键词匹 配。具体的匹配过程可以包括步骤D1~步骤D2:

步骤D1:获取所述待匹配文本中各单字及各单字之间的输入顺序。

随着用户在客户端中输入待匹配的文本的过程,客户端时刻获取用户 输入的各单字及各单字之间的输入顺序。例如,用户输入“法轮功大法” 的单字,随着用户的输入,客户端获取到用户输入的各个单字,以及各 个单字的输入顺序。

步骤D2:依据所述各单字的输入顺序,判断所述待匹配的文本中是 否存在所述关键词查找树中的关键词。

根据用户输入的各单字的顺序,客户端判断用户输入的待匹配文本中 是否存在关键词查找树中的关键词,具体的过程可以包括步骤E1~步骤 E3:

步骤E1:响应于输入的第一个单字,获取所述第一个单字作为初始 单字,所述关键词查找树的根节点作为初始节点。

在用户输入第一个单字时,客户端获取用户输入的第一个单字,并将 此第一个单字作为初始单字,将关键词查找树的根节点作为初始节点, 关键词查找树的根节点为一空节点,表示匹配的开始,此时,将关键词 查找树的根节点作为初始节点,表示开始对用户输入的单字进行匹配。

步骤E2:判断所述初始节点的子节点中是否存在所述初始单字,如 果是,则将所述初始单字对应的子节点作为目标节点。

在客户端获取到用户输入的第一个单字,并且将关键词查找树的根节 点作为初始节点后,将该第一个单字与关键词查找树中初始节点的各子 节点依次进行比较。在将初始单字与各子节点依次进行比较的过程中, 每比较一个子节点都会根据比较结果判断初始节点的子节点中是否存在 初始单字,若比较结果相同,则表明初始节点的子节点中存在初始单字; 若初始节点的所有子节点都比较后,没有与初始单字相同的子节点,则 表明初始节点的子节点中不存在初始单字,即以用户输入的第一个单字 为首单字的词语,不是本申请关键词查找树中的关键词。

若初始节点的子节点中存在初始单字,则将该初始单字对应的子节点 作为目标节点,接着进入步骤E3。若初始节点的子节点中不存在初始单 字,则将关键词查找树中的根节点作为目标节点,进入步骤E3。

例如,初始节点有10个子节点,客户端将初始单字依次与10个子节 点进行比较,每比较一个子节点都会判断一次该子节点是否与初始单字 相同,假设在比较第5个子节点后,判断得到该第5个子节点与初始单 字相同,此时,将该第5个子节点作为初始单字所对应的目标节点,接 着进入步骤E3。

若初始节点的10个子节点都与初始单字进行比较后,比较结果表示 各子节点与初始单字不相同,此时,将关键词查找树的根节点作为目标 节点,进入步骤E3,接着判断目标节点的子节点中是否存在用户输入的 第二个单字。

步骤E3:响应于输入的第二个单字,获取所述第二个单字作为初始 单字,所述目标节点作为初始节点,执行所述判断所述初始节点的子节 点中是否存在所述初始单字,直至所述关键词查找树中的任一目标节点 为结束节点。

在用户输入第二个单字后,客户端获取用户输入的第二个单字,将 此第二个单字作为初始单字,将步骤E2中的目标节点作为初始节点,接 着按照步骤E2的判断初始节点的子节点中是否存在初始单字的动作来执 行,以此类推,每按照步骤E2的动作执行一次后,都按照若初始节点的 子节点中存在初始单字,则将初始单字对应的子节点作为目标节点,若 初始节点的子节点中不存在初始单字,则将关键词查找树的根节点作为 目标节点的原则来确定目标节点。

只有在每次按步骤E2的动作执行后,初始节点的子节点中都存在初 始单字,直至关键词查找树中的任一结束节点作为目标节点的情况下, 才表明用户输入的待匹配的文本中存在关键词查找树所包括的关键词。 此时,关键词查找树中各个依次被确定为目标节点的子节点所对应的单 字组合起来,所组成的词就是匹配出的关键词。

如果客户端对用户输入的待匹配文本匹配出关键词查找树中的关键 词后,在步骤303之后还可以包括:依据所述关键词生成提示信息以便 展示,所述提示信息用于表示所述待匹配的文本中存在所述关键词查找 树中的关键词。

依据匹配到的关键词,客户端生成提示信息,此提示信息用以展示 给用户。例如,客户端匹配得到用户输入的待匹配文本中存在关键词“法 轮功”时,客户端生成一个提示信息展示给用户。例如,客户端的界面上 弹出一个提示框,提示框显示的内容为:“您要发送的文本中存在不能发 送的关键词,请对文本进行修改后再发送!”。

对于步骤E1~步骤E3所述的客户端对用户输入的待匹配的文本与二 数组Trie,即关键词查找树进行匹配的过程,在计算机中的具体实现过程 可以包括步骤F1~步骤F3:

步骤F1:将二数组Trie中的base[0]=1所对应的当前状态定义为参 数P,获取用户输入的单字串char中的每一个单字,接着进入步骤F2。

步骤F2:若当前单字为char[n],且n=1,判断二数组Trie中的数组 base[m]是否为0,若否,将当前状态对应的数组下标设置为 base[m]+char[n],接着进入步骤F3。

在本步骤中,若数组base[m]不为0,表示二数组Trie中存在当前单 字。

步骤F3:将用户输入的下一个单字char[n=n+1]作为当前单字,接着 执行步骤F2的动作,直至check数组中check[base[m]+char[n]]=m。

在本步骤中,客户端按照步骤F2的动作,继续判断二数组Trie中是 否存在当前单字,以此类推,直到check数组中check[base[m]+char[n]]=m 时,表示用户输入的单字串中存在二数组Trie中的关键词。

通过本实施例,在客户端接收到关键词查找树后,直接将用户输入 的待匹配文本与关键词查找树进行匹配,从而避免了确定关键词查找树 的具体实现形式,以及根据具体的实现形式生成关键词查找树的过程, 从而节省时间,使得客户端依据关键词查找树,对用户输入的待匹配文 本进行关键词匹配的速度提高。此外,由于客户端避免了生成关键词查 找树的过程,所以,克服了由生成关键词查找树所带来的占用大量临时 内存的缺点,进而减轻客户端系统的开销。

对于前述的方法实施例,为了简单描述,故将其都表述为一系列的 动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作 顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进 行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属 于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

与上述本申请一种数据发送方法实施例所提供的方法相对应,参见 图4,本申请还提供了一种服务器应用实施例,在本实施例中,该服务器 应用的组成可以包括:

第一获取单元401,用于获取关键词库;

生成单元402,用于依据所述关键词库包括的各关键词,生成关键词 查找树;

发送单元403,用于将所述关键词查找树作为目标数据发送至客户 端。

其中,生成单元402可以包括:

节点关系获取子单元,用于获取各关键词包括的各单字之间的节点关 系,所述节点关系用于表示各关键词包括的多个单字之间的单字顺序;

生成子单元,用于依据所述节点关系生成所述各关键词的关键词查找 树。

其中,生成子单元可以包括:

生成模块,用于为关键词查找树生成根节点,所述根节点作为初始节 点;

初始单字获取模块,用于依据所述单字顺序获取各关键词的第一个单 字作为初始单字;

去重模块,用于对所述初始单字进行去重处理,得到各关键词的、互 不相同的目标单字,以及,分别将互不相同的目标单字作为所述初始节 点的各个子节点,生成初始查找树;

后续单字获取模块,用于按照所述单字顺序获取各所述目标单字相邻 的各后续单字;

执行去重模块,用于将所述各后续单字作为初始单字,以及所述初始 节点的各个子节点作为初始节点,执行所述对所述初始单字进行去重处 理,直至所述关键词库中的所有关键词都处理完毕,得到关键词查找树。

其中,发送单元403可以包括:

序列化子单元,用于将所述关键词查找树进行序列化,得到字节数组;

加密子单元,用于对所述字节数组按照预设加密算法进行加密,得到 目标数据;

发送子单元,用于将所述目标数据发送至客户端。

通过本装置实施例,服务器首先根据关键词库生成关键词查找树,然 后,将此关键词查找树发送至客户端,即使在传输的过程中关键词查找 树被泄露或被不发分子截获,由于根据关键词查找树很难恢复出关键词 库,因此,在传输的过程中提高了关键词库的传输安全性。

与上述本申请一种关键词查找树的获取方法实施例所提供的方法相 对应,参见图5,本申请还提供了一种客户端应用实施例,在本实施例中, 该客户端应用的组成可以包括:

接收单元501,用于接收服务器发送的目标数据,所述目标数据包括 关键词查找树;

第二获取单元502,用于从所述目标数据中获取所述关键词查找树。

在不同的实施例中,所述客户端应用还可以包括:

匹配单元503,用于响应于输入待匹配的文本,依据所述关键词查找 树对所述待匹配的文本进行关键词匹配。

其中,匹配单元503可以包括:

单字及顺序获取子单元,用于获取所述待匹配文本中各单字及各单 字之间的输入顺序;

判断子单元,用于依据所述各单字的输入顺序,判断所述待匹配的 文本中是否存在所述关键词查找树中的关键词。

其中,判断子单元可以包括:

第一单字获取模块,用于响应于输入的第一个单字,获取所述第一 个单字作为初始单字,所述关键词查找树的根节点作为初始节点;

判断模块,用于判断所述初始节点的子节点中是否存在所述初始单 字,如果是,则将所述初始单字对应的子节点作为目标节点;

执行判断模块,用于响应于输入的第二个单字,获取所述第二个单 字作为初始单字,所述目标节点作为初始节点,执行所述判断所述初始 节点的子节点中是否存在所述初始单字,直至所述关键词查找树中的任 一目标节点为结束节点。

其中,第二获取单元502可以包括:

解密子单元,用于对所述目标数据按照预设解密算法进行解密运算, 得到字节数组;

反序列化子单元,用于对所述字节数组进行反序列化处理,得到所 述关键词查找树。

其中,如果所述待匹配的文本中存在所述关键词查找树中的关键词, 所述客户端应用还可以包括:

提示单元,用于依据所述关键词生成提示信息以便展示,所述提示 信息用于表示所述待匹配的文本中存在所述关键词查找树中的关键词。

本实施例的客户端接收到关键词查找树后,直接将用户输入的待匹 配文本与关键词查找树进行匹配,从而避免了确定关键词查找树的具体 实现形式,以及根据具体的实现形式生成关键词查找树的过程,从而节 省时间,使得客户端依据关键词查找树,对用户输入的待匹配文本进行 关键词匹配的速度提高。此外,由于客户端避免了生成关键词查找树的 过程,所以,克服了由生成关键词查找树所带来的占用大量临时内存的 缺点,进而减轻客户端系统的开销。

图6为本申请实施例中一种计算设备600的硬件结构示意图。计算 设备600可用于实现数据发送,例如可以是服务器。即计算设备600可 用于执行上述实施例中提供的方法。在本实施例中,计算设备600包括: 处理器601、存储器602、网络接口603和总线系统604。

所述总线系统604,用于将计算设备600的各个硬件组件耦合在一起。

所述网络接口603,用于实现计算设备600与至少一个其它计算设备 之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。

所述存储器602,用于存储程序指令和/或数据。

所述处理器601,用于读取存储器602中存储的指令和/或数据,执 行以下操作:

获取关键词库;

依据所述关键词库包括的各关键词,生成关键词查找树;

将所述关键词查找树作为目标数据发送至客户端。

其中,所述依据所述关键词库包括的各关键词,生成关键词查找树, 可以包括:

获取各关键词包括的各单字之间的节点关系,所述节点关系用于表示 各关键词包括的多个单字之间的单字顺序;依据所述节点关系生成所述 各关键词的关键词查找树。

其中,所述依据所述节点关系生成所述各关键词的关键词查找树,可 以包括:

为关键词查找树生成根节点;依据所述单字顺序获取各关键词的第一 个单字作为初始单字,所述根节点作为初始节点;对所述初始单字进行 去重处理,得到各关键词的、互不相同的目标单字,以及,分别将互不 相同的目标单字作为所述初始节点的各个子节点,生成初始查找树;按 照所述单字顺序获取各所述目标单字相邻的各后续单字;将所述各后续 单字作为初始单字,以及所述初始节点的各个子节点作为初始节点,执 行所述对所述初始单字进行去重处理,直至所述关键词库中的所有关键 词都处理完毕,得到关键词查找树。

其中,所述将所述关键词查找树作为目标数据发送至客户端,可以包 括:

将所述关键词查找树进行序列化,得到字节数组;对所述字节数组按 照预设加密算法进行加密,得到目标数据;将所述目标数据发送至客户 端。

图7为本申请实施例中另一种计算设备700的硬件结构示意图。计 算设备700可用于实现关键词匹配,例如可以是客户端。即计算设备700 可用于执行上述实施例中提供的方法。在本实施例中,计算设备700包 括:处理器701、存储器702、网络接口703和总线系统704。

所述总线系统704,用于将计算设备700的各个硬件组件耦合在一起。

所述网络接口703,用于实现计算设备700与至少一个其它计算设备 之间的通信连接,可以使用互联网,广域网,本地网,城域网等方式。

所述存储器702,用于存储程序指令和/或数据。

所述处理器701,用于读取存储器702中存储的指令和/或数据,执 行以下操作:

接收服务器发送的目标数据,所述目标数据包括关键词查找树;

从所述目标数据中获取所述关键词查找树;

响应于输入待匹配的文本,依据所述关键词查找树对所述待匹配的文 本进行关键词匹配。

其中,所述响应于输入待匹配的文本,依据所述关键词查找树对所述 待匹配的文本进行关键词匹配,包括:

获取所述待匹配文本中各单字及各单字之间的输入顺序;依据所述各 单字的输入顺序,判断所述待匹配的文本中是否存在所述关键词查找树 中的关键词。

其中,所述依据所述各单字的输入顺序,判断所述待匹配的文本中是 否存在所述关键词查找树中的关键词,包括:

响应于输入的第一个单字,获取所述第一个单字作为初始单字,所述 关键词查找树的根节点作为初始节点;判断所述初始节点的子节点中是 否存在所述初始单字,如果是,则将所述初始单字对应的子节点作为目 标节点;响应于输入的第二个单字,获取所述第二个单字作为初始单字, 所述目标节点作为初始节点,执行所述判断所述初始节点的子节点中是 否存在所述初始单字,直至所述关键词查找树中的任一目标节点为结束 节点。

其中,如果所述待匹配的文本中存在所述关键词查找树中的关键词, 所述处理器701还可以执行以下指令:

依据所述关键词生成提示信息以便展示,所述提示信息用于表示所述 待匹配的文本中存在所述关键词查找树中的关键词。

其中,所述从所述目标数据中获取关键词查找树,可以包括:

对所述目标数据按照预设解密算法进行解密运算,得到字节数组;对 所述字节数组进行反序列化处理,得到所述关键词查找树。

其中,参见图8a~图8b,本申请还提供了一种交互设备,该交互设 备可以包括:

第一交互模块,用于在接收第一触发指令后,向处理器转发所述第 一触发指令,以便处理器获取关键词库。

在用户通过交互界面点击“获取关键词库”的控件后,交互设备的 第一交互模块接收第一触发指令,然后,第一交互模块向处理器转发第 一触发指令,以便处理器可以获取关键词库。

第二交互模块,用于接收第二触发指令,并向处理器转发所述第一 触发指令,以便接收处理器发送的关键词查找树并显示所述关键词查找 树,所述关键词查找树为处理器基于所述关键词库生成。

在用户通过交互界面点击“显示关键词查找树”的控件后,交互设 备的第二交互模块接收第二触发指令,然后,第二交互模块向处理器转 发第二触发指令,以便接收处理器发送的关键词查找树并显示所述关键 词查找树(参见图8b)。

第三交互模块,用于接收第三触发指令,并向处理器转发所述第三 触发指令,以便处理器将所述关键词查找树作为目标数据发送至客户端。

在用户通过交互界面点击“发送目标数据”的控件后,交互设备的 第三交互模块接收第三触发指令,然后,第三交互模块向处理器转发第 三触发指令,以便处理器将关键词查找树作为目标数据发送至客户端。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独 立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。 基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术 方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存 储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机, 服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方 法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读 存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

其中,参见图9a~图9c,本申请还提供了另一种交互设备,该交互设 备可以包括:

第四交互模块,用于在接收第四触发指令后,向处理器转发所述第 四触发指令,以便处理器接收服务器发送的目标数据,所述目标数据包 括关键词查找树。

在用户通过交互界面点击“获取关键词查找树”的控件后,交互设 备的第一交互模块接收第一触发指令,然后,第一交互模块向处理器转 发第一触发指令,以便处理器可以从目标数据中获取关键词查找树。

第五交互模块,用于接收第五触发指令,并并向处理器转发所述第 五触发指令,以便处理器从所述目标数据中获取所述关键词查找树并显 示所述关键词查找树。

在用户通过交互界面点击“显示关键词查找树”的控件后,交互设 备的第五交互模块接收第五触发指令,然后,第五交互模块向处理器转 发第五触发指令,以便接收处理器发送的关键词查找树并显示所述关键 词查找树(参见图9b)。

在不同的实施例中,该交互设备还可以包括:

第六交互模块,用于接收第六触发指令,向处理器转发所述第六触 发指令,以便处理器依据所述关键词查找树对待匹配的文本进行关键词 匹配,并显示匹配结果(参考图9c)。

在用户通过交互界面点击“显示匹配结果”的控件后,交互设备的 第六交互模块接收第六触发指令,然后,第六交互模块向处理器转发第 六触发指令,以便以便处理器依据所述关键词查找树对待匹配的文本进 行关键词匹配,并显示匹配结果。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独 立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。 基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术 方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存 储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机, 服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方 法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读 存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述, 每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间 相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法 实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部 分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系 术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不 一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺 序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的 包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种 过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下, 由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方 法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的数据发送方法及服务器应用、关键词查找树的 获取方法及客户端应用进行了详细介绍,本文中应用了具体个例对本申 请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解 本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据 本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所 述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1