语法查询方法、系统及计算机存储介质技术方案

技术编号:32907139 阅读:16 留言:0更新日期:2022-04-07 11:57
本发明专利技术公开一种语法查询方法、系统及计算机存储介质。其中,该方法包括:根据预设需求建立自定义语法规则,自定义语法规则包括多个与弹性搜索Elasticsearch中的查询模块一一对应的关键字和标识符;对自定义语法规则做词法分析,得到顺序的二元组列表以及将二元组列表进行语法分析得到预测分析表;根据预测分析表对应的各个语法单元编写与各个语法单元对应的DSL格式语法的接口,并根据DSL格式语法的接口将二元组列表中的各单词生成与各接口对应的多个DSL语句;分别对多个DSL语句进行增强语句分析,生成自定义语法。本发明专利技术中通过建立自定义语法规则,解决了DSL语法复杂、语义不容易理解、结构冗长的问题,通过使用统一的接口,减少了开发人员开发多个接口的工作量。了开发人员开发多个接口的工作量。了开发人员开发多个接口的工作量。

【技术实现步骤摘要】
语法查询方法、系统及计算机存储介质


[0001]本专利技术涉及数据库查询
,具体而言,涉及一种语法查询方法、系统及计算机存储介质。

技术介绍

[0002]Elasticsearch是一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎,是一个近实时的分布式搜索和分析引擎。Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,目的是使全文检索变得简单,隐藏Lucene的复杂性。
[0003]现有技术中,Elasticsearch通信方式主要分为两种,一种是通过REST API进行通信,另一种是通过JavaAPI进行通信,查询相关的数据。
[0004]通过JavaAPI操作Elasticsearch,开发人员通常需要根据用户需求基于Elasticsearch的API进行二次开发,针对多个用户需求开发多个API接口,尤其是对查询结果做二次分析的时候,开发人员的工作量会变得十分巨大。当版本变化时,还需要重构代码,复用性不高。
[0005]通过REST API操作Elasticsearch,查询语法是基于JSON的DSL语法,语法繁杂,语义上不容易理解,结构冗长,出错后难以排查。尤其是当统计数据中的多个字段,对其进行聚合分析时,DSL语句会变得十分复杂,易用性不高。
[0006]针对现有技术中通过JavaAPI进行通信,查询结果需重构代码、复用性低、开发人员工作量巨大,以及通过RESTAPI进行通信,查询结果造成的语法复杂、语义不容易理解、结构冗长、出错后难以排查的问题,目前尚未提出有效的解决方案。

技术实现思路

[0007]本专利技术实施例中提供一种语法查询方法、系统及计算机存储介质,以解决现有技术中通过JavaAPI进行通信,查询结果需重构代码、复用性低、开发人员工作量巨大,以及通过REST API进行通信,查询结果造成的语法复杂、语义不容易理解、结构冗长、出错后难以排查的问题。
[0008]为达到上述目的,一方面,本专利技术提供了一种语法查询方法,所述方法包括:根据预设需求建立自定义语法规则,所述自定义语法规则包括多个与弹性搜索Elasticsearch中的查询模块一一对应的关键字和标识符;对所述自定义语法规则做词法分析,得到顺序的二元组列表以及将所述二元组列表进行语法分析得到预测分析表;根据所述预测分析表对应的各个语法单元编写与所述各个语法单元对应的DSL格式语法的接口,并根据所述DSL格式语法的接口将所述二元组列表中的各单词生成与所述各接口对应的多个DSL语句;分别对所述多个DSL语句进行增强语句分析,生成自定义语法。
[0009]可选的,所述建立自定义语法规则包括:设置所述关键字和标识符;对包括所述关键字和标识符的准语法规则进行非二义性测试;若通过所述非二义性测试,则将所述准语法规则生成为所述自定义语法规则。
[0010]可选的,所述对包括所述关键字的准语法规则进行非二义性测试,包括:计算所述准语法规则中的所有非终结符号的First集以及所有非终结符号的Follow集;判定非终结符号A的任何两个候选式的First集合不相交;判定若A中存在某一候选式可以推导出ε,则其它候选式的First集与Follow(A)集不相交。
[0011]可选的,所述对所述自定义语法规则做词法分析包括:对所述自定义语法规则的文本进行预处理;所述预处理包括:过滤掉空格、注释、换行;通过超前搜索最多n个字符确定单词的词性;识别所述标识符时,识别所述标识符时,得到非确定自动机NFA的状态转换图,通过子集法将所述非确定自动机NFA的状态转换图转化为有限状态自动机DFA的状态转换图;根据所述有限状态自动机DFA的状态转换图中的字符转移情况编写词法分析程序,返回顺序的二元组列表。
[0012]可选的,所述将所述二元组列表进行语法分析得到预测分析表包括:提取公共左因子,消除左递归;求所有非终结符号的FIRST集合和所有非终结符号的FOLLOW集合;构造LL(1)文法的所述预测分析表。
[0013]可选的,所述根据所述预测分析表对应的各个语法单元编写与所述各个语法单元对应的DSL格式语法的接口,并根据所述DSL格式语法的接口将所述二元组列表中的各单词生成与所述各接口对应的多个DSL语句包括:根据所述LL(1)文法的预测分析表对应的各个语法单元编写与所述各个语法单元对应的DSL格式语法的接口;在每个所述DSL格式语法的接口内将相应语法生成DSL语句;将二元组列表根据语法单元对应接口生成相应的DSL语句,并执行返回数据。
[0014]可选的,所述进行增强语句分析,生成自定义语法,包括:通过所述LL(1)文法的预测分析表对应的接口,对所述返回数据进行二次分析,返回最后处理结果;其中,所述分析包括:通过Java表达式引擎处理增强分析函数,并生成多个函数,以实现AviatorFunction接口的call函数。
[0015]另一方面,本专利技术提供了一种语法查询系统,该系统包括:语法定义单元,用于根据预设需求建立自定义语法规则,所述自定义语法规则包括多个与弹性搜索Elasticsearch中的查询模块一一对应的关键字和标识符;词法分析及语法分析单元,用于对所述自定义语法规则做词法分析,得到顺序的二元组列表以及将所述二元组列表进行语法分析得到预测分析表;语句生成单元,用于根据所述预测分析表对应的各个语法单元编写与所述各个语法单元对应的DSL格式语法的接口,并根据所述DSL格式语法的接口将所述二元组列表中的各单词生成与所述各接口对应的多个DSL语句;增强语句分析单元,用于分别对所述多个DSL语句进行增强语句分析,生成自定义语法。
[0016]可选的,所述语法定义单元包括:设置子单元,用于设置所述关键字和标识符;测试子单元,用于对包括所述关键字和标识符的准语法规则进行非二义性测试;生成子单元,用于若通过所述非二义性测试,则将所述准语法规则生成为所述自定义语法规则。
[0017]另一方面,本专利技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的语法查询方法。
[0018]本专利技术的有益效果:
[0019]本专利技术提供了一种语法查询方法、系统及计算机存储介质。本专利技术中通过建立自定义语法规则,即设置关键字和标识符,对包括关键字和标识符的准语法规则进行非二义
性测试,可便于用户理解使用,且解决了DSL语法复杂、语义不容易理解、结构冗长的问题,本专利技术使用统一的DSL格式语法的接口,极大的减少了开发人员开发多个接口的工作量。本专利技术的语法查询方法符合用户需求,易用性高。
附图说明
[0020]图1是本专利技术实施例提供的一种语法查询方法的流程图;
[0021]图2是本专利技术实施例提供的建立自定义语法规则的流程图;
[0022]图3是本专利技术实施例提供的进行非二义性测试的流程图;
[0023]图4是本专利技术实施例提供的词法分析的流程图;
[0024]图5是本专利技术实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种语法查询方法,其特征在于,包括:根据预设需求建立自定义语法规则,所述自定义语法规则包括多个与弹性搜索Elasticsearch中的查询模块一一对应的关键字和标识符;对所述自定义语法规则做词法分析,得到顺序的二元组列表以及将所述二元组列表进行语法分析得到预测分析表;根据所述预测分析表对应的各个语法单元编写与所述各个语法单元对应的DSL格式语法的接口,并根据所述DSL格式语法的接口将所述二元组列表中的各单词生成与所述各接口对应的多个DSL语句;分别对所述多个DSL语句进行增强语句分析,生成自定义语法。2.根据权利要求1所述的语法查询方法,其特征在于,所述建立自定义语法规则包括:设置所述关键字和标识符;对包括所述关键字和标识符的准语法规则进行非二义性测试;若通过所述非二义性测试,则将所述准语法规则生成为所述自定义语法规则。3.根据权利要求2所述的语法查询方法,其特征在于,所述对包括所述关键字的准语法规则进行非二义性测试,包括:计算所述准语法规则中的所有非终结符号的First集以及所有非终结符号的Follow集;判定非终结符号A的任何两个候选式的First集合不相交;判定若A中存在某一候选式可以推导出ε,则其它候选式的First集与Follow(A)集不相交。4.根据权利要求1所述的语法查询方法,其特征在于,所述对所述自定义语法规则做词法分析包括:对所述自定义语法规则的文本进行预处理;所述预处理包括:过滤掉空格、注释、换行;通过超前搜索最多n个字符确定单词的词性;识别所述标识符时,得到非确定自动机NFA的状态转换图,通过子集法将所述非确定自动机NFA的状态转换图转化为有限状态自动机DFA的状态转换图;根据所述有限状态自动机DFA的状态转换图中的字符转移情况编写词法分析程序,返回顺序的二元组列表。5.根据权利要求4所述的语法查询方法,其特征在于,所述将所述二元组列表进行语法分析得到预测分析表包括:提取公共左因子,消除左递归;求所有非终结符号的FIRST集合和所有非终结符号的FOLLOW集合;构造LL(1)文法的所述预测分析表。6.根据权利要求5所述的...

【专利技术属性】
技术研发人员:张明明胡绍勇
申请(专利权)人:上海观安信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1