掌桥专利:专业的专利平台
掌桥专利
首页

一种信息查询方法、装置、设备及计算机可读存储介质

文献发布时间:2023-06-19 16:04:54



技术领域

本申请涉及信息查询领域的信息查询技术,尤其涉及一种信息查询方法、装置、设备及计算机可读存储介质。

背景技术

随着电子设备的不断普及,可以通过计算机编程语句在电子设备上实现各种不同的功能;在实际应用中我们常常需要对计算机编程语句(例如sql语句)进行语法解析,从中遍历抽取表连接模式、统计维度信息等逻辑操作;但是,当遇到多层嵌套和多别名的情况现有解析框架无法做到精确识别,仍需要人工进行二次提取,从而存在如果不进行人工提取无法进行信息提取的问题。

发明内容

为解决上述技术问题,本申请实施例期望提供一种信息查询方法、装置、设备及计算机可读存储介质,解决了当编程语句中存在多嵌套以及多别名时信息难以提取的问题,提高了信息的可读性和对消息的精确识别。

本申请的技术方案是这样实现的:

一种信息查询方法,所述方法包括:

获取待解析编程语句;其中,所述待解析编程语句是采用目标编程语言生成的;

对所述待解析编程语句进行解析,确定第一语法结构树;其中,所述第一语法结构树中的各个节点表示所述语法结构树中的语法结构;

基于所述目标编程语言对应的编程语句,确定基础数据结构;

基于所述基础数据结构,对所述第一语法结构树进行重构得到第二语法结构树;其中,所述第二语法结构树包括所述第一语法结构树中的数据结构;

接收语句查询请求,基于所述查询请求从所述第二语法树中进行语句查询。

上述方案中,获取待解析编程语句,包括:

从待解析编程文件中获取初始编程语句;

对所述初始编程语句进行处理,得到所述待解析编程语句。

上述方案中,所述基于所述目标编程语言对应的编程语句,确定基础数据结构,包括:

获取所述目标编程语言的编程语句;

对所述目标编程语言的编程语句进行分析,得到第一基础数据结构和第二基础数据结构;其中,所述第一基础数据结构用于表征所述目标编程语言的操作的操作类型;所述第二基础数据结构用于表征所述目标编程语言的编程语句的功能。

上述方案中,所述基于所述基础数据结构,对所述第一语法结构树进行重构得到第二语法结构树,包括:

将第一语法结构树与所述基础数据结构进行匹配;

基于第一匹配结果,对所述第一语法结构树进行重构得到第二语法结构树。

上述方案中,所述基于所述将第一语法结构树与所述基础数据结构进行匹配,包括:

将第一语法结构树中的第一根节点与所述第一基础数据结构进行匹配;

在所述第一根节点与所述第一基础数据结构匹配的情况下,基于第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对第一语法结构树中的子节点进行匹配;其中,所述第二基础数据结构至少包括所述第一子基础数据结构、所述第二子基础数据结构和所述第三子基础数据结构;

上述方案中,所述基于第一匹配结果,对所述第一语法结构树进行重构得到第二语法结构树,包括:

在所述第一根节点与所述第一基础数据结构匹配的情况下,将第一语法结构树中的第一根节点作为所述第二语法结构树的第二根节点;

基于对所述第一语法结构树中的子节点的匹配结果,从所述第一语法结构树中的子节点中确定所述第二语法结构树的子节点,以及所述第二根节点与所述子节点之间的关系;

基于所述第二根节点、所述第二子节点和所述关系,得到所述第二语法结构树。

上述方案中,所述基于所述第一子基础数据结构、所述第二子基础数据结构和所述第三子基础数据结构,对第一语法结构树中的子节点进行匹配,包括:

将所述第一根节点对应的第一子节点与所述第一子基础数据结构进行匹配;

在所述第一子节点与所述第一子基础数据结构匹配的情况下,将所述第一子节点对应的第二子节点与所述第二子基础数据结构进行匹配;

在所述第二子节点与所述第二子基础数据结构匹配的情况下,将所述第二子节点与所述第一基础数据结构进行匹配;

基于第二匹配结果、所述第一子基础数据结构、所述第二子基础数据结构和所述第三子基础数据结构,对剩余子节点进行匹配处理;其中,所述剩余子节点包括所述第一语法结构树中处所述第一子节点和所述第二子节点外的子节点。

上述方案中,所述基于第二匹配结果、所述第一子基础数据结构、所述第二子基础数据结构和所述第三子基础数据结构,对剩余子节点进行匹配处理,包括如下至少一种情况:

在所述第二子节点与所述第一基础数据结构不匹配的情况下,将所述第二子节点对应的第三子节点与所述第三子基础数据结构进行匹配;

在所述第二子节点与所述第一基础数据结构匹配的情况下,将所述第三子节点与所述第一子基础结构进行匹配;

在所述第三子节点与所述第一子基础结构匹配的情况下,将所述第三子节点对应的第四子节点与所述第二子基础结构进行匹配,直到所述第一语法结构树中的节点均进行了匹配处理,以得到第二语法结构树中的第二根节点与第二根节点对应的子节点之间的关系。

上述方案中,所述基于对所述第一语法结构树中的子节点的匹配结果,从所述第一语法结构树中的子节点中确定所述第二语法结构树的子节点,以及所述第二根节点与所述子节点之间的关系,包括如下至少一种情况:

在所述第一子节点与所述第一子基础数据结构匹配的情况下,确定所述第一子节点为所述第二语法结构树中的所述根节点对应的第一子节点;

在所述第二子节点与所述第二子基础数据结构匹配的情况下,确定所述第二子节点为所述第二语法结构树中的第一子节点对应的第二子节点;

在所述第二子节点与所述第一基础数据结构不匹配的情况下,确定所述第二子节点为所述第二语法结构树中的第二子节点对应的第三子节点;

在所述第二子节点与所述第一基础数据结构匹配的情况下,确定所述第二子节点为所述第二语法结构树中的第二子节点对应的第三子节点;

在所述第三子节点与所述第一子基础数据结构匹配的情况下,确定所述第三子节点为所述第二语法结构树中的第三子节点对应的第四子节点,直到所述第一语法结构树中的节点均进行了匹配处理,以得到第二语法结构树中的第二根节点与第二根节点对应的子节点之间的关系。

一种信息查询装置,所述装置包括:

获取单元,用于获取待解析编程语句;其中,所述待解析编程语句是采用目标编程语言生成的;

解析单元,用于对所述待解析编程语句进行解析,确定第一语法结构树;其中,所述第一语法结构树中的各个节点表示所述语法结构树中的语法结构;

确定单元,用于基于所述目标编程语言对应的编程语句,确定基础数据结构;

重构单元,基于所述基础数据结构,对所述第一语法结构树进行重构得到第二语法结构树;其中,所述第二语法结构树包括所述第一语法结构树中的数据结构。

查询单元,用于接收语句查询请求,基于所述查询请求从所述第二语法树中进行语句查询。

一种信息查询设备,所述设备包括:处理器、存储器和通信总线;

所述通信总线用于实现所述处理器和所述存储器之间的通信连接;

所述处理器用于执行所述存储器中存储的信息查询程序,以实现以下步骤:

所述通信总线用于实现所述处理器和所述存储器之间的通信连接;

所述处理器用于执行所述存储器中存储的信息查询程序,以实现上述信息查询方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述信息查询方法的步骤。

本申请实施例所提供的信息查询方法、装置、设备及计算机可读存储介质,获取采用目标编程语言生成的待解析编程语句,对待解析编程语句进行解析确定第一语法结构树,并基于待解析编程语句确定基础数据结构,之后基于基础数据结构对第一语法结构树进行重构得到第二语法结构树;第二语法结构树包括第一语法结构树中的数据结构;接收语句查询请求,基于查询请求从第二语法树中进行语句查询;如此,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

附图说明

图1为本申请实施例提供的一种信息查询方法的流程示意图;

图2为本申请实施例提供的另一种信息查询方法的流程示意图;

图3为本申请实施例提供的又一种信息查询方法的流程示意图;

图4为本申请实施例提供的一种信息查询装置的结构示意图;

图5为本申请实施例提供的一种信息查询设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请的实施例提供一种信息查询方法,该方法可以应用于信息查询设备中,参照图1所示,该方法包括以下步骤:

步骤101、获取待解析编程语句。

其中,待解析编程语句是采用目标编程语言生成的,其中,目标编程语言是实现人与机器之间交流沟通的计算机程序语言。

在本申请实施例中,待解析编程语句可以是编程语言为结构化查询语言(Structured Query Language,sql)的编程语句、编程语言为Java的编程语句、编程语言为C的编程语句、编程语言为C++的编程语句;若待解析编程语句是编程语言为sql的编程语句,信息查询设备可以主动发起用于获取编程语言是sql的编程语句的请求指令。

步骤102、对待解析编程语句进行解析,确定第一语法结构树。

其中,第一语法结构树中的各个节点表示语法结构树中的语法结构;第一语法结构树以树状的形式表现待解析编程语句的语法结构。其中,第一语法结构树可以是抽象语法树(Abstract Syntax Tree,AST);需要说明的是,第一语法结构树也可以是表示语法结构的其他形式的树。

在本申请实施例中,通过使用与待解析编程语句相对应的解析框架,对待解析编程语句进行解析;其中,解析框架中包括扫描器和解析器,解析框架通过扫描器获取待解析编程语句,再通过解析器对获取的待解析编程语句进行解析,将待解析编程语句转换成树的形式得到第一语法结构树。在一种可行的实现方式中,若待解析编程语句是编程语言为sql的编程语句,可以使用Calcite(Apache calcite)解析框架、Druid解析框架和JSQLParser解析框架,对编程语言为sql的编程语句进行解析,得到第一语法结构树。

步骤103、基于目标编程语言对应的编程语句,确定基础数据结构。

其中,基础数据结构包括第一基础数据结构和第二基础数据结构。

在本申请实施例中,可以通过对不同的待解析编程语句进行分析,获取不同的待解析编程语句中包含的基础数据结构;基础数据结构中可以包括具有不同功能的第一基础数据结构和第二基础数据结构。需要说明的是,针对不同的待解析编程语句,基础数据结构可以相同,也可以不同。

步骤104、基于基础数据结构,对第一语法结构树进行重构得到第二语法结构树。

其中,第二语法结构树包括第一语法结构树中的数据结构。

在本申请实施例中,第二语法结构树是通过将第一语法结构树中各个节点与第一基础数据结构和第二基础数据结构进行匹配,并基于匹配结果对第一语法结构树中的各个节点进行重新组合得到的;其中,第二语法结构树中的各个节点表示语法结构树中的语法结构。如此,通过将第一语法结构树的各个节点按照不同的基础数据结构进行重新组合,克服了第一语法结构树的结构复杂且难以进行信息查询的缺点。

步骤105、接收语句查询请求,基于查询请求从第二语法树中进行语句查询。

在本申请实施例中,电子设备可以基于语句查询请求中携带的标识,基于语句请求的标识,可以更快速、更准确地从第二语法结构树中查询出与语句查询请求中携带的标识相对应的查询语句。

本申请的实施例所提供的信息查询方法,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历在第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

基于前述实施例,本申请实施例提供的一种信息查询方法,参照图2所示,该方法包括以下步骤:

步骤201、信息查询设备从待解析编程文件中获取初始编程语句。

其中,待解析编程文件是指存储待解析编程语句的文件,初始编程语句是指未经过任何处理的编程语句。

在本申请实施例中,信息查询设备可以向待解析编程文件发起用于获取初始编程语句的获取请求,待解析编程文件可以响应获取请求从待解析编程文件内调取初始编程语句,并发送初始编程语句至信息查询设备,信息查询设备接收初始编程语句,以便后续对初始编程语句进行处理,得到待解析编程语句。

在一种可行的实现方式中,待解析编程文件可以是.sql文件或者.txt文件,若初始编程语句为编程语言为sql的编程语句,信息查询设备可以从.sql文件内调取编程语言为sql的编程语句。

步骤202、信息查询设备对初始编程语句进行处理,得到待解析编程语句。

在本申请实施例中,信息查询设备对初始编程语句进行检查,包括形式检查和语法检查,并基于检查结果对初始编程语句进行相应的处理,得到待解析编程语句。

在一种可行的实现方式中,若初始编程语句为编程语言为sql的编程语句,信息查询设备对编程语言为sql的编程语句进行是否有多余空格、是否包含多余特殊符号、是否包含无效的字符和是否存在多条编程语句位于同一行的检查,并基于检查结果对编程语言为sql的编程语句进行多余空格删除操作、多余特殊符删除操作、首尾注释操作和换行操作,从而得到待解析编程语句。如此,通过对初始编程语句中不规范的语句进行检查,得到规范化的待解析编程语句,以便后续对待解析编程语句进行分析。

步骤203、信息查询设备对待解析编程语句进行解析,确定第一语法结构树。

其中,第一语法结构树中的各个节点表示语法结构树中的语法结构。

步骤204、信息查询设备获取目标编程语言的编程语句。

步骤205、信息查询设备对目标编程语言的编程语句进行分析,得到第一基础数据结构和第二基础数据结构。

其中,第一基础数据结构用于表征目标编程语言的操作的操作类型;第二基础数据结构用于表征目标编程语言的编程语句的功能。

在本申请实施例中,信息查询设备可以通过对目标编程语言的不同编程语句进行分析,获取编程语句中包含的表征不同功能的第一基础数据结构和第二基础数据结构。需要说明的是,不同的编程语言对应的第一基础数据结构和第二基础数据结构可以相同,也可以不同。

步骤206、信息查询设备将第一语法结构树与基础数据结构进行匹配。

其中,基础数据结构包括第一基础数据结构和第二基础数据结构。

在本申请实施例中,信息查询设备将第一语法结构树中的各个节点对应的数据结构与第一基础数据结构和第二基础数据结构进行比较;若第一语法结构树中的节点对应的数据结构与第一基础数据结构一致,则将第一语法结构树中的节点与第一基础数据结构进行匹配;若第一语法结构树中的节点对应的数据结构与第二基础数据结构一致,则将第一语法结构树中的节点与第二基础数据结构进行匹配。

需要说明的是,步骤206中将第一语法结构树与基础数据结构进行匹配可以通过步骤a1-a2来实现:

步骤a1、信息查询设备将第一根节点与第一基础数据结构进行匹配。

其中,第一语法结构树的第一根节点是第一语法结构树中的第一个节点。

在本申请实施例中,将第一语法结构树中的第一根节点对应的数据结构与第一基础数据结构进行比较;若第一根节点对应的数据结构与第一基础数据结构一致,则将第一语法结构树中的第一根节点与第一基础数据结构匹配;若第一根节点对应的数据结构与第一基础数据结构不一致,则不将第一语法结构树中的第一根节点与第一基础数据结构进行匹配。

步骤a2、在第一根节点与第一基础数据结构匹配的情况下,信息查询设备基于第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对第一语法结构树中的子节点进行匹配处理。

其中,第二基础数据结构至少包括第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,其中,第一语法结构树中的子节点至少包括第一子节点、第二子节点、第三子节点和第四子节点。

在本申请实施例中,在第一语法结构树中的第一根节点对应的数据结构与第一基础数据结构匹配的情况下,说明第一语法结构树中的第一根节点对应一个子编程语句,则将第一根节点对应的第一子节点对应的数据结构与第一子基础数据结构进行比较;若第一语法结构树中第一子节点对应的数据结构与第一子基础数据结构一致,则将第一语法结构树中的第一子节点与第一子基础数据结构进行匹配。

步骤207、信息查询设备基于第一匹配结果,对第一语法结构树进行重构得到第二语法结构树。

在本申请实施例中,将第一语法结构树中的各个节点与基础数据结构的匹配得到匹配结果;再根据匹配结果确定第二语法结构树中的第二根节点、子节点,以及第二根节点与子节点之间的关系,得到第二语法结构树。

需要说明的是,步骤207中对第一语法结构树进行重构得到第二语法结构树可以通过步骤b1-b3来实现:

步骤b1、在第一根节点与第一基础数据结构匹配的情况下,信息查询设备将第一语法结构树中的第一根节点作为第二语法结构树的第二根节点。

其中,第二根节点为第二语法结构树的根节点。

在本申请实施例中,将第一语法结构树中第一根节点对应的数据结构与第一基础数据结构进行比较,若第一语法结构树中第一根节点对应的数据结构与第一基础数据结构一致,说明第一语法结构树中的第一根节点对应的数据结构与第一基础数据结构匹配,则将第一语法结构树中的第一根节点加入第二语法结构树中,作为第二语法结构树中的第二根节点。

步骤b2、信息查询设备基于对第一语法结构树中的子节点的匹配结果,从第一语法结构树中的子节点中确定第二语法结构树的子节点,以及第二根节点与子节点之间的关系。

在本申请实施例中,在第一语法结构树中的第一根节点对应的第一子节点与第一子基础数据结构匹配的情况下,将第一语法结构树中的第一根节点对应的第一子节点加入第二语法结构树中,并作为第二语法结构树中第二根节点对应的第一子节点;

在第一语法结构树中第二子节点与第二子基础数据结构匹配的情况下,将第一语法结构树中第一子节点对应的第二子节点加入第二语法结构树中,并作为第二语法结构树中第一子节点对应的第二子节点;

在第一语法结构树中的第二子节点与第一基础数据结构不匹配的情况下,将第一语法结构树中第二子节点对应的第三子节点加入第二语法结构树中,并作为第二语法结构树中第二子节点对应的第三子节点;

在第一语法结构树中的第二子节点与第一基础数据结构匹配的情况下,将第一语法结构树中的第二子节点对应的第三子节点加入第二语法结构树中,并作为第二语法结构树中第二子节点对应的第三子节点;

在第一语法结构树中的第三子节点与第一子基础数据结构,将第一语法结构树中的第三子节点对应的第四子节点加入第二语法结构树中,并作为第二语法结构树中的第三子节点对应的第四子节点。

步骤b3、信息查询设备基于第二语法结构树中的第二根节点、子节点和第二根节点与子节点之间的关系,得到第二语法结构树。

步骤208、信息查询设备接收语句查询请求,基于查询请求从第二语法树中进行语句查询。

需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。

本申请的实施例所提供的信息查询方法,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历在第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

基于前述实施例,本申请实施例提供的一种信息查询方法,参照图3所示,该方法包括以下步骤:

步骤301、信息查询设备从待解析编程文件中获取初始编程语句,对初始编程语句进行处理得到待解析编程语句,并对待解析编程语句进行解析确定第一语法结构树,获取目标编程语言的编程语句,并对目标编程语言的编程语句进行分析得到第一基础数据结构和第二基础数据结构。

其中,第一语法结构树中的各个节点表示语法结构树中的语法结构;第一基础数据结构用于表征目标编程语言的操作的操作类型;第二基础数据结构用于表征目标编程语言的编程语句的功能。

步骤302、信息查询设备将第一根节点与第一基础数据结构进行匹配。

在本申请实施例中,若待解析编程语句是编程语言为sql的编程语句,则第一基础数据结构可以包括sqlselect和sqlorderby。

在一种可能的实现方式中,信息查询设备将第一语法结构树中的第一根节点对应的数据结构与sqlselect和sqlorderby进行比较;若第一语法结构树中的第一根节点对应的数据结构与sqlselect和/或sqlorderby其中之一相同,则将第一语法结构树中的第一根节点与sqlselect和/或sqlorderby其中之一进行匹配。

步骤303、在第一根节点与第一基础数据结构匹配的情况下,信息查询设备将第一语法结构树中的第一根节点对应的第一子节点与第一子基础数据结构进行匹配。

在本申请实施例中,若待解析编程语句是编程语言为sql的编程语句,则第一子基础数据结构可以包括from、where、group by、order by、with和case。

在一种可行的实现方式中,在第一语法结构树中的第一根节点与sqlselect和/或sqlorderby其中之一相同的情况下,信息查询设备将第一语法结构树中的第一子节点对应的数据结构与from、where、group by、order by、with和case进行比较;若第一语法结构树中的第一子节点对应的数据结构与from、where、group by、order by、with和case其中之一相同,则将第一语法结构树中的第一根节点对应的第一子节点与from、where、group by、order by、with和case进行匹配。

步骤304、在第一语法结构树中的第一子节点与所第一子基础数据结构匹配的情况下,信息查询设备将第一子节点对应的第二子节点与第二子基础数据结构进行匹配。

在本申请实施例中,若待解析编程语句是编程语言为sql的编程语句,则第一子基础数据结构可以包括SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral。

在一种可行的实现方式中,信息查询设备将第一语法结构树中的第二子节点对应的数据结构与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral进行比较;若第一语法结构树中的第二子节点对应的数据结构与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral其中之一相同,则将第一语法结构树中第一子节点对应的第二子节点与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral进行匹配。

步骤305、在第一语法结构树中的第二子节点与第二子基础数据结构匹配的情况下,信息查询设备将第二子节点与第一基础数据结构进行匹配。

在本申请实施例中,在第一语法结构树中的第二子节点与第二子基础数据结构匹配的情况下,说明第一语法结构树中第二子节点对应一个子编程语句,则将第一语法结构树中的第二子节点对应的数据结构与第一基础数据结构进行比较;若第一语法结构树中的第二子节点对应的数据结构与第一基础数据结构一致,则将第二子节点与第一基础数据结构进行匹配。

步骤306、信息查询设备基于第二匹配结果、第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对剩余子节点进行匹配处理。

其中,剩余子节点包括第一语法结构树中处第一子节点和第二子节点外的子节点。

在本申请实施例中,信息查询设备基于第一语法结构树中的第二子节点与第一基础数据结构的匹配结果,将第一语法结构树中的剩余节点与第一子基础数据结构、第二子基础数据结构和第三子基础数据结构进行比较,基于比较结果,将第一语法结构树中的剩余节点与第一子基础数据结构、第二子基础数据结构和第三子基础数据结构进行匹配。需要说明的是,步骤306可以通过步骤306c1-步骤306c3来实现:

步骤306c1、在第一语法结构树中的第二子节点与第一基础数据结构不匹配的情况下,信息查询设备将第一语法结构树中的第二子节点与第三子基础数据结构进行匹配。

在本申请实施例中,若待解析编程语句是编程语言为sql的编程语句,则第三子基础数据结构可以包括SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec。

在一种可行的实现方式中,信息查询设备将第一语法结构树中的第二子节点对应的数据结构与SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec进行比较;若第一语法结构树中的第二子节点对应的数据结构与SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec其中之一相同,则将第一语法结构树中第一子节点对应的第二子节点与SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec进行匹配。

步骤306c2、在第一语法结构树中的第二子节点与第一基础数据结构匹配的情况下,信息查询设备将第一语法结构树中第二子节点对应的第三子节点与第一子基础结构进行匹配。

在本申请实施例中,信息查询设备在第一语法结构树中的第二子节点与第一基础数据结构匹配的情况下,说明第一语法结构树中的第二子节点对应一个子编程语句,则将第一语法结构树中的第三子节点对应的数据结构与第一子基础数据结构进行比较,若第三子节点对应的数据结构与第一子基础数据结构一致,则将第三子节点与第一子基础数据结构进行匹配。

步骤306c3、在第一语法结构树中的第三子节点与第一子基础结构匹配的情况下,信息查询设备将第一语法结构树中的第三子节点对应的第四子节点与第二子基础结构进行匹配,直到第一语法结构树中的节点均进行了匹配处理。

在本申请实施例中,在第一语法结构树中的第三子节点与第一子基础结构匹配的情况下,说明第一语法结构树中的第三子节点对应一个子编程语句,则将第一语法结构树中的第三子节点对应的第四子节点对应的数据结构与第二子基础数据结构进行比较;若第一语法结构树中的第四子节点对应的数据结构与第二子基础数据结构一致,则将第一语法结构树中的第三子节点对应的第四子节点与第二子基础数据结构进行匹配。

如此,通过上述步骤302~步骤306将第一语法结构树中的各个节点逐个与第一子基础数据结构、第二子基础数据结构和第三子基础数据结构进行匹配,从而将第一语法结构树中的所有信息映射到第二语法结构树中,进而保证了第二语法结构树中信息的完整性和准确性。

步骤307、在第一语法结构树中的第一根节点与第一基础数据结构匹配的情况下,信息查询设备将第一语法结构树中的第一根节点作为第二语法结构树的第二根节点。

其中,第二根节点是指第二语法结构树的根节点。

在一种可能的实现方式中,在第一语法结构树中的第一根节点与sqlselect和/或sqlorderby其中之一相同的情况下,将第一语法结构树中的第一根节点加入第二语法结构树中,并作为第二语法结构树的第二根节点。

步骤308、在第一语法结构树中的第一子节点与第一子基础数据结构匹配的情况下,信息查询设备确定第一子节点为第二语法结构树中的第二根节点对应的第一子节点。

在一种可能的实现方式中,在第一语法结构树中的第一子节点与from、where、group by、order by、with和case其中之一相同的情况下,将第一语法结构树中的第一子节点加入第二语法结构树中;并作为第二语法结构树中的第二根节点对应的第一子节点。

步骤309、在第一语法结构树中的第二子节点与第二子基础数据结构匹配的情况下,信息查询设备确定第二子节点为第二语法结构树中的第一子节点对应的第二子节点。

在一种可能的实现方式中,在第一语法结构树中的第二子节点与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral其中之一相同的情况下,将第一语法结构树中的第二子节点加入第二语法结构树中;并作为第二语法结构树中的第一子节点对应的第二子节点。

步骤310、在第一语法结构树中的第二子节点与第一基础数据结构不匹配的情况下,信息查询设备确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点。

在一种可能的实现方式中,在第一语法结构树中的第二子节点与sqlselect和sqlorderby均不同的情况下,将第一语法结构树中的第二子节点加入第二语法结构树中;并作为第二语法结构树中第二子节点对应的第三子节点。

步骤311、在第一语法结构树中的第二子节点与第一基础数据结构匹配的情况下,信息查询设备确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点。

在一种可能的实现方式中,在第一语法结构树中的第二子节点与sqlselect和sqlorderby其中之一相同的情况下,将第一语法结构树中的第二子节点加入第二语法结构树中,并作为第二语法结构树中的第二子节点对应的第三子节点。

步骤312、在第一语法结构树中的第三子节点与第一子基础数据结构匹配的情况下,信息查询设备确定第三子节点为第二语法结构树中的第三子节点对应的第四子节点,直到第一语法结构树中的节点均进行了匹配处理,以得到第二语法结构树中的第二根节点与第二根节点对应的子节点之间的关系。

在一种可行的实现方式中,在第一语法结构树中的第三子节点与from、where、group by、order by、with和case其中之一相同的情况下,将第一语法结构树中的第三子节点加入第二语法结构树中;并作为第二语法结构树中的第三子节点对应的第四子节点;再将第一语法结构树中的剩余节点与第一基础数据结构和第二基础数据结构进行匹配,直到第一语法结构树中的节点均进行了匹配。

步骤313、信息查询设备基于第二语法结构树中的第二根节点、第二语法结构树中的子节点和第二根节点与子节点的关系,得到第二语法结构树。

在本申请实施例中,通过对第一语法结构树进行重构得到第二语法结构树,具体过程以编程语句为sql编程语言对应的编程语句为例进行说明:获取编程语言为sql的编程语句,对编程语句进行形式检查并基于检查结果对编程语句进行处理,得到处理后的编程语句;之后,使用与sql编程语言对应的编程语句对应的解析框架,对sql编程语言对应的编程语句进行解析得到第一语法结构树;将第一语法结构树中的第一个节点作为第一根节点,将第一语法结构树中的第一根节点与sqlselect和sqlorderby进行比较;若第一语法结构树中的第一根节点与sqlselect和/或sqlorderby其中之一相同,说明第一语法结构树中的第一根节点对应一个子编程语句,则将第一语法结构树中的第一根节点对应的第一子节点与from、where、group by、order by、with和case进行比较;若第一语法结构树中的第一根节点对应的第一子节点对应的数据结构与from、where、group by、order by、with和case其中之一相同,说明第一语法结构树中的第一子节点对应一个子编程语句,则将第一语法结构树中的第二子节点对应的数据结构与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral进行比较;若第一语法结构树中的第二子节点对应的数据结构与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral其中之一相同,说明第一语法结构树中的第二子节点对应一个子编程语句,则将第一语法结构树中的第二子节点对应的数据结构与sqlselect和sqlorderby进行比较;若第一语法结构树中的第二子节点对应的数据结构与sqlselect和sqlorderby其中之一不同,将第一语法结构树中的第二子节点对应的数据结构与SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec进行比较;若第一语法结构树中的第二子节点对应的数据结构与SqlNumericLiteral、SqlCharStrinLiteral和SqlDataTypeSpec其中之一相同,则将第一语法结构树中的第二子节点加入第二语法结构树中;若第一语法结构树中的第二子节点对应的数据结构与sqlselect和sqlorderby其中之一相同,说明第一语法结构树中的第二子节点对应一个子编程语句,将第一语法结构树中的第二子节点对应的第三子节点与from、where、group by、order by、with和case进行比较;若第一语法结构树中的第三子节点与from、where、groupby、order by、with和case其中之一相同,说明第一语法结构树中的第三子节点对应一个子编程语句,则将第一语法结构树中的第三子节点对应的第四子节点与SqlWindow、SqlNodeList、SqlBasicCall和SqlIntercalLiteral进行比较,直到第一语法结构树中的所有节点均进行了匹配处理。

需要说明的是,本申请可以将不同的数据结构重新映射成可读性较高的关键字,用户能够通过简单地算法查询到每个最小的关键字对应的信息,使得信息更精细化,极大地简化了信息查询的过程,进而提高了信息查询的速度。

步骤314、信息查询设备接收语句查询请求,基于查询请求从第二语法树中进行语句查询。

需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。

本申请的实施例所提供的信息查询方法,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历在第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

基于前述实施例,本申请的实施例提供一种信息查询装置,该装置可以应用于图1~3对应的实施例提供的信息查询方法中,参照图4所示,该信息查询装置3可以包括:获取单元31、解析单元32、确定单元33、重构单元34和查询单元35,其中:

获取单元31,用于获取待解析编程语句;其中,待解析编程语句是采用目标编程语言生成的;

解析单元32,用于对待解析编程语句进行解析,确定第一语法结构树;其中,第一语法结构树中的各个节点表示语法结构树中的语法结构;

确定单元33,用于基于目标编程语言对应的编程语句,确定基础数据结构;

重构单元34,用于基于基础数据结构,对第一语法结构树进行重构得到第二语法结构树;其中,第二语法结构树可以包括第一语法结构树中的数据结构。

查询单元35,用于接收语句查询请求,基于查询请求从第二语法树中进行语句查询。

在本申请实施例中,获取单元31还用于执行以下步骤:

从待解析编程文件中获取初始编程语句;

对初始编程语句进行处理,得到待解析编程语句。

在本申请实施例中,确定单元33还用于执行以下步骤:

获取目标编程语言的编程语句;

对目标编程语言的编程语句进行分析,得到第一基础数据结构和第二基础数据结构;其中,第一基础数据结构用于表征目标编程语言的操作的操作类型;第二基础数据结构用于表征目标编程语言的编程语句的功能。

在本申请实施例中,重构单元34还用于执行以下步骤:

将第一语法结构树与基础数据结构进行匹配;

基于第一匹配结果,对第一语法结构树进行重构得到第二语法结构树。

在本申请实施例中,重构单元34还用于执行以下步骤:

将第一语法结构树中的第一根节点与第一基础数据结构进行匹配;

在第一语法结构树中的第一根节点与第一基础数据结构匹配的情况下,基于第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对第一语法结构树中的子节点进行匹配处理;其中,第二基础数据结构至少包括第一子基础数据结构、第二子基础数据结构和第三子基础数据结构;

在本申请实施例中,重构单元34还用于执行以下步骤:

在第一语法结构树中的第一根节点与第一基础数据结构匹配的情况下,将第一语法结构树中的第一根节点作为第二语法结构树的第二根节点;

基于对第一语法结构树中的子节点的匹配结果,从第一语法结构树中的子节点中确定第二语法结构树的子节点,以及第二根节点与子节点之间的关系;

基于第二根节点、第二子节点和关系,得到第二语法结构树。

在本申请实施例中,重构单元34还用于执行以下步骤:

将第一根节点对应的第一子节点与第一子基础数据结构进行匹配;

在第一子节点与第一子基础数据结构匹配的情况下,将第一子节点对应的第二子节点与第二子基础数据结构进行匹配;

在第二子节点与第二子基础数据结构匹配的情况下,将第二子节点与第一基础数据结构进行匹配;

基于第二匹配结果、第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对剩余子节点进行匹配处理;其中,剩余子节点包括第一语法结构树中处第一子节点和第二子节点外的子节点。

在本申请实施例中,重构单元34还用于执行以下步骤:

在第二子节点与第一基础数据结构不匹配的情况下,将第二子节点对应的第三子节点与第三子基础数据结构进行匹配;

在第二子节点与第一基础数据结构匹配的情况下,将第三子节点与第一子基础结构进行匹配;

在第三子节点与第一子基础结构匹配的情况下,将第三子节点对应的第四子节点与第二子基础结构进行匹配,直到第一语法结构树中的节点均进行了匹配处理。

在本申请实施例中,重构单元34还用于执行以下步骤:

在第一子节点与第一子基础数据结构匹配的情况下,确定第一子节点为第二语法结构树中的第二根节点对应的第一子节点;

在第二子节点与第二子基础数据结构匹配的情况下,确定第二子节点为第二语法结构树中的第一子节点对应的第二子节点;

在第二子节点与第一基础数据结构不匹配的情况下,确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点;

在第二子节点与第一基础数据结构匹配的情况下,确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点;

在第三子节点与第一子基础数据结构匹配的情况下,确定第三子节点为第二语法结构树中的第三子节点对应的第四子节点,直到第一语法结构树中的节点均进行了匹配处理。

需要说明的是,本实施例中各个单元所执行的步骤的具体实现过程,可以参照图1~3对应的实施例提供的信息查询方法中的实现过程,此处不再赘述。

本申请的实施例所提供的信息确定装置,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历在第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

基于前述实施例,本申请的实施例提供一种信息查询设备,该查询确定设备可以应用于图1~3对应的实施例提供的信息查询方法中,参照图5所示,该信息查询设备4可以包括:存储器41、处理器42和通信总线43;其中:

通信总线43用于实现处理器42和存储器41之间的通信连接;

处理器42用于执行存储器41中存储的信息查询程序,以实现以下步骤:

获取待解析编程语句;其中,待解析编程语句是采用目标编程语言生成的;

对待解析编程语句进行解析,确定第一语法结构树;其中,第一语法结构树中的各个节点表示语法结构树中的语法结构;

基于目标编程语言对应的编程语句,确定基础数据结构;

基于基础数据结构,对第一语法结构树进行重构得到第二语法结构树;其中,第二语法结构树包括第一语法结构树中的数据结构;

接收语句查询请求,基于查询请求从第二语法树中进行语句查询。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的获取待解析编程语句,以实现以下步骤:

从待解析编程文件中获取初始编程语句;

对初始编程语句进行处理,得到待解析编程语句。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的基于目标编程语言对应的编程语句,确定基础数据结构,以实现以下步骤:

获取目标编程语言的编程语句;

对目标编程语言的编程语句进行分析,得到第一基础数据结构和第二基础数据结构;其中,第一基础数据结构用于表征目标编程语言的操作的操作类型;第二基础数据结构用于表征目标编程语言的编程语句的功能。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的基础数据结构,对第一语法结构树进行重构得到第二语法结构树,以实现以下步骤:

将第一语法结构树与基础数据结构进行匹配;

基于第一匹配结果,对第一语法结构树进行重构得到第二语法结构树。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的将第一语法结构树与基础数据结构进行匹配,以实现以下步骤:

将第一语法结构树中的第一根节点与第一基础数据结构进行匹配;

在第一语法结构树中的第一根节点与第一基础数据结构匹配的情况下,基于第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对第一语法结构树中的子节点进行匹配处理;其中,第二基础数据结构至少包括第一子基础数据结构、第二子基础数据结构和第三子基础数据结构。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的对第一语法结构树进行重构得到第二语法结构树,以实现以下步骤:

在第一语法结构树中的第一根节点与第一基础数据结构匹配的情况下,将第一语法结构树中的第一根节点作为第二语法结构树的第二根节点;

基于对第一语法结构树中的子节点的匹配结果,从第一语法结构树中的子节点中确定第二语法结构树的子节点,以及第二根节点与子节点之间的关系;

基于第二根节点、第二子节点和关系,得到第二语法结构树。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的基于第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对第一语法结构树中的子节点进行匹配,以实现以下步骤:

将第一根节点对应的第一子节点与第一子基础数据结构进行匹配;

在第一子节点与第一子基础数据结构匹配的情况下,将第一子节点对应的第二子节点与第二子基础数据结构进行匹配;

在第二子节点与第二子基础数据结构匹配的情况下,将第二子节点与第一基础数据结构进行匹配;

基于第二匹配结果、第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对剩余子节点进行匹配处理;其中,剩余子节点包括第一语法结构树中处第一子节点和第二子节点外的子节点。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的基于第二匹配结果、第一子基础数据结构、第二子基础数据结构和第三子基础数据结构,对剩余子节点进行匹配处理,以实现以下步骤:

在第二子节点与第一基础数据结构不匹配的情况下,将第二子节点对应的第三子节点与第三子基础数据结构进行匹配;

在第二子节点与第一基础数据结构匹配的情况下,将第三子节点与第一子基础结构进行匹配;

在第三子节点与第一子基础结构匹配的情况下,将第三子节点对应的第四子节点与第二子基础结构进行匹配,直到第一语法结构树中的节点均进行了匹配处理。

在本申请其他实施例中,处理器42用于执行存储器41中的信息查询程序的基于对第一语法结构树中的子节点的匹配结果,从第一语法结构树中的子节点中确定第二语法结构树的子节点,以及第二根节点与子节点之间的关系,以实现以下步骤:

在第一子节点与第一子基础数据结构匹配的情况下,确定第一子节点为第二语法结构树中的第二根节点对应的第一子节点;

在第二子节点与第二子基础数据结构匹配的情况下,确定第二子节点为第二语法结构树中的第一子节点对应的第二子节点;

在第二子节点与第一基础数据结构不匹配的情况下,确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点;

在第二子节点与第一基础数据结构匹配的情况下,确定第二子节点为第二语法结构树中的第二子节点对应的第三子节点;

在第三子节点与第一子基础数据结构匹配的情况下,确定第三子节点为第二语法结构树中的第三子节点对应的第四子节点,直到第一语法结构树中的节点均进行了匹配处理。

需要说明的是,本实施例中处理器所执行的步骤的具体实现过程,可以参照图1~3对应的实施例提供的信息查询方法中的实现过程,此处不再赘述。

本申请的实施例所提供的信息查询设备,采用待解析编程语句的目标编程语言的编程语句确定出来的基础数据结构对第一语法结构树进行重构,从而使得待解析编程语句中的语法结构均体现在第二语法结构树中,从而用户可以通过直接遍历在第二语法结构树来得到需要查找的信息,实现了无需人工提取就可以获取到需要提取的信息,解决了信息难以提取的问题;并且,提高了信息的可读性和对信息的精确识别。

基于前述实施例,本申请的实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现图1~3对应的实施例提供的信息查询方法的步骤。

需要说明的是,上述计算机可读存储介质可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所描述的方法。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

技术分类

06120114690989