基于特征表达式的结构化查询语句甄别方法及装置与流程

文档序号:27193603发布日期:2021-11-03 12:23阅读:141来源:国知局
基于特征表达式的结构化查询语句甄别方法及装置与流程

1.本说明书涉及大数据技术领域,特别涉及一种基于特征表达式的结构化查询语句甄别方法及装置。


背景技术:

2.在海量数据环境中,用户使用结构化查询语句关联多个数据表,通过过滤、合并、差异、投影等操作筛选数据,经过多个字段一系列复杂计算和统计,得到用户需要的结果数据。在现有用户查询场景中,复杂的统计需求会产生复杂冗长的查询语句,此类语句执行计划不佳,提交执行后运行效率低,影响系统整体效率。
3.因此,在系统入口前有必要甄别此类语句,将此类语句拦截。现有的通过关键字或正则表达式匹配的方法中多个关键字之间没有逻辑关联关系,无法完成“当条件a出现,条件b没有出现,条件c在子查询中出现”这种具有逻辑关联关系的甄选。
4.针对上述问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本说明书实施例提供了一种基于特征表达式的结构化查询语句甄别方法及装置,以解决现有技术中无法甄别具有逻辑关联关系的结构化查询语句的问题。
6.本说明书实施例提供了一种基于特征表达式的结构化查询语句甄别方法,包括:接收语句甄别请求,其中,所述语句甄别请求中携带有特征表达式和待甄别的结构化查询语句集,所述结构化查询语句集中包括至少一个结构化查询语句,所述特征表达式中包含用来甄别结构化查询语句的预设逻辑关联关系;基于所述结构化查询语句集,生成对应的查询语句语法树集;基于所述特征表达式,生成对应的特征语法树;对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句。
7.在一个实施例中,基于所述结构化查询语句集,生成对应的查询语句语法树集,包括:将所述至少一个结构化查询语句中各结构化查询语句按单词切分成有序数组,得到所述各结构化查询语句对应的有序数组,其中,所述有序数组中包括切分得到的单词,所述有序数组的索引表示切分得到的单词在结构化查询语句中的索引位置;基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语句语法树,得到所述各结构化查询语句对应的查询语句语法树。
8.在一个实施例中,基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语句语法树,包括:从所述有序数组的初始索引位置开始,依次提取当前单词及其下文,将提取出的当前单词及其下文与所述语法规则进行匹配,在匹配成功的情况下,将当前单词及其下文作为一个结点,并往后继续进行匹配,匹配到的对象为当前结点的子树,并将索引移动至下文的终点,在没有任何匹配的情况下,则索引移动至下个单词,当索引移动至队尾后,重复从队头开始重新匹配,直至匹配到顶层语法,输出对应的
查询语句语法树。
9.在一个实施例中,基于所述特征表达式,生成对应的特征语法树,包括:将所述特征表达式按单词切分成有序数组;基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树。
10.在一个实施例中,基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树,包括:在所述预设逻辑关联关系中包括与操作的情况下,归并所述预设逻辑关联关系中的多个条件为一棵树;在所述预设逻辑关联关系中包括或操作的情况下,则所述预设逻辑关联关系中的多个条件间形成不同的兄弟关系子树,再通过递归形成一棵特征语法树。
11.在一个实施例中,对所述查询语句语法树集与所述特征语法树进行匹配,包括:利用回溯路径搜索算法对所述查询语句语法树集与所述特征语法树进行匹配。
12.在一个实施例中,在对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句之后,还包括:在确定所述查询语句语法树集中存在满足所述预设逻辑关联关系的结构化查询语句的情况下,根据匹配结果中的语法树生成文本语句。
13.本说明书实施例还提供了一种基于特征表达式的结构化查询语句甄别装置,包括:接收模块,用于接收语句甄别请求,其中,所述语句甄别请求中携带有特征表达式和待甄别的结构化查询语句集,所述结构化查询语句集中包括至少一个结构化查询语句,所述特征表达式中包含用来甄别结构化查询语句的预设逻辑关联关系;生成模块,用于基于所述结构化查询语句集,生成对应的查询语句语法树集;还用于基于所述特征表达式,生成对应的特征语法树;匹配模块,用于对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句。
14.本说明书实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的基于特征表达式的结构化查询语句甄别方法的步骤。
15.本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的基于特征表达式的结构化查询语句甄别方法的步骤。
16.在本说明书实施例中,提供了一种基于特征表达式的结构化查询语句甄别方法,服务器可以接收客户端发送的语句甄别请求。其中,语句甄别请求中可以携带有特征表达式和待甄别的结构化查询语句集。结构化查询语句集中可以包括至少一个结构化查询语句。特征表达式中可以包含用来甄别结构化查询语句的预设逻辑关联关系。服务器可以基于结构化查询语句集,生成对应的查询语句语法树集。服务器还可以基于特征表达式,生成对应的特征语法树。之后,服务器可以对查询语句语法树集与特征语法树进行匹配,以确定查询语句语法树集中是否存在满足预设逻辑关联关系的结构化查询语句,并将匹配结果返回给用户端。上述方案中,利用语法树的规范一致性,将特征表达式翻译成特征语法树,将结构化查询语句集中的各查询语句翻译成查询语句语法树,之后,利用特征语法树迭代遍历查询语句语法树,进行匹配,从而可以确定结构化查询语句集中是否存在满足预设逻辑关联关系的结构化查询语句。相当于传统的使用常量表达式的甄别方案,上述方案可以扩
充甄别范围,并且可以加入“与”、“或”、“非”等逻辑表达,使得能够甄别具有逻辑关联关系的语句。此外,还可以进行结构化查询语句集内不同查询语句间的上下文逻辑甄别,比传统方式更灵活,可以组合出复杂的表达式,从而甄别出更复杂的逻辑关联关系。同时,特征表达式的使用灵活,可以组合出复合特征和上下文关联特征,可迭代嵌套甄别所有子句,还可以精确定位出符合特征的子句在原始结构化查询语句中的位置。
附图说明
17.此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,并不构成对本说明书的限定。在附图中:
18.图1示出了本说明书一实施例中的基于特征表达式的结构化查询语句甄别方法的流程图;
19.图2示出了本说明书一实施例中的基于特征表达式的结构化查询语句甄别装置的示意图;
20.图3示出了本说明书一实施例中的结构化查询语句解析器功能模块示意图;
21.图4示出了本说明书一实施例中的特征表达式解析器功能模块示意图;
22.图5示出了本说明书一实施例中的特征查找器功能模块示意图;
23.图6示出了本说明书一实施例中的基于特征表达式的结构化查询语句甄别方法的流程图;
24.图7示出了本说明书一实施例中的计算机设备的示意图。
具体实施方式
25.下面将参考若干示例性实施方式来描述本说明书的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书,而并非以任何方式限制本说明书的范围。相反,提供这些实施方式是为了使本说明书公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
26.本领域的技术人员知道,本说明书的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本说明书公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
27.本说明书实施例提供了一种基于特征表达式的结构化查询语句甄别方法。在本说明的一个场景示例中,服务器可以接收客户端发送的语句甄别请求。其中,语句甄别请求中可以携带有特征表达式和待甄别的结构化查询语句集。结构化查询语句集中可以包括至少一个结构化查询语句。特征表达式中可以包含用来甄别结构化查询语句的预设逻辑关联关系。服务器可以基于结构化查询语句集,生成对应的查询语句语法树集。服务器还可以基于特征表达式,生成对应的特征语法树。之后,服务器可以对查询语句语法树集与特征语法树进行匹配,以确定查询语句语法树集中是否存在满足预设逻辑关联关系的结构化查询语句,并将匹配结果返回给用户端。
28.图1示出了本说明书一实施例中基于特征表达式的结构化查询语句甄别方法的流程图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模
块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
29.具体地,如图1所示,本说明书一种实施例提供的基于特征表达式的结构化查询语句甄别方法可以包括以下步骤:
30.步骤s101,接收语句甄别请求,其中,所述语句甄别请求中携带有特征表达式和待甄别的结构化查询语句集,所述结构化查询语句集中包括至少一个结构化查询语句,所述特征表达式中包含用来甄别结构化查询语句的预设逻辑关联关系。
31.本说明书实施例中的方法可以应用于服务器。上述服务器可以是单一的服务器,也可以是服务器集群,或者是云服务器等都可以,具体的组成形成本技术不作限定。
32.服务器可以接收语句甄别请求。语句甄别请求中可以携带有特征表达式和待甄别的结构化查询语句集。所述结构化查询语句集中可以包括至少一个结构化查询语句。所述特征表达式中可以包含用来甄别结构化查询语句的预设逻辑关联关系。预设逻辑关联关系可以包括以下至少之一:与、或、非。
33.步骤s102,基于所述结构化查询语句集,生成对应的查询语句语法树集;基于所述特征表达式,生成对应的特征语法树。
34.响应于接收到的语句甄别请求,服务器可以基于结构化查询语句集中的各结构化查询语句生成对应的查询语句语法树集。查询语句语法树集中可以包括各结构化查询语句对应的查询语句语法树。服务器还可以基于特征表达式,生成特征表达式对应的特征语法树。其中,语法树是语句结构的图形表示,代表了语句的推导结果,便于理解句子语法结构的层次。即,语法树就是按照某一规则进行推导时所形成的树。
35.步骤s103,对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句。
36.在生成查询语句语法树集和特征语法树之后,可以对查询语句语法树集和特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句,从而将满足关系的结构化查询语句甄别出来。
37.上述实施例中的查询语句甄别方法,相当于传统的使用常量表达式的甄别方案,可以扩充甄别范围,并且可以加入“与”、“或”、“非”等逻辑表达,使得能够甄别具有逻辑关联关系的语句。此外,还可以进行结构化查询语句集内不同查询语句间的上下文逻辑甄别,比传统方式更灵活,可以组合出复杂的表达式,从而甄别出更复杂的逻辑关联关系。同时,特征表达式的使用灵活,可以组合出复合特征和上下文关联特征,可迭代嵌套甄别所有子句,还可以精确定位出符合特征的子句在原始结构化查询语句中的位置。
38.在本说明书一些实施例中,基于所述结构化查询语句集,生成对应的查询语句语法树集,可以包括:将所述至少一个结构化查询语句中各结构化查询语句按单词切分成有序数组,得到所述各结构化查询语句对应的有序数组,其中,所述有序数组中可以包括切分得到的单词,所述有序数组的索引表示切分得到的单词在结构化查询语句中的索引位置;基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语
句语法树,得到所述各结构化查询语句对应的查询语句语法树。
39.对于结构化查询语句集中的各个结构化查询语句,可以先将该结构化查询语句按单词进行切分,形成有序数组,从而得到各结构化查询语句对应的有序数组。有序数据中的各个元素为切分得到的单词。有序数组的索引表示切分得到的单词在结构化查询语句中的索引位置。之后,可以基于结构化查询语言的语法规则,将各结构化查询语句对应的有序数组排列成查询语句语法树。其中,结构化查询语言的语法规则是指结构化查询语句集中的结构化查询语句对应的结构化查询语言。生成的查询语句语法树中可以携带有各单词的索引位置信息。
40.其中,结构化数据查询语言的语法规则可以包括以下几种:(1)ddl(data definition language,数据定义语言),包括create、drop、alter等可以对表结构进行改变语句;(2)dql(data definition language,数据查询语言),可以包括常用的查询语句,select是用的最多的dql动词,其他dql常用的保留字有where、order by、group by和having,这些dql保留字常与其它类型的sql语句一起使用;(3)dml(data manipulation language,数据操纵语言),可以包括平常对数据库表中用的增(insert)、删(delete)、改(update);(4)dcl(data control language,数据控制语言),可以通过grant(授权)或revoke(取消)实现权限控制,确定单个用户和用户组对数据库对象的访问;(5)tcl(transaction control language,事务控制语言),它的语句能确保被dml语句影响的表的所有行及时得以更新,包括commit(提交)命令、savepoint(保存点)命令、rollback(回滚)命令;(6)ccl(cursor control language,指针控制语言)。
41.在本说明书一些实施例中,基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语句语法树,可以包括:从所述有序数组的初始索引位置开始,依次提取当前单词及其下文,将提取出的当前单词及其下文与所述语法规则进行匹配,在匹配成功的情况下,将当前单词及其下文作为一个结点,并往后继续进行匹配,匹配到的对象为当前结点的子树,并将索引移动至下文的终点,在没有任何匹配的情况下,则索引移动至下个单词,当索引移动至队尾后,重复从队头开始重新匹配,直至匹配到顶层语法,输出对应的查询语句语法树。
42.具体地,服务器可以从有序数组初始索引位置开始,依次拿出当前单词及其下文,与语法规则进行匹配,如果匹配则当前单词及其下文即是一个结点,被匹配对象即是当前结点的子树,索引移动至下文的终点,如果没有任何匹配,则索引移动至下个单词,当索引移动至队尾后,重复从队头开始,直至匹配到顶层语法。其中,语法树的每一个结点代表了语句中的一个子句,结点中包含了此子句的索引位置信息。通过上述方式,可以生成各结构化查询语句对应的查询语句语法树。
43.在本说明书一些实施例中,基于所述特征表达式,生成对应的特征语法树,可以包括:将所述特征表达式按单词切分成有序数组;基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树。
44.具体地,为了生成特征表达式对应的特征语法树,服务器可以先将特征表达式按照单词进行切分,得到有序数组。有序数组中的元素为切分得到的单词,有序数组的索引为切分得到的单词在特征表达式中的位置。之后,服务器可以基于逻辑操作符语法,将有序数组排列成特征表达式对应的特征语法树。通过上述方式,可以得到特征表达式对应的特征
语法树。
45.在本说明书一些实施例中,基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树,可以包括:在所述预设逻辑关联关系中可以包括与操作的情况下,归并所述预设逻辑关联关系中的多个条件为一棵树;在所述预设逻辑关联关系中可以包括或操作的情况下,则所述预设逻辑关联关系中的多个条件间形成不同的兄弟关系子树,再通过递归形成一棵特征语法树。
46.具体地,特征表达式也具有结构化的特性,首先将表达式按单词切分成一组有序数组。表达式切分完成后,再结合逻辑操作符语法,将有序数组排列成一个表达式语法树。如果是与操作,则归并所有表达式为一棵树。如果是或操作,则条件间形成不同的兄弟关系子树,递归形成一棵表达式树。通过上述方式可以将有序数组排列成特征表达式对应的语法树。
47.在本说明书一些实施例中,对所述查询语句语法树集与所述特征语法树进行匹配,可以包括:利用回溯路径搜索算法对所述查询语句语法树集与所述特征语法树进行匹配。
48.具体地,经过处理后可以得到查询语句语法树集和特征语法树。其中,查询语句语法树集内按顺序保存着查询语句语法树,其中每一棵语法树包含了语句中有序的子语句集合,每个子语句具有可匹配特征,是可匹配的。特征语法树是匹配的条件。服务器可以利用回溯路径搜索算法对所述查询语句语法树集与所述特征语法树进行匹配。每次按树的路径进行一个特征的匹配后,将路径进行缓存,当遇到逻辑操作符时,对已匹配缓存路径进行回溯,按逻辑和新的特征进行新的匹配,当符合所有匹配时则为全部匹配,否则回溯到起点,取下一个语法子树进行匹配,重复直至完成所有语法子树的匹配。通过上述方式,可以实现查询语句语法树集和特征语法树之间的匹配,从而确定是否存在满足预设逻辑关联关系的查询语句。
49.在本说明书一些实施例中,在对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句之后,还可以包括:在确定所述查询语句语法树集中存在满足所述预设逻辑关联关系的结构化查询语句的情况下,根据匹配结果中的语法树生成文本语句。
50.具体地,在进行匹配之后,若确定所述查询语句语法树集中存在满足所述预设逻辑关联关系的结构化查询语句,则根据匹配结果中的语法树生成文本语句。流入,可以生成匹配特征表达式的子句,即反向将树状结构的子树按序取得字面值,拼接重新生成文本语句,用于结果返回。
51.在本说明书一些实施例中,特征表达式可以包括上下文特征表达式和/或单句特征表达式。其中,上下文特征表达式中可以包括before(之前)和after(之后)等关键词。在特征表达式为上下文特征表达式时,将结构化查询语句集中各结构化查询语句对应的查询语句语法树与特征表达式对应的语法树进行匹配,可以实现结构化查询语句集内不同查询语句间的上下文逻辑甄别。在特征表达式为单据表达式时,可以在各查询语句语法树内部进行匹配,可以精确定位出符合特征的子句在原始结构化查询语句中的位置。对于上下文特征表达式,若满足预设逻辑关联关系,则将满足条件的多个查询语句返回给客户端。对于单据特征表达式,若满足预设逻辑关联关系,可以将满足条件的至少一个子句返回给客户
端。特征表达式还可以包括上下文特征表达式和单据特征表达式两者的组合。
52.基于同一发明构思,本说明书实施例中还提供了一种基于特征表达式的结构化查询语句甄别装置,如下面的实施例所述。由于基于特征表达式的结构化查询语句甄别装置解决问题的原理与基于特征表达式的结构化查询语句甄别方法相似,因此基于特征表达式的结构化查询语句甄别装置的实施可以参见基于特征表达式的结构化查询语句甄别方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图2是本说明书实施例的基于特征表达式的结构化查询语句甄别装置的一种结构框图,如图2所示,可以包括:接收模块201、生成模块202和匹配模块203,下面对该结构进行说明。
53.接收模块201用于接收语句甄别请求,其中,所述语句甄别请求中携带有特征表达式和待甄别的结构化查询语句集,所述结构化查询语句集中可以包括至少一个结构化查询语句,所述特征表达式中包含用来甄别结构化查询语句的预设逻辑关联关系。
54.生成模块202用于基于所述结构化查询语句集,生成对应的查询语句语法树集;还用于基于所述特征表达式,生成对应的特征语法树。
55.匹配模块203用于对所述查询语句语法树集与所述特征语法树进行匹配,以确定所述查询语句语法树集中是否存在满足所述预设逻辑关联关系的结构化查询语句。
56.在本说明书一些实施例中,生成模块可以具体用于:将所述至少一个结构化查询语句中各结构化查询语句按单词切分成有序数组,得到所述各结构化查询语句对应的有序数组,其中,所述有序数组中可以包括切分得到的单词,所述有序数组的索引表示切分得到的单词在结构化查询语句中的索引位置;基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语句语法树,得到所述各结构化查询语句对应的查询语句语法树。
57.在本说明书一些实施例中,基于结构化查询语言的语法规则,将所述各结构化查询语句对应的有序数组排列成查询语句语法树,可以包括:从所述有序数组的初始索引位置开始,依次提取当前单词及其下文,将提取出的当前单词及其下文与所述语法规则进行匹配,在匹配成功的情况下,将当前单词及其下文作为一个结点,并往后继续进行匹配,匹配到的对象为当前结点的子树,并将索引移动至下文的终点,在没有任何匹配的情况下,则索引移动至下个单词,当索引移动至队尾后,重复从队头开始重新匹配,直至匹配到顶层语法,输出对应的查询语句语法树。
58.在本说明书一些实施例中,生成模块可以具体用于:将所述特征表达式按单词切分成有序数组;基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树。
59.在本说明书一些实施例中,基于逻辑操作符语法,将所述有序数组排列成所述特征表达式对应的特征语法树,可以包括:在所述预设逻辑关联关系中可以包括与操作的情况下,归并所述预设逻辑关联关系中的多个条件为一棵树;在所述预设逻辑关联关系中可以包括或操作的情况下,则所述预设逻辑关联关系中的多个条件间形成不同的兄弟关系子树,再通过递归形成一棵特征语法树。
60.在本说明书一些实施例中,匹配模块可以具体用于:利用回溯路径搜索算法对所
述查询语句语法树集与所述特征语法树进行匹配。
61.在本说明书一些实施例中,该装置还可以包括结果生成模块,用于:在确定所述查询语句语法树集中存在满足所述预设逻辑关联关系的结构化查询语句的情况下,根据匹配结果中的语法树生成文本语句。
62.下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本说明书,并不构成对本说明书的不当限定。
63.请参考图3至图6,示出了本具体实施例中的基于特征表达式的结构化查询语句甄别装置和方法的相关示意图。本具体实施例中的语句甄别装置可以接收两个输入,输入一为等待甄别的批量结构化查询语句集,该集合包含了一个或多个结构化查询语句;输入二为特征表达式,包含用来甄别语句的条件表达,是一个或多个条件的关联逻辑表达。
64.本具体实施例中,语句甄别装置可以由结构化查询语句解析器(图3)、特征表达式解析器(图4)和特征查找器(图5)组成。
65.请参考图3,示出了本说明书一实施例中的结构化查询语句解析器功能模块示意图。如图3所示,针对结构化查询语句的结构化特性,单词切分模块301将语句按单词切分成一组有序数组,有序数组的索引代表单词在语句中的索引位置。
66.语法树解析模块302在单词切分完成后,结合结构化查询语句的语法,将有序数组排列成一棵查询语句语法树。具体流程可以为从有序数组初始索引位置开始,依次拿出当前单词及其下文,与语法规则进行匹配,如果匹配则当前单词及其下文即是一个结点,被匹配对象即是当前结点的子树,索引移动至下文的终点,如果没有任何匹配,则索引移动至下个单词,当索引移动至队尾后,重复从队头开始,直至匹配到顶层语法。其中,语法树的每一个结点代表了语句中的一个子句,结点中包含了此子句的索引位置信息。
67.特征表达式也具有结构化的特性,可以生成特征语法树。请参考图4,示出了本说明书一实施例中的特征表达式解析器功能模块示意图。如图4所示,表达式切分模块401可以将表达式按单词切分成一组有序数组。
68.表达式解析模块402可以在表达式切分完成后,结合逻辑操作符语法,将有序数组排列成一个表达式语法树。如果是与操作,则归并所有表达式为一棵树,如果是或操作,则条件间形成不同的兄弟关系子树,递归形成一棵表达式树。
69.请参考图5,示出了本说明书一实施例中的特征查找器功能模块示意图。经过结构化查询语句解析器和特征表达式解析器处理后得到两个中间结果。中间结果一为结构化查询语句语法树集合,集合内按顺序保存着结构化查询语句语法树,其中每一棵语法树包含了语句中有序的子语句集合,每个子语句具有可匹配特征,是可匹配的。中间结果二为特征表达式语法树,表达式语法树是匹配的条件。
70.特征匹配可以使用回溯路径搜索算法进行,每次按树的路径进行一个特征的匹配后,将路径进行缓存,当遇到逻辑操作符时,对已匹配缓存路径进行回溯,按逻辑和新的特征进行新的匹配,当符合所有匹配时则为全部匹配,否则回溯到起点,取下一个语法子树进行匹配,重复直至完成所有语法子树的匹配。如图5所示,迭代遍历模块501执行迭代遍历的过程。匹配查找模块502执行每一个结点的匹配。合并子句模块503用于在匹配成功后生成返回结果。
71.请参考图6,示出了本说明书一实施例中的基于特征表达式的结构化查询语句甄
别方法的流程图。如图6所示,可以按顺序从结构化查询语句语法树集合中依次获取一棵语法树(图6中的601)。按索引顺序获取语句语法树的下一个结点,首次为第一个结点(图6中的602)。按索引顺序获取表达式语法树的下一个结点,首次为第一个结点(图6中的603)。将语句语法树结点代表的子句与特征表达式语法树中结点进行特征匹配,子句结点和特征结点的同名属性值相同则视为匹配(图6中的604)。如果匹配成功表示特征表达式中的该特征命中,重复获取特征表达式的下一个结点(图6中的603),同时获取特征条件出现的位置和逻辑关系。根据位置和逻辑关系从语法树中获取下一个结点(图6中的605)。重复匹配步骤(图6中的604)。如果匹配,则依次获取特征表达式的结点执行以上操作,直至所有结点都匹配则表示该特征表达式完全匹配,此时可以生成匹配特征表达式的子句,即反向将树状结构的子树按序取得字面值,拼接重新生成文本语句,用于结果返回(图6中的606)。如果在过程中存在所有结点已经遍历完毕,无法匹配的情况,则该特征表达式不能匹配(图6中的607)。不能匹配的情况下,回溯到上一个语法树索引结点获取下一个结点重新开始特征表达式的匹配(图6中的602)。按顺序从结构化查询语句语法树集合中获取下一棵语法树,重复以上步骤(图6中的601)。迭代遍历的过程为迭代遍历模块501,每一个结点的匹配为匹配查找模块502,匹配成功后生成返回结果为合并子句模块503,具体匹配流程图见图6所示。
72.下面举例说明基于特征表达式的结构化查询语句甄别方法。在本具体实施例中,结构化查询语句集包含一下两句语句:
73.delete from t1 where t1.date=

2020

05

01’;
74.insert into t1(c1,c2,date)select t2.c1,t2.c2,t3.date from t2 join t3 on(t1.k1=t2.k1)where t3.date=

2020

05

01’;
75.特征表达式为上下文特征表达式和单句特征表达式的组合:
76.dml:insert after dml:delte&date=

2020

05

01’77.首先,将结构化查询语句集转化为结构化查询语句语法树集:
78.[0079][0080]
然后,将特征表达式转化为表达式语法树:
[0081]
express

>dml:insert
[0082]

>keyword:after
[0083]

>dml:delete
[0084]
operator:and
[0085]
express

>identify:date
[0086]

>operator:=
[0087]
=>value:2020

05

01
[0088]
接着,进行匹配,匹配流程如下:
[0089]
取出第一个语法结点dml:delete,取出第一个表达式结点dml:insert,属性值不同,没有匹配,依次直至dml:insert,属性值一样,发生匹配,取下一个表达式结点,关键字after,表示需回溯到初始结点之后,当前匹配之前,取下一个statement的第一个语法结点dml:delete,取下一个表达式结点dml:delete,属性值一样,发生匹配,语法结点回溯至起点,取下一个表达式结点,逻辑操作符与,表示回溯所有已匹配结点进行新的条件匹配,取第一个匹配的第一个结点dml:insert,取下一个表达式结点identify:date,没有发生匹配,递归下一个结点直至where clause中的identify:t3.date,属性值一样,发生匹配,取下一个语法结点operator:=,取下一个表达式结点operator:=,属性值一样,发生匹配,取下一个语法结点value:2021

05

01,取下一个表达式结点value:2021

05

01,属性值一
drive,hdd)或者存储卡(memory card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
[0097]
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
[0098]
显然,本领域的技术人员应该明白,上述的本说明书实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本说明书实施例不限制于任何特定的硬件和软件结合。
[0099]
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本说明书的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
[0100]
以上所述仅为本说明书的优选实施例而已,并不用于限制本说明书,对于本领域的技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1