CN114168622A - 一种基于领域特定语言的数据查询方法及装置 - Google Patents

一种基于领域特定语言的数据查询方法及装置 Download PDF

Info

Publication number
CN114168622A
CN114168622A CN202010948413.8A CN202010948413A CN114168622A CN 114168622 A CN114168622 A CN 114168622A CN 202010948413 A CN202010948413 A CN 202010948413A CN 114168622 A CN114168622 A CN 114168622A
Authority
CN
China
Prior art keywords
data query
statement
chinese
language
service platform
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010948413.8A
Other languages
English (en)
Inventor
焦阳
王宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202010948413.8A priority Critical patent/CN114168622A/zh
Priority to PCT/CN2021/107464 priority patent/WO2022052639A1/zh
Publication of CN114168622A publication Critical patent/CN114168622A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及计算机技术领域,特别涉及一种基于领域特定语言的数据查询方法及装置,用于在保证数据查询效率的同时,提高系统可用性,该方法为:采用设置的基础解析器,对接收到的数据查询语句进行解析,生成相应的抽象语法树,并基于抽象语法树,得到各个规则节点对应的各个解析结果,生成相应的弹性搜索领域特定语言,然后接收并发送弹性搜索搜索引擎返回的数据查询结果。这样,遵循结构化查询语言语法实现结构化查询语言语句与弹性搜索领域特定语言的转换,使得开发人员快速实现弹性搜索搜索引擎的数据查询,极大的提高了开发效率,从而提高了系统可用性,同时保证了数据查询效率。

Description

一种基于领域特定语言的数据查询方法及装置
技术领域
本公开涉及计算机技术领域,特别涉及一种基于领域特定语言的数据查询方法及装置。
背景技术
随着业务系统数据呈爆炸式增长,系统复杂度也越来越高,基于关系型数据库的系统搜索能力,难以满足用户愈来愈高的搜索需求。
目前,通常采用以下方式进行数据搜索:
第一种方式,引入弹性搜索(Elasticsearch,ES)搜索引擎,作为系统搜索能力的核心,将数据库存储的多个业务模型,构建成搜索引擎的全系统对象,使数据库专注于数据存储,由ES搜索引擎专注于数据搜索。
第二种方式,引入Apache Calcite,Apache Calcite的结构如图1所示,ApacheCalcite能够提供标准的结构化查询语言(Structured Query Language,SQL)语言、多种查询优化和连接各种数据源的能力。
然而,ES领域特定语言(Domain-Specific Language,DSL)的语法以及查询应用程序接口(Application Programming Interface,API)的参数较为复杂,因此,开发成本较高,开发效率和系统可用性较低,而Apache Calcite侧重于查询优化,无法保证查询效率。
由此可见,需要设计一种新的方案,以克服上述缺陷。
发明内容
本公开提供了一种基于领域特定语言的数据查询方法及装置,用以在保证数据查询效率的同时,提高系统可用性。
本公开实施例提供的具体技术方案如下:
第一方面,一种基于领域特定语言的数据查询方法,包括:
接收业务平台发送的数据查询语句;
若所述数据查询语句为非中文结构化查询语言语句,则基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征所述数据查询语句包含的语法规则;
基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索弹性搜索领域特定语言,以及将所述弹性搜索领域特定语言发送至弹性搜索搜索引擎;
接收所述弹性搜索搜索引擎基于所述弹性搜索领域特定语言返回的数据查询结果,并将所述数据查询结果发送至所述业务平台。
可选的,接收业务平台发送的数据查询语句之前,进一步包括:
接收到所述业务平台发送的可视化查询请求时,加载设置的查询推荐信息,并将所述查询推荐信息发送至所述业务平台,所述查询推荐信息中至少包含候选的搜索关键词集合;
依次接收所述业务平台基于所述查询推荐信息返回的各个搜索关键词,并将所述各个搜索关键词发送至所述弹性搜索搜索引擎,以及接收所述弹性搜索搜索引擎返回的相应的各个关键词取值集合;
将所述各个关键词取值集合发送至所述业务平台,并接收所述业务平台基于所述各个关键词取值集合返回的所述数据查询语句。
可选的,接收业务平台发送的数据查询语句之后,进一步包括:
若所述数据查询语句为中文结构化查询语言语句,则基于设置的结构化查询语言语法规则,对所述中文结构化查询语言语句进行语法校验,以及基于设置的值校验规则,对所述数据查询语句进行值校验;
若所述数据查询语句通过所述值校验,则基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,其中,所述数字字典中包含中文结构化查询语言语句和非中文结构化查询语言语句之间的映射关系;
基于所述非中文结构化查询语言语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树。
可选的,基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,具体包括:
若所述数据查询语句中未包含表征数据排序条件的第一类关键词,则基于设置的数字字典,以及设置的排序条件,生成相应的包含所述第一类关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在至少一个相应的非中文关键词的第二类关键词,则基于设置的数字字典,以及至少一个非中文关键词,生成相应的包含所述至少一个非中文关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在引用关系的第三类关键词,则基于所述引用关系,确定相应的各个搜索条件,并基于设置的数字字典,生成相应的包含所述各个搜索条件的非中文结构化查询语言语句。
可选的,基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,具体包括:
基于所述数据查询语句,采用设置的词法分析器,确定所述数据查询语句中包含的各个词法单元;
基于所述各个词法单元,采用设置的语法分析器,确定所述数据查询语句中包含的各个规则节点,并基于所述各个规则节点,生成相应的抽象语法树;
其中,所述词法分析器和所述语法分析器是基于设置的结构化查询语言语法规则,采用设置的基础解析器生成的。
可选的,基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,具体包括:
采用设置的深度优先算法,依次读取所述抽象语法树中包含的各个规则节点和各个叶子节点,其中,叶子节点用于表征所述数据查询语句中包含的词法单元;
基于所述各个规则节点,根据预先设置的结构化查询语言语法规则与弹性搜索领域特定语言语法规则之间的对应关系,生成相应的各个初始解析结果,并基于所述各个叶子节点,生成相应的各个中间解析结果;
基于所述数据查询语句的上下文,对所述各个初始解析结果和所述各个中间解析结果进行合并,生成相应的各个解析结果;
基于所述数据查询语句的上下文,对各个解析结果进行合并,生成相应的弹性搜索领域特定语言。
第二方面,一种基于领域特定语言的数据查询装置,包括:
第一处理单元,用于接收业务平台发送的数据查询语句;
第二处理单元,用于若所述数据查询语句为非中文结构化查询语言语句,则基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征所述数据查询语句包含的语法规则;
第三处理单元,用于基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,以及将所述弹性搜索领域特定语言发送至弹性搜索搜索引擎;
第四处理单元,用于接收所述弹性搜索搜索引擎基于所述弹性搜索领域特定语言返回的数据查询结果,并将所述数据查询结果发送至所述业务平台。
可选的,接收业务平台发送的数据查询语句之前,所述第一处理单元进一步用于:
接收到所述业务平台发送的可视化查询请求时,加载设置的查询推荐信息,并将所述查询推荐信息发送至所述业务平台,所述查询推荐信息中至少包含候选的搜索关键词集合;
依次接收所述业务平台基于所述查询推荐信息返回的各个搜索关键词,并将所述各个搜索关键词发送至所述弹性搜索搜索引擎,以及接收所述弹性搜索搜索引擎返回的相应的各个关键词取值集合;
将所述各个关键词取值集合发送至所述业务平台,并接收所述业务平台基于所述各个关键词取值集合返回的所述数据查询语句。
可选的,接收业务平台发送的数据查询语句之后,所述第二处理单元进一步用于:
若所述数据查询语句为中文结构化查询语言语句,则基于设置的结构化查询语言语法规则,对所述中文结构化查询语言语句进行语法校验,以及基于设置的值校验规则,对所述数据查询语句进行值校验;
若所述数据查询语句通过所述值校验,则基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,其中,所述数字字典中包含中文结构化查询语言语句和非中文结构化查询语言语句之间的映射关系;
基于所述非中文结构化查询语言语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树。
可选的,基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句时,所述第二处理单元具体用于:
若所述数据查询语句中未包含表征数据排序条件的第一类关键词,则基于设置的数字字典,以及设置的排序条件,生成相应的包含所述第一类关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在至少一个相应的非中文关键词的第二类关键词,则基于设置的数字字典,以及至少一个非中文关键词,生成相应的包含所述至少一个非中文关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在引用关系的第三类关键词,则基于所述引用关系,确定相应的各个搜索条件,并基于设置的数字字典,生成相应的包含所述各个搜索条件的非中文结构化查询语言语句。
可选的,基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树时,所述第二处理单元具体用于:
基于所述数据查询语句,采用设置的词法分析器,确定所述数据查询语句中包含的各个词法单元;
基于所述各个词法单元,采用设置的语法分析器,确定所述数据查询语句中包含的各个规则节点,并基于所述各个规则节点,生成相应的抽象语法树;
其中,所述词法分析器和所述语法分析器是基于设置的结构化查询语言语法规则,采用设置的基础解析器生成的。
可选的,基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言时,所述第三处理单元具体用于:
采用设置的深度优先算法,依次读取所述抽象语法树中包含的各个规则节点和各个叶子节点,其中,叶子节点用于表征所述数据查询语句中包含的词法单元;
基于所述各个规则节点,根据预先设置的结构化查询语言语法规则与弹性搜索领域特定语言语法规则之间的对应关系,生成相应的各个初始解析结果,并基于所述各个叶子节点,生成相应的各个中间解析结果;
基于所述数据查询语句的上下文,对所述各个初始解析结果和所述各个中间解析结果进行合并,生成相应的各个解析结果;
基于所述数据查询语句的上下文,对各个解析结果进行合并,生成相应的弹性搜索领域特定语言。
第三方面,一种基于领域特定语言的数据查询装置,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行所述存储器中存储的可执行指令,以实现上述第一方面中任一项所述的基于领域特定语言的数据查询方法。
第四方面,一种存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述第一方面中任一项所述的基于领域特定语言的数据查询方法。
综上所述,本公开实施例中,若接收到的业务平台发送的数据查询语句为非中文结构化查询语言语句,则采用设置的基础解析器,对数据查询语句进行解析,生成包含各个规则节点的抽象语法树,然后,基于抽象语法树,得到各个规则节点对应的各个解析结果,并基于个解析结果,生成相应的弹性搜索领域特定语言,之后,接收弹性搜索搜索引擎返回的数据查询结果,并将数据查询结果发送至业务平台。这样,本公开实施例中,遵循结构化查询语言语法实现结构化查询语言语句与弹性搜索领域特定语言的转换,使得熟知的结构化查询语言语法的开发人员采用常用的结构化查询语言就可以实现弹性搜索搜索引擎的数据查询,不必要增加对弹性搜索搜索语法的学习成本,因此,极大的提高了系统开发效率,提高了系统可用性,同时,基于弹性搜索搜索引擎进行数据查询,保证了数据查询效率。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中提供的一种Apache Calcite的构架示意图;
图2A为本公开实施例中提供的一种双解析器、业务平台、ES搜索引擎之间的交互示意图;
图2B为本公开实施例中提供的一种基于领域特定语言的数据查询方法的流程示意图;
图3本公开实施例中提供的另一种基于领域特定语言的数据查询方法的流程示意图;
图4A为本公开实施例中提供的一种AST的示意图;
图4B为本公开实施例中提供的一种非中文SQL语言转换为ES DSL的流程示意图;
图5为本公开实施例中提供的另一种基于领域特定语言的数据查询方法的流程示意图;
图6A-图6E为本公开实施例中提供的一组交互界面示意图;
图7A-图7C分别为本公开实施例中提供的中文SQL转换为非中文SQL语句的三种情况示意图;
图8为本公开实施例中提供的一种基于领域特定语言的数据查询装置的逻辑结构示意图;
图9为本公开实施例中提供的一种基于领域特定语言的数据查询装置的实体结构示意图。
具体实施方式
针对现有技术中系统可用性较差的问题,为了在保证数据查询效率的同时,提高系统可用性,在本公开实施例中,提供一种基于领域特定语言的数据查询的解决方案。
该方案为:若接收到的业务平台发送的数据查询语句为非中文SQL语句,则采用设置的基础解析器,对数据查询语句进行解析,生成包含各个规则节点的AST,然后,基于AST,得到各个规则节点对应的各个解析结果,并基于各个解析结果,生成相应的ES DSL,之后,接收ES搜索引擎返回的数据查询结果,并将数据查询结果发送至业务平台。
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
参阅图2A所示,本公开实施例中,提供一种双解析器,该双解析器至少包含外部解析器和内部解析器。
其中,外部解析器中至少包含中文解析器和校验器,中文解析器用于将中文SQL语句转换为非中文SQL语句,校验器用于对业务平台发送的关键词取值进行值校验。
内部解析器中至少包含基础解析器、链式解析器、本地解析器,基础解析器用于基于非中文SQL语句,生成相应的AST,链式解析器用于基于AST,生成相应的ES DSL,本地解析器用于返回中文SQL语句的语法校验结果和语法解析信息。
本公开实施例中,外部解析器和内部解析器可以单独使用,也可以集成于一个装置中,本公开对此并不限定。
本公开实施例中,双解析器的结构设计中,内部解析器遵循SQL语法,基于ANTLR实现非中文SQL语句与ES DSL的转换,外部解析器基于Java实现中文SQL语句与非中文SQL语句的转换,提供了近自然语言的查询方式,这样,可以根据实际的业务需求,灵活扩展语法规则。
参阅图2B所示,本公开实施例中,基于领域特定语言的数据查询的流程如下:
步骤S201:接收业务平台发送的数据查询语句。
步骤S202:若数据查询语句为非中文结构化查询语言语句,则基于数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征数据查询语句包含的语法规则。
步骤S203:基于抽象语法树,得到各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,以及将弹性搜索领域特定语言发送至弹性搜索搜索引擎。
步骤S204:接收弹性搜索搜索引擎基于弹性搜索领域特定语言返回的数据查询结果,并将数据查询结果发送至业务平台。
接下来,对上述基于领域特定语言的数据查询流程进行清楚、完整地描述。
参阅图3所示,本公开实施例中,采用上述双解析器,进行数据查询的详细流程如下:
步骤S301:外部解析器接收业务平台发送的数据查询语句。
例如,外部解析器接收业务平台发送数据查询语句1,数据查询语句1为“SELECTtaskId FROM task WHERE taskId='T1'”。
步骤S302:若数据查询语句为非中文SQL语句,则外部解析器对数据查询语句进行值校验。
本公开实施例中,数据查询语句由各个搜索关键词组成,基于设置的搜索关键词类型,预先设置相应的值校验规则。
其中,设置的搜索关键词类型可以包括但不限于字符串类型、整数类型、浮点类型、时间类型、布尔类型、数组类型、对象类型中的任一项或组合。
具体的,外部解析器中的校验器基于设置的值校验规则,对数据查询语句中包含的各个搜索关键词对应的各个关键词取值进行值校验。
例如,假设,设置的值校验规则中,字符串类型的搜索关键词对应的关键词取值需要满足字符串长度范围为1-10字符,数据查询语句1为非中文SQL语句,仅以“taskId='T1'”为例,那么,外部解析器中的校验器基于设置的值校验规则,对数据查询语句1中包含的搜索关键词“taskId”对应的关键词取值“T1”进行值校验,此时,搜索关键词“taskId”对应的关键词取值“T1”满足字符串长度范围1-10字符,因此,搜索关键词“taskId”对应的关键词取值“T1”通过值校验。
步骤S303:若数据查询语句通过值校验,则外部解析器将数据查询语句发送至内部解析器。
具体的,若数据查询语句中包含的各个搜索关键词对应的各个关键词取值通过值校验,则外部解析器将数据查询语句发送至内部解析器。
例如,若数据查询语句1中包含的搜索关键词“taskId”对应的关键词取值“T1”通过值校验,则外部解析器将数据查询语句1发送至内部解析器。
步骤S304:内部解析器基于数据查询语句,采用设置的基础解析器,生成包含各个规则节点的AST。
需要说明的是,本公开实施例中,内部解析器可以采用ANTLR元语言描述SQL语法规则,并基于编写的SQL语法规则,通过ANTLR语法生成工具,生成基础解析器,这样,实现了大部分的基础解析功能,因此,相对于根据理论基础逐一实现各个功能,能够提高系统开发效率,减少系统资源的浪费。
具体的,基于预先设置相应的SQL语法规则,并采用ANTLR,预先生成相应的词法分析器和语法分析器。
其中,SQL语法规则中至少包含词法规则、语法规则和句法规则,词法规则用于表征词法单元的结构,语法规则用于表征词法单元组成的词汇的结构,句法规则用于表征一个数据查询语句中各个词汇之间关系。
本公开实施例中,可以采用ANTLR元语言描述SQL语法规则中的SELECT句法规则:
SELECT fields FROM table whereClause?groupbyClause?orderClause?limitClause
本公开实施例中,可以采用ANTLR元语言描述SELECT语法、WHERE语法、ORDER语法、LIMIT语法、GROUPBY语法等语法规则。
WHERE语法的元语言描述为:whereClause:WHERE expression,其中,expression表示表达式,WHERE语法用于表示根据搜索条件进行数据查询。
GROUPBY语法的元语言描述为:groupbyClause:GROUP BY ID(COMMA ID)*,GROUPBY语法用于表示根据指定列对数据查询结果进行分组。
ORDER语法的元语言描述为:
orderClause:ORDER BY order(COMMA order)*
order:name(ASC|DESC)?
其中,ASC表示升序排序,DESC表示降序排序,ORDER语法用于表示根据指定字段对数据查询结果进行排序。
LIMIT语法的元语言描述为:limitClause:LIMIT(offset=INT COMMA)?size=INT,其中,LIMIT语法用于表示限制数据查询结果中的数据数目。
本公开实施例中,WHERE语法中的expression可以包括但不限于以下规则中的任一项或组合:
LPAREN expression RPAREN;用于表示括号形式的表达式;
leftExpr=expression operator=(MUL|DIV|MOD)rightExpr=expression;用于表示乘、除、求余操作;
leftExpr=expression operator=(PLUS|MINUS)rightExpr=expression;用于表示加、减操作;
leftExpr=expression operator=(LSH|RSH|USH)rightExpr=expression;用于表示左移、右移、无符号右移操作;
leftExpr=expression operator=(LT|LTE|GT|GTE)rightExpr=expression;用于表示小于、小于或等于、大于、大于或等于操作;
leftExpr=expression operator=(EQ|NE|AEQ|NAEQ|TEQ|NTEQ|MPPEQ|NMPPEQ)rightExpr=expression;用于表示等于、不等于、模糊查询、反向模糊查询、短语匹配、反向短语匹配、前缀短语匹配、反向前缀短语匹配操作;
leftExpr=expression operator=AND rightExpr=expression;用于表示与运算;
leftExpr=expression operator=OR rightExpr=expression;用于表示或运算
expr=name BETWEEN left=identity AND right=identity;用于表示查询取值介于两个值之间的数据;
leftExpr=expression operator=XOR rightExpr=expression;用于表示异或运算;
inClause;用于表示查询多个字段。
仅以“leftExpr=expression operator=AND rightExpr=expression”为例进行说明,“leftExpr=expression”用于表征左表达式,“operator=AND”表征操作符为与操作,“rightExpr=expression”用于表征右表达式,如“taskId='T1'and projectId='S1'”。
需要说明的是,本公开实施例中,仅以SELECT语法、WHERE语法、ORDER语法、LIMIT语法、GROUPBY语法等语法规则进行举例,在实际应用中,可以根据实际需求,进行语法规则设置。
本公开实施例中,由于将上述SQL语法规则用于解析转换ES DSL时,有些ES DSL语法规则无法通过通用的SQL语法规则来表示,因此,参阅表1、表2所示,对上述SQL语法规则中的语法规则和词法规则进行了扩展,并设置SQL语法规则与ES DSL语法规则之间的对应关系,使得SQL能够解析转换为ES DSL。
表1语法扩展
Figure BDA0002676074030000131
表2词法扩展
ES DSL 词法描述
match 模糊查询(AEQ):~=反向模糊查询(NAEQ):!~=
match_phase 短语匹配(TEQ):~==反向短语匹配(NTEQ):!~==
match_phrase_prefix 前缀短语匹配(MPPEQ):~===反向前缀短语匹配(NMPPEQ):!~===
具体的,执行步骤S303时,可以采用但不限于以下步骤:
A1、内部解析器基于数据查询语句,采用设置的词法分析器,确定数据查询语句中包含的各个词法单元。
其中,词法单元用于表征不可再分的单词或符号,例如,“SELECT”、“=”。
具体的,词法分析器依次读取数据查询语句中包含的各个字符,并基于设置的各个词法规则,确定数据查询语句中包含的各个词法单元。
本公开实施例中,词法单元类型可以包括但不限于关键字、标识符、字面量、运算符和分界符,其中,关键字用于表征不能用作标识符的保留字符,如“SELECT”,标识符用于表征SQL语法中包含的表名称、列名称等搜索关键词,字面量用于表征字符串和数值。
例如,内部解析器基于数据查询语句1,采用通过ANTLR预先生成的词法分析器,确定数据查询语句1中包含以下词法单元:
关键字:SELECT、FROM、WHERE;
标识符:taskId、task;
字面量:T1;
运算符:=。
本公开实施例中,可以针对各个词法单元类型,预先设置相应的优先级,进而,若一个词法单元满足至少一个词法规则,词法分析器基于预先设置的优先级,确定一个词法单元类型的词法单元类型。
例如,假设,预先设置关键字的优先级高于标识符的优先级,以“SELECT”为例,“SELECT”同时满足关键字的词法规则和标识符的词法规则,词法分析器基于预先设置的优先级,确定“SELECT”的词法单元类型为关键字。
A2、内部解析器基于各个词法单元,采用设置的语法分析器,确定数据查询语句中包含的各个规则节点,并基于各个规则节点,生成相应的AST。
本公开实施例中,各个规则节点用于表征数据查询语句包含的各个语法规则。
具体的,语法分析器采用设置的状态转换表,基于设置的各个语法规则,确定各个词法单元各自对应的各个语法规则,并基于得到的各个语法规则,确定相应的规则节点,以及基于各个规则节点,和各个叶子节点,生成相应的AST,其中,叶子节点用于表征数据查询语句中包含的词法单元。
例如,参阅图4A所示,语法分析器采用设置的状态转换表,基于SELECT语法规则、WHERE语法规则、ORDER语法规则、LIMIT语法规则、GROUPBY语法规则,确定各个词法单元各自对应的各个语法规则,并基于得到的各个语法规则,确定相应的规则节点,以及基于各个规则节点,和叶子节点{SELECT:“SELECT”}、叶子节点{STAR:“*”}、叶子节点{FROM:“FROM”}、叶子节点{ID:“task”}、叶子节点{WHERE:“WHERE”}、叶子节点{ID:“taskId”}、叶子节点{EQ:“=”}、叶子节点{STRING:“T1”},生成如图4A所示的AST。
步骤S305:内部解析器基于AST,得到各个规则节点对应的各个解析结果,并基于各个解析结果,生成ES DSL。
具体的,内部解析器中的链式解析器采用设置的深度优先算法,依次读取AST中包含的所述各个规则节点和各个叶子节点;
链式解析器基于各个规则节点,根据预先设置的SQL语法规则与ES DSL语法规则之间的对应关系,生成相应的各个初始解析结果,并基于各个叶子节点,生成相应的各个中间解析结果;
链式解析器基于数据查询语句的上下文,对各个初始解析结果和各个中间解析结果进行合并,生成相应的各个解析结果;
链式解析器基于数据查询语句的上下文,对各个解析结果进行合并,生成相应的ES DSL。
例如,参阅图4A所示,仅以读取规则节点{selectOperation}、叶子节点{SELECT:“SELECT”}、叶子节点{STAR:“*”}、规则节点{whereClause}、叶子节点{WHERE:“WHERE”}、叶子节点{ID:“taskId”}、叶子节点{EQ:“=”}、叶子节点{STRING:“T1”}为例进行说明,内部解析器采用设置的深度优先算法,首先,读取AST中包含的规则节点{selectOperation},进入SELECT语法规则,根据预先设置的SQL语法规则中的SELECT语法规则与ES DSL语法规则之间的对应关系,生成相应的初始解析结果1。
然后,依次读取叶子节点{SELECT:“SELECT”}、规则节点{fieldList:1}、读取叶子节点{STAR:“*”},由于叶子节点{STAR:“*”}表征匹配全部,因此,不生成相应的中间解析结果,基于数据查询语句1的上下文,直接将初始解析结果1作为相应的解析结果1,解析结果1用于表征从所有数据进行查询,解析结果1参阅以下代码所示:
Figure BDA0002676074030000151
接着,读取规则节点{whereClause},进入WHERE语法规则,生成相应的初始解析结果2,然后,依次读取叶子节点{ID:“taskId”}、叶子节点{EQ:“=”}、叶子节点{STRING:“T1”},基于叶子节点{ID:“taskId”}、叶子节点{EQ:“=”}、叶子节点{STRING:“T1”},生成相应的中间解析结果2,基于数据查询语句1的上下文,对初始解析结果2和中间解析结果2进行合并,生成解析结果2,解析结果1用于表征查询“taskId”对应的关键词取值为“T1”的数据,解析结果2参阅以下代码所示:
Figure BDA0002676074030000161
最后,基于数据查询语句1的上下文,对解析结果1和解析结果2进行合并,生成ESDSL,ES DSL用于表征从所有数据中查询“taskId”对应的关键词取值为“T1”的数据,ES DSL参阅以下代码所示:
Figure BDA0002676074030000162
本公开实施例中,可以进一步通过预设的函数进入或退出各个规则节点,例如,参阅图4A所示,通过预设的进入规则函数enterRule()进入规则节点,通过预设的退出规则函数exitRule()退出规则节点。
需要说明的是,本公开实施例中,对AST进行深度优先遍历的过程,实际上就是对各个语法规则进行链式解析的过程,也就是说,针对AST进行深度优先遍历时,参阅图4B所示,首先,进入SELECT语法规则的解析类,即QuerySelectFieldsParser中进行解析,并保存解析结果到上下文中,然后匹配到FROM语法规则,进入QueryFromParser中进行解析,并保存解析结果到上下文中,然后,依次进行WHERE语法规则、GROUPBY语法规则、ORDER语法规则、LIMIT语法规则的解析,并保存相应的解析结果到上下文中,最终,基于上下文中的各个初始解析结果,合并生成用于ES搜索的ES DSL。
步骤S306:内部解析器将ES DSL发送至ES搜索引擎。
步骤S307:ES搜索引擎基于ES DSL进行数据查询,得到数据查询结果。
需要说明的是,本申请实施例中,ES搜索引擎是一个分布式、高扩展、高实时的搜索与数据分析引擎。ES搜索引擎采用集群构架,集群是一个或多个节点的集合,它们共同保存整个数据,并提供跨所有节点的联合索引和搜索功能,节点作为集群一部分的单个服务器,存储数据并参与集群的索引和搜索功能,其中,每一个索引都可以被分成分片,每个分片可以有0个或多个副本,下文中,将被复制的原始分片称为主分片,将主分片的副本称为副本分片,每个分片的主分片和副分片不在同一节点中。
例如,ES集群由节点1和节点2组成,其中,索引1被分成分片0和分片1,节点1中包含分片0的主分片和分片1的副本分片,节点2中包含分片0的副本分片和分片1的主分片。
具体的,执行步骤S307时,可以包括但不限于以下几个步骤:
A1、ES集群中的一个节点接收到ES DSL时,将ES DSL广播至包含目标索引的分片的其他节点。
本申请实施例中,将接收到ES DSL的节点称为协调节点,协调节点在接收到ESDSL后,根据ES DSL,确定进行查询的目标索引,并将ES DSL广播至包含目标索引的主分片或副本分片的其它节点中。
例如,ES集群中的节点1接收到ES DSL,将节点1称为协调节点,此时,节点1根据ESDSL,确定进行查询的目标索引为索引1,并将ES DSL广播至包含索引1的分片的节点2。
A2、其他节点根据ES DSL,对各个包含目标索引的分片执行查询操作,并将查询到的文档标识添加至各自的有序优先队列中,以及将各自的有序优先队列中的文档标识和文档标识对应的排序值返回至协调节点。
其中,文档是可以建立索引的基本信息单元,文档标识用于唯一标识一个文档。
例如,节点2根据ES DSL,对分片0的副本分片执行查询操作,并将查询到的文档标识doc_ID1、doc_ID2添加至节点2的有序优先队列中,以及将节点2的有序优先队列中的文档标识doc_ID1、doc_ID2、doc_ID1对应的排序值、doc_ID2对应的排序值发送至节点1,其中,doc_ID1对应的排序值表征doc_ID1的优先级最高,doc_ID2对应的排序值表征doc_ID2的优先级低于doc_ID1的优先级,doc_ID1和doc_ID2对应的文档中包含任务编号为T1的任务数据。
A3、协调节点根据排序值,将得到的文档标识合并到协调节点的有序优先队列中,得到全局查询结果列表,并基于全局查询结果列表,得到数据查询结果。
例如,节点1根据排序值,将得到的doc_ID1、doc_ID2合并到协调节点的有序优先队列中,得到全局查询结果列表,该全局查询结果列表中的文档标识依次为doc_ID1、doc_ID2,然后,节点1基于全局查询结果列表,从节点2的分片0的副本分片中获取相应的文档,作为数据查询结果1。
步骤S308:ES搜索引擎将数据查询结果发送至内部解析器。
步骤S309:内部解析器将数据查询结果发送至业务平台。
本公开实施例中,为了降低系统使用的难度,方便用户在复杂业务系统中进行便捷的搜索,因此,外部解析器基于数据字典,提供了中文SQL语句的搜索方式,这样,用户可以根据中文关键词,实现便捷的中文SQL语句搜索。
参阅图5所示,以可视化的中文查询场景为例,对本公开实施例进行进一步说明。
步骤S501:业务平台获取用户输入的模式选择信息。
本公开实施例中,模式选择信息用于表征业务平台提供的查询方式,例如,中文SQL查询方式和非中文SQL查询方式,在实际应用中,业务平台还可以根据业务场景提供其他查询方式,但最终都会转换成使用非中文SQL查询方式,在此不再赘述。
业务平台获取到用户输入的模式选择信息时,若基于模式选择信息,确定模式选择信息表征中文SQL查询方式,则继续执行步骤S402。
步骤S502:业务平台向外部解析器发送可视化查询请求。
步骤S503:外部解析器加载查询推荐信息。
本公开实施例中,查询推荐信息中至少包含候选的搜索关键词集合,即,查询推荐信息中至少包含数据字典,可以包含数据字典中的任一项或组合,其中,数据字典、操作符表和运算符表是根据业务平台提供的业务设置的,数据字典中包含中文SQL语句和非中文SQL语句之间的映射关系。
下文中,仅以查询推荐信息包含数据字典、操作符表和运算符表为例进行说明。
参阅表3所示,数据字典中关键词表中提供中文SQL语句和非中文SQL语句中搜索关键词的映射关系,其中,中文关键词用于表征搜索关键词的中文名称,英文关键词用于表征ES搜索引擎使用的搜索关键词,操作符表和运算符表参阅表4和表5所示。
需要说明的是,本公开实施例中,仅以英文关键词进行举例,也可以根据实际业务,提供其它类型的非中文关键词。
表3数据字典中的关键词表
Figure BDA0002676074030000191
表4操作符表
操作符 描述
AND 与操作,多个条件同时满足
OR 或操作,满足任一条件
GROUP BY 聚类
ORDER BY 排序
表5运算符表
Figure BDA0002676074030000201
具体的,外部解析器通过对业务平台中根据实际业务设置的业务模型进行梳理,得到中文关键词、英文关键词和字段类型,并通过构建ES搜索引擎的索引获得相应的索引字段,以及基于中文关键词、英文关键词、字段类型和索引字段,构建数据字典。
进一步的,基于数据字典、SQL语法规则、操作符表和运算符表,构建业务平台对应的语义模型。这样,在进行数据查询的过程中,若业务平台中的出现关键词的新增或变更,数据字典可以进行实时同步,实现数据字典的动态更新,从而不断扩展业务平台的搜索边界,提高业务平台的搜索能力。
需要说明的是,本公开实施例中,内部解析器也可以在基于数据查询语句,采用基础解析器,生成AST时,加载上述语义模型,进而直接根据语义模型进行解析。
步骤S504:业务平台接收外部解析器返回的查询推荐信息。
业务平台接收到外部解析器返回的查询推荐信息时,基于查询推荐信息,向用户展示相应的交互界面。
例如,参阅图6A所示,业务平台基于查询推荐信息中包含的数据字典、操作符表和运算符表,向用户展示如图6A所示的交互界面。
步骤S505:业务平台获取用户输入的搜索关键词。
例如,参阅图6B所示,业务平台获取用户输入的搜索关键词“优先级”。
进一步的,业务平台基于运算符表,获取用户输入的运算符。
例如,参阅图6B所示,业务平台获取用户输入的运算符“=”。
步骤S506-步骤S508:业务平台将搜索关键词经外部解析器、内部解析器发送至ES搜索引擎。
步骤S509:ES搜索引擎基于搜索关键词,确定相应的关键词取值集合。
例如,ES搜索引擎基于“优先级”,确定相应的关键词取值集合1{“最高优”,“高优”,“中等”,“较低”,“极低”}。
步骤S510-步骤S512:业务平台接收ES搜索引擎通过内部解析器、外部解析器返回的关键词取值集合。
业务平台接收到ES搜索引擎通过内部解析器、外部解析器返回的关键词取值集合,并通过交互界面,展示关键词取值集合,以及获取用户通过交互界面输入的上述搜索关键词对应的关键词取值。
例如,参阅图6C所示,业务平台接收到关键词取值集合1时,通过交互界面,展示关键词取值集合1,参阅图6D所示,业务平台获取用户通过交互界面输入的搜索关键词“优先级”对应的关键词取值“最高优”。
进一步的,业务平台基于操作符表,通过交互界面,展示相应的操作符。
例如,参阅图6D,业务平台基于操作符表,通过交互界面,展示操作符“AND”、“OR”、“ORDER BY”。
这样,通过重复执行步骤S505-S512,得到用户输入的各个搜索关键词,以及各个搜索关键词对应的取值。
例如,参阅图6E所示,得到用户输入的“优先级=最高级AND截止日期=2020-01-01AND(任务分类=任务)ORDER BY开始日期ASC”,其中,ASC用于表征升序排列。
这样,本公开实施例中,通过外部解析器,为业务平台提供了关键词推荐、值推荐和操作符推荐,从而实现了良好的可视化交互,为客户提供了便捷的DSL填充方式。
步骤S513:业务平台获取用户输入的数据查询语句。
例如,业务平台获取用户输入的数据查询语句2“优先级=最高级AND截止日期=2020-01-01AND(任务分类=任务)ORDER BY开始日期ASC”。
步骤S514:业务平台将数据查询语句发送至外部解析器。
例如,业务平台将数据查询语句2发送至外部解析器。
步骤S515:外部解析器判断数据查询语句是否为中文SQL,若是,则执行步骤S516,否则,直接将数据查询语句发送至内部解析器进行解析。
需要说明的是,本公开实施例中,若数据查询语句为非中文SQL,直接将数据查询语句发送至内部解析器进行解析的情况,与上文中步骤S302-S310的过程相同,在此不再赘述。
步骤S516:外部解析器将数据查询语句发送至内部解析器。
例如,外部解析器将数据查询语句2发送至内部解析器。
步骤S517:内部解析器对数据查询语句进行语法校验。
具体的,内部解析器基于SQL语法规则,采用词法分析器和语法分析器,对数据查询语句进行语法校验,生成相应的语法解析结果,以及生成相应的语法解析信息,并通过本地解析器将语法解析结果和语法解析信息返回至外部解析器。
其中,语法解析结果用于表征数据查询语句是否通过语法校验,语法解析信息中至少包含数据查询语句中各个词法单元的词法单元类型和各个词法单元的位置信息,所述语法解析信息用于在交互界面的搜索框中根据光标提示不同的搜索关键词。
例如,内部解析器基于SQL语法规则,采用词法分析器和语法分析器,对数据查询语句2进行语法校验,生成相应的语法解析结果,以及生成相应的语法解析信息,并通过本地解析器将语法解析结果和语法解析信息返回至外部解析器,其中,语法解析结果表征数据查询语句2通过语法校验,语法解析信息中包含数据查询语句2中各个词法单元的词法单元类型和各个词法单元的位置信息。
步骤S518:外部解析器接收内部解析器返回的语法校验结果。
步骤S519:若数据查询语句通过语法校验,外部解析器对数据查询语句进行值校验。
若外部解析器基于内部解析器返回的语法校验结果,确定数据查询语句通过语法校验,则对数据查询语句进行值校验,否则,向业务平台发送表征数据查询语句未通过语法校验的语法错误提示。
具体的,外部解析器中的校验器基于设置的值校验规则,以及基于内部解析器返回的语法解析信息,对数据查询语句中包含的各个搜索关键词对应的各个关键词取值进行值校验。
例如,假设,设置的值校验规则中,若字段类型为时间,则关键词取值的格式为“年-月-日时:秒:分”,以数据查询语句2中包含的搜索关键词“截止日期”为例,校验器基于内部解析器返回的语法解析信息获取数据查询语句2中“截止日期”对应的关键词取值“2020-01-01”,并基于数据字典,确定“截止日期”的字段类型为时间,此时,校验器基于设置的值校验规则,确定关键词取值“2020-01-01”值校验失败。
步骤S520:业务平台接收外部解析器返回的值校验结果。
进一步的,若业务平台基于值校验结果,确定数据查询语句通过值校验,则执行步骤S521,否则,通过交互界面,提示用户数据查询语句未通过值校验。
步骤S521:业务平台向外部解析器发送中文解析请求,中文解析请求中携带数据查询语句。
例如,业务平台向外部解析器发送中文解析请求,中文解析请求中携带数据查询语句2。
步骤S522:外部解析器基于数据查询语句,生成非中文SQL语句。
具体的,执行步骤S522时,存在但不限于以下几种情况:
第一种情况:若数据查询语句中未包含表征数据排序条件的第一类关键词,则基于数字字典,以及设置的排序条件,生成相应的包含第一类关键词的非中文SQL语句。
本公开实施例中,第一类关键词可以但不限于是指“ORDER BY”。
例如,参阅图7A所示,假设,设置的排序条件为按照创建时间升序排序,数据查询语句3为“项目=测试项目”,此时,数据查询语句3中不包含第一类关键词“ORDER BY”,那么,基于数字字典,以及设置的排序条件,生成包含第一类关键词“ORDER BY”的非中文SQL语句“SELECT*FROM table WHERE project=测试项目ORDER BY createdAt DESC”。
第二种情况:若数据查询语句中包含表征存在至少一个对应的非中文关键词的第二类关键词,则基于设置的数字字典,以及至少一个非中文关键词,生成相应的包含至少一个非中文关键词的非中文SQL语句。
需要说明的是,本公开实施例中,至少一个非中文关键词中的各个非中文关键词之间采用或条件连接。
例如,参阅图7B所示,假设,数据查询语句4为“操作人=xiaoli”,其中,“操作人”在数据字典中对应英文关键词“operator”和英文关键词“updatedBy”,则基于设置的数字字典,以及英文关键词“operator”和英文关键词“updatedBy”,生成相应的包含英文关键词“operator”和英文关键词“updatedBy”的非中文SQL语句“SELECT*FROM table WHEREoperator=xiaoli OR updatedBy=xiaoli”。
第三种情况:若数据查询语句中包含表征存在引用关系的第三类关键词,则基于引用关系,确定相应的各个搜索条件,并基于设置的数字字典,生成相应的包含各个搜索条件的非中文SQL语句。
需要说明的是,本公开实施例中,存在引用关系也可以理解为数据字典中引用相应的字段,各个搜索条件之间采用与条件连接。
例如,参阅图7C所示,假设,数据查询语句5为“创建人!=xiaoli”,其中,“创建人”引用字段“creator”,则基于引用字段“creator”,确定表征不等于的搜索条件1“creator!=xiaoli”、表征非空的搜索条件2“creator is not null”、表征引用字段“creator”的搜索条件3“existKey in{creator}”,并基于数字字典,生成相应的非中文SQL语句“SELECT*FROM table WHERE existKey in{creator}AND creator!=xiaoli AND creator is notnull”。
步骤S523:业务平台接收外部解析器返回的非中文SQL语句。
步骤S524:业务平台判断用户是否存在非中文SQL语句的查询权限,若存在,执行步骤S525,否则,通过交互界面提示用户无数据查询语句的查询权限。
具体的,业务平台中预先存储用户的搜索权限,进而,业务平台接收到外部解析器返回的非中文SQL语句时,基于预先存储用户的搜索权限,确定用户是否存在非中文SQL语句的查询权限。
例如,假设,业务平台中预先存储用户A的搜索权限,存储用户A的搜索权限表征用户A不能对数据查询语句2进行查询,那么,业务平台接收到外部解析器返回的通过数据查询语句2生成的非中文SQL语句时,基于预先存储用户A的搜索权限,确定用户A不存在该非中文SQL语句的查询权限。
步骤S525:业务平台将非中文SQL语句发送至内部解析器。
步骤S526:内部解析器基于非中文SQL语句生成AST,并采用设置的深度优先算法,遍历AST,生成相应的ES DSL。
需要说明的是,本公开实施例中,步骤S525与步骤S304-S305的过程相同,在此不再赘述。
步骤S527:内部解析器将ES DSL发送至ES搜索引擎。
步骤S528:ES搜索引擎基于ES DSL进行数据查询,得到数据查询结果。
步骤S529-步骤S530:业务平台接收ES搜索引擎通过内部解析器返回的数据查询结果。
基于同一发明构思,参阅图8所示,本公开实施例提供一种基于领域特定语言的数据查询装置,至少包括:
第一处理单元801,用于接收业务平台发送的数据查询语句;
第二处理单元802,用于若所述数据查询语句为非中文结构化查询语言语句,则基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征所述数据查询语句包含的语法规则;
第三处理单元803,用于基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,以及将所述弹性搜索领域特定语言发送至弹性搜索搜索引擎;
第四处理单元804,用于接收所述弹性搜索搜索引擎基于所述弹性搜索领域特定语言返回的数据查询结果,并将所述数据查询结果发送至所述业务平台。
可选的,接收业务平台发送的数据查询语句之前,所述第一处理单元801进一步用于:
接收到所述业务平台发送的可视化查询请求时,加载设置的查询推荐信息,并将所述查询推荐信息发送至所述业务平台,所述查询推荐信息中至少包含候选的搜索关键词集合;
依次接收所述业务平台基于所述查询推荐信息返回的各个搜索关键词,并将所述各个搜索关键词发送至所述弹性搜索搜索引擎,以及接收所述弹性搜索搜索引擎返回的相应的各个关键词取值集合;
将所述各个关键词取值集合发送至所述业务平台,并接收所述业务平台基于所述各个关键词取值集合返回的所述数据查询语句。
可选的,接收业务平台发送的数据查询语句之后,所述第二处理单元802进一步用于:
若所述数据查询语句为中文结构化查询语言语句,则基于设置的结构化查询语言语法规则,对所述中文结构化查询语言语句进行语法校验,以及基于设置的值校验规则,对所述数据查询语句进行值校验;
若所述数据查询语句通过所述值校验,则基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,其中,所述数字字典中包含中文结构化查询语言语句和非中文结构化查询语言语句之间的映射关系;
基于所述非中文结构化查询语言语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树。
可选的,基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句时,所述第二处理单元802具体用于:
若所述数据查询语句中未包含表征数据排序条件的第一类关键词,则基于设置的数字字典,以及设置的排序条件,生成相应的包含所述第一类关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在至少一个相应的非中文关键词的第二类关键词,则基于设置的数字字典,以及至少一个非中文关键词,生成相应的包含所述至少一个非中文关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在引用关系的第三类关键词,则基于所述引用关系,确定相应的各个搜索条件,并基于设置的数字字典,生成相应的包含所述各个搜索条件的非中文结构化查询语言语句。
可选的,基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树时,所述第二处理单元802具体用于:
基于所述数据查询语句,采用设置的词法分析器,确定所述数据查询语句中包含的各个词法单元;
基于所述各个词法单元,采用设置的语法分析器,确定所述数据查询语句中包含的各个规则节点,并基于所述各个规则节点,生成相应的抽象语法树;
其中,所述词法分析器和所述语法分析器是基于设置的结构化查询语言语法规则,采用设置的基础解析器生成的。
可选的,基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言时,所述第三处理单元803具体用于:
采用设置的深度优先算法,依次读取所述抽象语法树中包含的各个规则节点和各个叶子节点,其中,叶子节点用于表征所述数据查询语句中包含的词法单元;
基于所述各个规则节点,根据预先设置的结构化查询语言语法规则与弹性搜索领域特定语言语法规则之间的对应关系,生成相应的各个初始解析结果,并基于所述各个叶子节点,生成相应的各个中间解析结果;
基于所述数据查询语句的上下文,对所述各个初始解析结果和所述各个中间解析结果进行合并,生成相应的各个解析结果;
基于所述数据查询语句的上下文,对各个解析结果进行合并,生成相应的弹性搜索领域特定语言。
基于同一发明构思,参阅图9所示,本公开实施例提供一种基于领域特定语言的数据查询装置,至少包括:
存储器901,用于存储可执行指令;
处理器902,用于读取并执行存储器中存储的可执行指令,以实现上述任一项所述的基于领域特定语言的数据查询方法。
其中,在图9中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器902代表的一个或多个处理器和存储器901代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机903可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器902负责管理总线架构和通常的处理,存储器901可以存储处理器902在执行操作时所使用的数据。
基于同一发明构思,本公开实施例提供一种存储介质,当所述存储介质中的指令由处理器执行时,使得所述处理器能够执行上述任一项所述的基于领域特定语言的数据查询方法。
综上所述,本公开实施例中,若接收到的业务平台发送的数据查询语句为非中文结构化查询语言语句,则采用设置的基础解析器,对数据查询语句进行解析,生成包含各个规则节点的抽象语法树,然后,基于抽象语法树,得到各个规则节点对应的各个解析结果,并基于个解析结果,生成相应的弹性搜索领域特定语言,之后,接收弹性搜索搜索引擎返回的数据查询结果,并将数据查询结果发送至业务平台。这样,本公开实施例中,遵循结构化查询语言语法实现结构化查询语言语句与弹性搜索领域特定语言的转换,使得熟知的结构化查询语言语法的开发人员采用常用的结构化查询语言就可以实现弹性搜索搜索引擎的数据查询,不必要增加对弹性搜索搜索语法的学习成本,因此,极大的提高了系统开发效率,提高了系统可用性,同时,基于弹性搜索搜索引擎进行数据查询,保证了数据查询效率。
进一步的,本公开实施例中,通过提供可视化的交互界面,当进行中文结构化查询语言的数据查询时,客户只需要根据交互界面中提供的搜索关键词即可进行搜索,简化了系统操作,极大的降低了客户学习系统的成本。
进一步的,本公开实施例中,基于弹性搜索搜索引擎作为底层搜索引擎,在双解析器的基础上,实现了多层校验器和解析器,这样,虽然类结构化查询语言的搜索语法体系,但是完全剔除了结构化查询语言注入的风险,避免了结构化查询语言注入,从而提高了系统安全性。
对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (10)

1.一种基于领域特定语言的数据查询方法,其特征在于,包括:
接收业务平台发送的数据查询语句;
若所述数据查询语句为非中文结构化查询语言语句,则基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征所述数据查询语句包含的语法规则;
基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,以及将所述弹性搜索领域特定语言发送至弹性搜索搜索引擎;
接收所述弹性搜索搜索引擎基于所述弹性搜索领域特定语言返回的数据查询结果,并将所述数据查询结果发送至所述业务平台。
2.如权利要求1所述的方法,其特征在于,接收业务平台发送的数据查询语句之前,进一步包括:
接收到所述业务平台发送的可视化查询请求时,加载设置的查询推荐信息,并将所述查询推荐信息发送至所述业务平台,所述查询推荐信息中至少包含候选的搜索关键词集合;
依次接收所述业务平台基于所述查询推荐信息返回的各个搜索关键词,并将所述各个搜索关键词发送至所述弹性搜索搜索引擎,以及接收所述弹性搜索搜索引擎返回的相应的各个关键词取值集合;
将所述各个关键词取值集合发送至所述业务平台,并接收所述业务平台基于所述各个关键词取值集合返回的所述数据查询语句。
3.如权利要求1所述的方法,其特征在于,接收业务平台发送的数据查询语句之后,进一步包括:
若所述数据查询语句为中文结构化查询语言语句,则基于设置的结构化查询语言语法规则,对所述中文结构化查询语言语句进行语法校验,以及基于设置的值校验规则,对所述数据查询语句进行值校验;
若所述数据查询语句通过所述值校验,则基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,其中,所述数字字典中包含中文结构化查询语言语句和非中文结构化查询语言语句之间的映射关系;
基于所述非中文结构化查询语言语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树。
4.如权利要求3所述的方法,其特征在于,基于设置的数字字典,以及基于所述数据查询语句,生成相应的非中文结构化查询语言语句,具体包括:
若所述数据查询语句中未包含表征数据排序条件的第一类关键词,则基于设置的数字字典,以及设置的排序条件,生成相应的包含所述第一类关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在至少一个相应的非中文关键词的第二类关键词,则基于设置的数字字典,以及至少一个非中文关键词,生成相应的包含所述至少一个非中文关键词的非中文结构化查询语言语句;
若所述数据查询语句中包含表征存在引用关系的第三类关键词,则基于所述引用关系,确定相应的各个搜索条件,并基于设置的数字字典,生成相应的包含所述各个搜索条件的非中文结构化查询语言语句。
5.如权利要求1-4中任一项所述的方法,其特征在于,基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,具体包括:
基于所述数据查询语句,采用设置的词法分析器,确定所述数据查询语句中包含的各个词法单元;
基于所述各个词法单元,采用设置的语法分析器,确定所述数据查询语句中包含的各个规则节点,并基于所述各个规则节点,生成相应的抽象语法树;
其中,所述词法分析器和所述语法分析器是基于设置的结构化查询语言语法规则,采用设置的基础解析器生成的。
6.如权利要求1-4中任一项所述的方法,其特征在于,基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,具体包括:
采用设置的深度优先算法,依次读取所述抽象语法树中包含的各个规则节点和各个叶子节点,其中,叶子节点用于表征所述数据查询语句中包含的词法单元;
基于所述各个规则节点,根据预先设置的结构化查询语言语法规则与弹性搜索领域特定语言语法规则之间的对应关系,生成相应的各个初始解析结果,并基于所述各个叶子节点,生成相应的各个中间解析结果;
基于所述数据查询语句的上下文,对所述各个初始解析结果和所述各个中间解析结果进行合并,生成相应的各个解析结果;
基于所述数据查询语句的上下文,对各个解析结果进行合并,生成相应的弹性搜索领域特定语言。
7.一种基于领域特定语言的数据查询装置,其特征在于,包括:
第一处理单元,用于接收业务平台发送的数据查询语句;
第二处理单元,用于若所述数据查询语句为非中文结构化查询语言语句,则基于所述数据查询语句,采用设置的基础解析器,生成包含各个规则节点的抽象语法树,其中,规则节点用于表征所述数据查询语句包含的语法规则;
第三处理单元,用于基于所述抽象语法树,得到所述各个规则节点对应的解析结果,并基于得到的各个解析结果,生成相应的弹性搜索领域特定语言,以及将所述弹性搜索领域特定语言发送至弹性搜索搜索引擎;
第四处理单元,用于接收所述弹性搜索搜索引擎基于所述弹性搜索领域特定语言返回的数据查询结果,并将所述数据查询结果发送至所述业务平台。
8.如权利要求7所述的装置,其特征在于,接收业务平台发送的数据查询语句之前,所述第一处理单元进一步用于:
接收到所述业务平台发送的可视化查询请求时,加载设置的查询推荐信息,并将所述查询推荐信息发送至所述业务平台,所述查询推荐信息中至少包含候选的搜索关键词集合;
依次接收所述业务平台基于所述查询推荐信息返回的各个搜索关键词,并将所述各个搜索关键词发送至所述弹性搜索搜索引擎,以及接收所述弹性搜索搜索引擎返回的相应的各个关键词取值集合;
将所述各个关键词取值集合发送至所述业务平台,并接收所述业务平台基于所述各个关键词取值集合返回的所述数据查询语句。
9.一种基于领域特定语言的数据查询装置,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于读取并执行存储器中存储的可执行指令,以实现如权利要求1-6任一项所述的基于领域特定语言的数据查询方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由处理器执行时,使得能够执行如权利要求1-6任一项所述的基于领域特定语言的数据查询方法。
CN202010948413.8A 2020-09-10 2020-09-10 一种基于领域特定语言的数据查询方法及装置 Pending CN114168622A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010948413.8A CN114168622A (zh) 2020-09-10 2020-09-10 一种基于领域特定语言的数据查询方法及装置
PCT/CN2021/107464 WO2022052639A1 (zh) 2020-09-10 2021-07-20 数据查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010948413.8A CN114168622A (zh) 2020-09-10 2020-09-10 一种基于领域特定语言的数据查询方法及装置

Publications (1)

Publication Number Publication Date
CN114168622A true CN114168622A (zh) 2022-03-11

Family

ID=80475650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010948413.8A Pending CN114168622A (zh) 2020-09-10 2020-09-10 一种基于领域特定语言的数据查询方法及装置

Country Status (2)

Country Link
CN (1) CN114168622A (zh)
WO (1) WO2022052639A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115469875A (zh) * 2022-08-22 2022-12-13 西安衍舆航天科技有限公司 基于遥控作业的领域专用语言dsl的编译方法及装置
CN117519702A (zh) * 2023-12-29 2024-02-06 冠骋信息技术(苏州)有限公司 基于低代码配置化的搜索页面设计方法及系统
CN117667978A (zh) * 2023-12-07 2024-03-08 上海迈伺通健康科技有限公司 一种使用中文指令操作数据库的计算机系统
WO2024093261A1 (zh) * 2022-10-31 2024-05-10 华为云计算技术有限公司 数据处理方法及图处理系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115271514A (zh) * 2022-08-11 2022-11-01 中国铁塔股份有限公司 通讯企业的监控方法、装置、电子设备及存储介质
CN117009319B (zh) * 2023-08-07 2024-01-26 广州青莲网络科技有限公司 基于大语言模型的数据库操作方法、系统及存储介质
CN116738065B (zh) * 2023-08-15 2024-04-19 浙江同信企业征信服务有限公司 一种企业搜索方法、装置、设备及存储介质
CN117520483A (zh) * 2024-01-04 2024-02-06 北京奇虎科技有限公司 基于大模型的信息校验方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077329A (ja) * 2006-09-20 2008-04-03 Hitachi Software Eng Co Ltd データベースアクセス設計情報解析システム
CN101788992A (zh) * 2009-05-06 2010-07-28 厦门东南融通系统工程有限公司 一种数据库查询语句的转换方法和转换系统
US20150269234A1 (en) * 2014-03-19 2015-09-24 Hewlett-Packard Development Company, L.P. User Defined Functions Including Requests for Analytics by External Analytic Engines
CN106934062A (zh) * 2017-03-28 2017-07-07 广东工业大学 一种查询elasticsearch的实现方法及系统
CN109840254A (zh) * 2018-12-14 2019-06-04 湖南亚信软件有限公司 一种数据虚拟化及查询方法、装置
CN111143403A (zh) * 2019-12-10 2020-05-12 跬云(上海)信息科技有限公司 Sql转换方法及装置、存储介质
CN111176650A (zh) * 2018-11-09 2020-05-19 阿里巴巴集团控股有限公司 解析器生成方法、检索方法、服务器及存储介质
CN111581229A (zh) * 2020-03-25 2020-08-25 平安科技(深圳)有限公司 Sql语句的生成方法、装置、计算机设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016231506B2 (en) * 2016-09-20 2022-02-17 Global Software Innovation Pty Ltd Systems and methods for accessing a database management system
US10607271B1 (en) * 2017-03-16 2020-03-31 Walgreen Co. Search platform with data driven search relevancy management
CN110019291A (zh) * 2017-09-04 2019-07-16 中国移动通信集团浙江有限公司 一种sql解析方法和sql解析器
CN109145009B (zh) * 2018-08-19 2020-10-27 杭州安恒信息技术股份有限公司 一种基于SQL检索ElasticSearch的方法
CN109739882B (zh) * 2019-01-04 2022-06-10 南威软件股份有限公司 一种基于Presto和Elasticsearch的大数据查询优化方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077329A (ja) * 2006-09-20 2008-04-03 Hitachi Software Eng Co Ltd データベースアクセス設計情報解析システム
CN101788992A (zh) * 2009-05-06 2010-07-28 厦门东南融通系统工程有限公司 一种数据库查询语句的转换方法和转换系统
US20150269234A1 (en) * 2014-03-19 2015-09-24 Hewlett-Packard Development Company, L.P. User Defined Functions Including Requests for Analytics by External Analytic Engines
CN106934062A (zh) * 2017-03-28 2017-07-07 广东工业大学 一种查询elasticsearch的实现方法及系统
CN111176650A (zh) * 2018-11-09 2020-05-19 阿里巴巴集团控股有限公司 解析器生成方法、检索方法、服务器及存储介质
CN109840254A (zh) * 2018-12-14 2019-06-04 湖南亚信软件有限公司 一种数据虚拟化及查询方法、装置
CN111143403A (zh) * 2019-12-10 2020-05-12 跬云(上海)信息科技有限公司 Sql转换方法及装置、存储介质
CN111581229A (zh) * 2020-03-25 2020-08-25 平安科技(深圳)有限公司 Sql语句的生成方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
崔娜;: "面向数据库性能的SQL语句解析与翻译", 现代电子技术, vol. 39, no. 11, 1 June 2016 (2016-06-01), pages 99 - 102 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115469875A (zh) * 2022-08-22 2022-12-13 西安衍舆航天科技有限公司 基于遥控作业的领域专用语言dsl的编译方法及装置
CN115469875B (zh) * 2022-08-22 2023-08-15 西安衍舆航天科技有限公司 基于遥控作业的领域专用语言dsl的编译方法及装置
WO2024093261A1 (zh) * 2022-10-31 2024-05-10 华为云计算技术有限公司 数据处理方法及图处理系统
CN117667978A (zh) * 2023-12-07 2024-03-08 上海迈伺通健康科技有限公司 一种使用中文指令操作数据库的计算机系统
CN117519702A (zh) * 2023-12-29 2024-02-06 冠骋信息技术(苏州)有限公司 基于低代码配置化的搜索页面设计方法及系统
CN117519702B (zh) * 2023-12-29 2024-03-19 冠骋信息技术(苏州)有限公司 基于低代码配置化的搜索页面设计方法及系统

Also Published As

Publication number Publication date
WO2022052639A1 (zh) 2022-03-17

Similar Documents

Publication Publication Date Title
CN114168622A (zh) 一种基于领域特定语言的数据查询方法及装置
US9633010B2 (en) Converting data into natural language form
US7174507B2 (en) System method and computer program product for obtaining structured data from text
US10585924B2 (en) Processing natural-language documents and queries
Gracia et al. The apertium bilingual dictionaries on the web of data
CN102792298A (zh) 使用特征化匹配的规则来匹配元数据源
US20120066236A1 (en) Method for semantic service registration and query based on wordnet
KR20050000348A (ko) 중간 언어 표현 방법 및 시스템
EP1835417A1 (en) Web service with associated lexical tree
Donatelli et al. Saarland at MRP 2019: Compositional parsing across all graphbanks
CN113779062A (zh) Sql语句生成方法、装置、存储介质及电子设备
US20040030674A1 (en) Web service coordination plan creating apparatus, Web service coordination plan creating method, and program and recording medium
US20220121637A1 (en) Structured document indexing and searching
JP2012027788A (ja) 文書検索システム、文書検索方法およびプログラム
CN116483850A (zh) 数据处理方法、装置、设备以及介质
Quarteroni et al. A bottom-up, knowledge-aware approach to integrating and querying web data services
Bond et al. Some issues with building a multilingual wordnet
Chiarcos et al. Building a Linked Open Data cloud of linguistic resources: Motivations and developments
Schröder et al. Spread2RML: Constructing Knowledge Graphs by Predicting RML Mappings on Messy Spreadsheets
Eddy et al. Using structured queries for source code search
Clematide et al. Reflections and a proposal for a query and reporting language for richly annotated multiparallel corpora
Cimiano et al. Applying linked data principles to linking multilingual wordnets
El Midaoui et al. Geographical queries reformulation using a parallel association rules generator to build spatial taxonomies
US20200380012A1 (en) System and method for enabling interoperability between a first knowledge base and a second knowledge base
Ajani et al. Legal Taxonomy Syllabus version 2.0.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination