一种查询语句转换方法、装置、电子设备及存储介质制造方法及图纸

技术编号:36927015 阅读:23 留言:0更新日期:2023-03-22 18:50
本申请提供一种查询语句转换方法、装置、电子设备及存储介质。方法包括:接收基于自定义EBNF的lucene查询语句;lucene查询语句包括多个子查询语句和布尔操作符;基于语法解析库和EBNF将多个子查询语句和布尔操作符进行解析获得抽象语法树AST;根据ES mapping将AST转化为真正的DSL语句。本申请中由于在ES mapping中增加了能够将lucene查询语句转换维DSL语句的属性,通过将lucene查询语句解析成AST,再基于ES mapping将AST转换为DSL语句,由于lucene查询语句在撰写是比较简洁,因此可以便于用户撰写,并且转换为DSL语句后,可通过DSL查询语句本身具备的功能,增加原本标准lucene所不支持的功能。lucene所不支持的功能。lucene所不支持的功能。

【技术实现步骤摘要】
一种查询语句转换方法、装置、电子设备及存储介质


[0001]本申请涉及数据检索
,具体而言,涉及一种查询语句转换方法、装置、电子设备及存储介质。

技术介绍

[0002]ES(ElasticSearch)作为一款出色的分布式检索引擎,被广泛的应用到工业界。它对外提供的DSL(Domain Specific Language)查询语句也可以支持各个各样的检索需求,但是DSL的语法比较复杂容易写错,从而降低了检索效率。

技术实现思路

[0003]本申请实施例的目的在于提供一种查询语句转换方法、装置、电子设备及存储介质,用以提高检索效率。
[0004]第一方面,本申请实施例提供一种查询语句转换方法,包括:接收基于自定义的扩展巴科斯范式EBNF的lucene查询语句;lucene查询语句包括多个子查询语句和布尔操作符;基于语法解析库和EBNF将多个子查询语句和布尔操作符进行解析,获得抽象语法树AST;根据ES mapping将AST转换为DSL语句;其中,ES mapping中包括将AST转换成DSL语句的属性。
[0005]本申请实施例通过将lucene查询语句解析成抽象语法树,在基于ES mapping将抽象语法树转换为DSL语句,由于lucene查询语句在撰写是比较简洁,因此可以便于用户撰写,并且转换为DSL语句后,可通过DSL查询语句本身具备的功能,使得检索更加高效。
[0006]在任一实施例中,子查询语句包括查询形式,根据ES mapping将AST转化为DSL语句,包括
[0007]从叶子节点开始,逐层对每一层的AST节点根据ES mapping和查询形式将AST节点转换为对应的DSL节点,并将DSL节点返回上一层AST节点,直至完成所有AST节点的转换,获得DSL语句。
[0008]本申请实施例中,由于AST包括多层AST节点,因此可从最底层(即叶子节点对应的节点层)开始,逐层将AST节点转换为DSL节点,并将转换的DSL节点返回给上一层的父节点,直至将AST中所有的节点均转换完成,最后获得DSL语句,由于lucene语句简单易写,DSL语句功能较多,通过将二者相结合,提高了检索的效率。
[0009]在任一实施例中,AST包括多个节点层,每一节点层包括至少一个AST节点;对每一层的AST节点根据ES mapping和查询形式将AST节点转换为对应的DSL节点,包括:
[0010]若一节点层对应的AST节点为叶子节点,获取叶子节点对应的字段名称;
[0011]若字段名称为预设字段之外的其他字段,则从ES mapping中获取字段名称对应的目标属性,并根据目标属性获取对应的目标转化函数;
[0012]根据目标转化函数和查询形式将叶子节点转换为中间DSL节点,并将中间DSL节点存入缓存中;
[0013]根据缓存中的中间DSL节点生成节点层对应的DSL节点。
[0014]本申请实施例通过从AST的叶子节点开始将其转换为中间DSL节点,并且,在转换为中间DSL节点时,从ES mapping中获取该叶子节点对应的字段名称的目标属性,该目标属性提供了目标转换函数,通过该目标转换函数可将叶子节点转换为DSL节点,最后实现将lucene语句转换为DSL语句,提高了检索的效率。
[0015]在任一实施例中,该预设字段包括_id和_exists_;若字段名称为_id,则将对应的叶子节点转换为IdsQuery;若字段名称为_exists_,则将对应的叶子节点转换为ExistsQuery。
[0016]本申请实施例在将叶子节点转换为DSL语句时,如果是预设字段则可直接进行DSL语句的转换,提高了转换的效率。
[0017]在任一实施例中,将中间DSL节点存入缓存中,包括:
[0018]若缓存中包含与中间DSL节点对应的字段名称相同的已转换DSL节点,且ES mapping中的字段名称包含能够聚合的属性,则根据中间DSL节点对应的逻辑操作符以及能够聚合的属性对应的聚合方法将中间DSL节点与已转换DSL节点进行聚合,并在聚合后存入缓存中。
[0019]本申请实施例通过对ES mapping中的字段进行扩展,对包含能够聚合属性的字段名称,以及具有相同字段名称的中间DSL节点进行聚合,提高了检索的效率。
[0020]在任一实施例中,AST包括多个节点层,每一节点层包括至少一个AST节点;对每一层的AST节点根据ES mapping和查询形式将AST节点转换为对应的DSL节点,包括:
[0021]若一节点层对应的AST节点为操作符节点,则将接收到的下一层的AST节点发送的DSL节点转换为Bool Query;其中Bool Query为节点层对应的DSL节点。
[0022]本申请实施例中,通过将操作符节点转换为Bool Query,最终获得DSL查询语句,并利用DSL查询语句进行检索,提高了检索的效率。
[0023]在任一实施例中,EBNF中定义的布尔操作符包括小写形式。本申请实施例中通过自定义的EBNF,使得符合该EBNF的lucene允许使用小写的布尔操作符,用户在编写lucene查询语句时,不需要频繁大小写切换,提高了lucene查询语句编写的效率。
[0024]第二方面,本申请实施例提供一种查询语句转换装置,包括:
[0025]接收模块,用于接收基于自定义的扩展巴科斯范式EBNF的lucene查询语句;lucene查询语句包括多个子查询语句和布尔操作符;
[0026]解析模块,用于基于语法解析库和EBNF将多个子查询语句和布尔操作符进行解析,获得抽象语法树AST;
[0027]转换模块,用于根据ES mapping将AST转换为DSL语句;其中,ES mapping中包括将lAST转换成DSL语句的属性。
[0028]第三方面,本申请实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
[0029]所述处理器和所述存储器通过所述总线完成相互间的通信;
[0030]所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法。
[0031]第四方面,本申请实施例提供一种非暂态计算机可读存储介质,包括:
[0032]所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机
执行第一方面的方法。
[0033]本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
[0034]为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种查询语句转换方法,其特征在于,包括:接收基于自定义的扩展巴科斯范式EBNF的lucene查询语句;所述lucene查询语句包括多个子查询语句和布尔操作符;基于语法解析库和所述EBNF将所述多个子查询语句和布尔操作符进行解析,获得抽象语法树AST;根据ES mapping将所述AST转换为DSL语句;其中,所述ES mapping中包括将所述AST转换成所述DSL语句的属性。2.根据权利要求1所述的方法,其特征在于,所述子查询语句包括查询形式,所述根据ES mapping将所述AST转换为DSL语句,包括:从叶子节点开始,逐层对每一层的AST节点根据所述ES mapping和所述查询形式将所述AST节点转换为对应的DSL节点,并将所述DSL节点返回上一层AST节点,直至完成所有AST节点的转换,获得所述DSL语句。3.根据权利要求2所述的方法,其特征在于,所述AST包括多个节点层,每一节点层包括至少一个AST节点;所述对每一层的AST节点根据ES mapping和所述查询形式将所述AST节点转换为对应的DSL节点,包括:若一节点层对应的所述AST节点为叶子节点,获取所述叶子节点对应的字段名称;若所述字段名称为预设字段之外的其他字段,则从所述ES mapping中获取所述字段名称对应的目标属性,并根据所述目标属性获取对应的目标转化函数;根据所述目标转化函数和所述查询形式将所述叶子节点转换为中间DSL节点,并将所述中间DSL节点存入缓存中;根据所述缓存中的中间DSL节点生成所述节点层对应的DSL节点。4.根据权利要求3所述的方法,其特征在于,所述预设字段包括_id和_exists_;若所述字段名称为_id,则将对应的叶子节点转换为IdsQuery;若所述字段名称为_exists_,则将对应的叶子节点转换为ExistsQuery。5.根据权利要求3所述的方法,其特征在于,所述将所述中间DSL节点存入缓存中,包括:若所述缓存中包含与所述中间DSL节点...

【专利技术属性】
技术研发人员:朱李全
申请(专利权)人:奇安信科技集团股份有限公司
类型:发明
国别省市:

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

1