首页> 中国专利> 基于Lucene的查询方法、装置、电子设备及存储介质

基于Lucene的查询方法、装置、电子设备及存储介质

摘要

本申请涉及一种基于Lucene的查询方法、装置、电子设备及存储介质,该方法包括:接收用户的查询请求,其中,查询请求中携带有查询请求参数,查询请求参数包括用于表征查询条件的字段和用于表征查询条件的逻辑运算表达式的字段;通过预设的查询解析器,将查询请求参数转化为目标基本查询,目标基本查询为Lucene所支持的且与查询请求参数相匹配的基本查询;通过目标基础查询,调用Lucene中的查询接口,以获取查询请求对应的查询结果;向用户反馈查询结果。这样,可以通过查询解析器将查询请求转换为Lucene所支持的基本查询,并调用Lucene中的查询接口获取查询结果,而无需事先搭建庞大的搜索引擎服务以及相应的复杂配置,即可实现轻量化搜索引擎的查询功能。

著录项

  • 公开/公告号CN114860763A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 北京明略昭辉科技有限公司;

    申请/专利号CN202210410763.8

  • 发明设计人 杜芳;蔡雅茹;

    申请日2022-04-19

  • 分类号G06F16/2453(2019.01);G06F16/2455(2019.01);G06F16/25(2019.01);

  • 代理机构北京华夏泰和知识产权代理有限公司 11662;

  • 代理人曾军

  • 地址 100098 北京市海淀区北三环西路25号27号楼二层2020室

  • 入库时间 2023-06-19 16:16:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-23

    实质审查的生效 IPC(主分类):G06F16/2453 专利申请号:2022104107638 申请日:20220419

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及互联网技术领域,尤其涉及一种基于Lucene的查询方法、装置、电子设备及存储介质。

背景技术

随着互联网技术的发展,各种功能、各种样式的搜索引擎层出不穷,并且随着搜索引擎功能的增加,整个搜索引擎也变得越来越庞大。目前,在使用现有的搜索引擎进行查询时,往往需要调用多个功能服务或者查询大量配置数据,才能得到查询结果。这样不仅需要在搜索引擎中事先搭建好复杂的配置,而且随着配置的增多,搜索引擎服务也会变得越来越沉重,需要占用大量的资源。因此,如何使用轻量化配置实现搜索引擎的查询功能,成为未来的发展趋势。

发明内容

本申请提供了一种基于Lucene的查询方法、装置、电子设备及存储介质,以解决现有的搜索引擎需要事先搭建好复杂的配置,且需要占用大量的资源的问题。

第一方面,本申请提供了一种基于Lucene的查询方法,所述方法包括:

接收用户的查询请求,其中,所述查询请求中携带有查询请求参数,所述查询请求参数包括用于表征查询条件的字段和用于表征所述查询条件的逻辑运算表达式的字段;

通过预设的查询解析器,将所述查询请求参数转化为目标基本查询,所述目标基本查询为所述Lucene所支持的且与所述查询请求参数相匹配的基本查询;

通过所述目标基础查询,调用所述Lucene中的查询接口,以获取所述查询请求对应的查询结果;

向所述用户反馈所述查询结果。

可选地,所述通过预设的查询解析器,将所述查询请求参数转化为目标基本查询,包括:

通过所述预设的查询解析器,解析得到所述查询请求参数中的查询条件;

根据所述查询条件,构建满足所述查询条件的内部实现类对应的实例;

调用所述内部实现类对应的实例中的查询方法,生成所述目标基本查询。

可选地,在所述根据所述查询条件,构建满足所述查询条件的内部实现类对应的实例之前,所述方法还包括:

在所述查询条件为多个的情况下,通过所述预设的查询解析器,解析得到所述查询请求参数中的逻辑运算表达式;

在所述根据所述查询条件,构建满足所述查询条件的内部实现类对应的实例之后,所述方法还包括:

根据所述逻辑运算表达式,对多个所述查询条件对应的所述内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例;

调用所述组合后的内部实现类对应的实例中的查询方法,生成所述目标基本查询。

可选地,所述查询条件包括查询模式、查询字段和查询词;

所述根据所述查询条件,构建满足所述查询条件的内部实现类对应的实例,包括:

根据所述查询模式,从所述Lucene中选取出与所述查询模式相匹配的查询模式实现类,其中,所述Lucene预先实现有所述Lucene所支持的多种基本查询对应的查询模式实现类;

创建与所述查询模式相匹配的查询模式实现类对应的查询模式实例;

利用所述查询字段和所述查询词,在所述查询模式实例中构建满足所述查询条件的内部实现类对应的实例。

可选地,所述根据所述逻辑运算表达式,对多个所述查询条件对应的所述内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例,包括:

根据所述逻辑运算表达式,将各所述查询条件划分至不同的条件组中,每个所述条件组用于表示组内的查询条件之间的与、或、非关系中的至少一种逻辑关系;

根据每个所述条件组内的各查询条件之间的逻辑关系,对每个所述条件组内的各查询条件对应的内部实现类对应的实例进行组合;

根据各所述条件组之间的关系,将所有所述条件组组合后的内部实现类对应的实例再次进行组合,得到组合后的内部实现类对应的实例。

第二方面,本申请还提供了一种基于Lucene的查询装置,所述装置包括:

接收模块,用于接收用户的查询请求,其中,所述查询请求中携带有查询请求参数,所述查询请求参数包括用于表征查询条件的字段和用于表征所述查询条件的逻辑运算表达式的字段;

转化模块,用于通过预设的查询解析器,将所述查询请求参数转化为目标基本查询,所述目标基本查询为所述Lucene所支持的且与所述查询请求参数相匹配的基本查询;

获取模块,用于通过所述目标基础查询,调用所述Lucene中的查询接口,以获取所述查询请求对应的查询结果;

反馈模块,用于向所述用户反馈所述查询结果。

第三方面,本申请还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现第一方面任一项实施例所述的基于Lucene的查询方法的步骤。

第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项实施例所述的基于Lucene的查询方法的步骤。

本申请实施例提供的上述技术方案与现有技术相比具有如下优点:

本申请可以应用于信息检索技术领域用于基于Lucene实现轻量化查询功能。本申请实施例提供的基于Lucene的查询方法、装置、电子设备及存储介质,通过接收用户的查询请求,其中,所述查询请求中携带有查询请求参数,所述查询请求参数包括用于表征查询条件的字段和用于表征所述查询条件的逻辑运算表达式的字段;通过预设的查询解析器,将所述查询请求参数转化为目标基本查询,所述目标基本查询为所述Lucene所支持的且与所述查询请求参数相匹配的基本查询;通过所述目标基础查询,调用所述Lucene中的查询接口,以获取所述查询请求对应的查询结果;向所述用户反馈所述查询结果。通过这种方式,可以通过预设的查询解析器,将接收到查询请求转换为Lucene所支持的基本查询,并通过转化后的基本查询调用Lucene中的查询接口,以获取查询结果,而无需事先搭建庞大的搜索引擎服务以及相应的复杂配置,即可实现轻量化搜索引擎的查询功能。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

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

图2为本申请实施例提供的一种各个类之间的关系示意图;

图3为本申请实施例提供的另一种各个类之间的关系示意图;

图4为本申请实施例提供的BoolQueryWrapper的条件组的示意图;

图5为本申请实施例提供的一种BoolQueryWrapper的条件组的组合关系的示意图;

图6为本申请实施例提供的一种基于Lucene的查询装置的结构示意图;

图7为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

参见图1,图1为本申请实施例提供的一种基于Lucene的查询方法的流程示意图。如图1所示,该基于Lucene的查询方法可以包括以下步骤:

步骤101、接收用户的查询请求,其中,查询请求中携带有查询请求参数,查询请求参数包括用于表征查询条件的字段和用于表征查询条件的逻辑运算表达式的字段。

具体地,上述查询请求参数可以包括但不限于:查询条件和查询条件的逻辑运算表达式,其中,查询条件和查询条件的逻辑运算表达式可以使用查询请求中的不同字段来表示。在一可选实施例中,可采用预设结构如LuAdvancedFilter结构,来定义查询请求,采用该预设结构定义的查询请求可被预设的查询解析器进行解析。具体地,采用LuAdvancedFilter结构定义的查询请求的结构如下表所示:

其中,LuConditionParms是指查询条件中可以包含的参数字段,具体如下表所示:

需要说明的是,查询条件的数量可以为一个,也可以为多个,当查询条件的数量为一个时,用于表征查询条件的逻辑运算表达式的字段可以为空;当查询条件的数量为多个时,用于表征查询条件的逻辑运算表达式的字段不可以为空。

步骤102、通过预设的查询解析器,将查询请求参数转化为目标基本查询,目标基本查询为Lucene所支持的且与查询请求参数相匹配的基本查询。

具体地,上述预设的查询解析器可以把用户采用预设结构(如LuAdvancedFilter结构)定义的查询请求,转化为Lucene所支持的基本查询,再通过基本查询调用Lucene提供的查询接口进行查询,最后召回查询结果。在一实施例中,该预设的查询解析器可以用AdvancedQueryParser来表示。

需要说明的是,lucene是一个开源的全文检索引擎工具包,Lucene所支持的基本查询可以包括词项查询TermQuery、布尔查询BoolQuery、短语查询PhraseQuery、多重短语查询MultiPhraseQuery、临近查询SpanNearQuery、词项范围查询TermRangeQuery、前缀查询PrefixQuery、通配符查询WildcardQuery、正则表达式查询RegexpQuery、模糊查询FuzzyQuery、数值查询等类型。基本查询是指Lucene的org.apache.lucene.search.Query的几种常用实现类。其中布尔查询BoolQuery包含1个或多个基本查询,表达多个基本查询的与或非含义。

步骤103、通过目标基础查询,调用Lucene中的查询接口,以获取查询请求对应的查询结果。

在得到目标基础查询后,可以将该目标基本查询作为参数调用Lucene中的查询接口,以获取查询请求对应的查询结果。

步骤104、向用户反馈查询结果。

在该步骤中,如果获取到的查询结果只有一个,可以将该查询结果直接反馈给用户;如果获取到的查询结果有多个,可以对多个查询结果进行排序,并将排序后的查询结果反馈给用户。

在本实施例中,可以通过预设的查询解析器,将接收到查询请求转换为Lucene所支持的基本查询,并通过转化后的基本查询调用Lucene中的查询接口,以获取查询结果,而无需事先搭建庞大的搜索引擎服务以及相应的复杂配置,即可实现轻量化搜索引擎的查询功能。

进一步地,上述步骤102、通过预设的查询解析器,将查询请求参数转化为目标基本查询,包括:

通过预设的查询解析器,解析得到查询请求参数中的查询条件;

根据查询条件,构建满足查询条件的内部实现类对应的实例;

调用内部实现类对应的实例中的查询方法,生成目标基本查询。

在一实施例中,当查询条件只有一个时,可以通过预设的查询解析器,解析得到查询请求参数中的查询条件,并根据该查询条件中的参数字段,构建满足该查询条件的内部实现类对应的实例,从而调用该内部实现类对应的实例中的查询方法,生成目标基本查询。例如,假设解析得到查询请求中只有一个查询条件,根据该查询条件中的参数字段构造相应的内部实现类的实例,记作QueryWrapper,这样就可以调用内部实现类的实例QueryWrapper中的查询方法getQuery,生成该查询请求对应的目标基本查询Query。这样,就可以基于Lucene自身的基本查询,通过简单的参数字段实现查询功能,与现有技术相比,该查询方式更轻量化。

进一步地,在上述步骤、根据查询条件,构建满足查询条件的内部实现类对应的实例之前,该方法还包括:

在查询条件为多个的情况下,通过预设的查询解析器,解析得到查询请求参数中的逻辑运算表达式;

在上述步骤、根据查询条件,构建满足查询条件的内部实现类对应的实例之后,该方法还包括:

根据逻辑运算表达式,对多个查询条件对应的内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例;

调用组合后的内部实现类对应的实例中的查询方法,生成目标基本查询。

在一实施例中,当查询条件有多个时,可以通过预设的查询解析器,解析得到查询请求参数中的多个查询条件和查询条件之间的逻辑运算表达式,并根据每个查询条件中的参数字段,构建满足每个查询条件的内部实现类对应的实例,然后根据查询条件的逻辑运算表达式,对多个查询条件的内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例,从而调用该组合后的内部实现类对应的实例中的查询方法,生成目标基本查询。例如,假设解析得到查询请求中包括查询条件A、B和C,查询条件A的内部实现类对应的实例记作aQueryWrapper,查询条件B的内部实现类对应的实例记作bQueryWrapper,查询条件C的内部实现类对应的实例记作cQueryWrapper,且查询条件A、B和C的逻辑运算表达式为(A+B)|C,那么可以将逻辑运算表达式分为A+B和C两个部分,两个部分的关系是“或”,两个部分对应的条件放在should条件组中,由于第一部分对应表达式是A+B,故should条件组中的第一个条件实质上包含aQueryWrapper和bQueryWrapper两个条件,这两个条件组合成must条件组,记做abBoolQueryWrapper;should条件组中的第二个条件只包含cQueryWrapper。这样,就通过should条件组和must条件组组合成一个新的内部实现类对应的实例,这样就可以调用新的内部实现类对应的实例中的查询方法getQuery,生成该查询请求对应的目标基本查询。这样,就可以基于Lucene自身的基本查询,通过简单的参数字段的组合来实现查询功能,与现有技术相比,该查询方式更轻量化,且能实现较复杂的查询逻辑。

进一步地,查询条件包括查询模式、查询字段和查询词;

上述步骤、根据查询条件,构建满足查询条件的内部实现类对应的实例,包括:

根据查询模式,从Lucene中选取出与查询模式相匹配的查询模式实现类,其中,Lucene预先实现有Lucene所支持的多种基本查询对应的查询模式实现类;

创建与查询模式相匹配的查询模式实现类对应的查询模式实例;

利用查询字段和查询词,在查询模式实例中构建满足查询条件的内部实现类对应的实例。

在一实施例中,每个查询条件可以包括多个请求参数字段,如用于表征查询模式的字段mode、用于表征查询字段的字段field和用于表征查询词的字段value等等。在根据查询条件,构建满足查询条件的内部实现类对应的实例的过程中,可以先根据字段mode中的值从Lucene中选取出与字段mode中的值相匹配的查询模式实现类,并创建对应的实例,然后用字段field的值、字段value的值等去构造相应的内部实现类,得到对应的实例。例如,假设解析得到查询请求中有查询条件A,该查询条件A中的字段field对应的查询字段为name,字段mode对应的查询模式为term,字段value对应的查询词为小明,那么可以根据字段mode中的查询模式term,从Lucene中选取出查询模式term的实现类并创建实例,然后用字段field中的查询字段为name、字段value中的查询词为小明等去构造相应的内部实现类,得到对应的实例,进而可以调用内部实现类的实例中的查询方法,生成该查询请求对应的目标基本查询。

在一可选实施例中,需要对Lucene中的每个基本查询Query进行封装,创建基本查询Query对应的查询模式,查询模式的抽象类记为AbstractQueryMode,每个基本查询都对应一个AbstractQueryMode的实现类(即上述查询模式实现类,可记作QueryMode),每个AbstractQueryMode的实现类中创建内部类(即上述内部实现类,可以记作QueryWrapper),QueryWrapper包含需要查询的字段名、查询语句(又称为查询词)以及字段类型这些成员变量,提供getQuery()方法用于把自身成员变量对应的值以及他的查询模式外部类对应的查询模式组织成Lucene的检索接口所需要的基本查询。上述内部实现类QueryWrapper为上述查询模式实现类QueryMode的内部类,也为QueryFilter抽象类的实现类。上述查询模式实现类QueryMode为AbstraceQueryMode抽象类的实现类。各个类之间的关系如图2所示,AbstraceQueryMode抽象类中的getQueryName()方法用来获取查询类型,即找到查询请求中字段mode中的查询模式对应的QueryMode,getQueryFilter(QueryParam queryParam)方法用来在外部(主要指controller、service层)组织获取QueryFilter抽象类,该方法中的参数QueryParam是指单个query外部请求参数(即查询请求中的用于表征查询字段的字段field和用于表征查询词的字段value等)。查询模式实现类QueryMode为AbstraceQueryMode抽象类的实现类,实现抽象方法,由不同类型的基本查询创建实现抽象类中抽取方法。QueryFilter抽象类中的查询方法getQuery(),用来在内部(主要是指核心dao层)通过lucene组织获取基本查询。当查询请求涉及到多个基本查询时,各个类之间的关系如图3所示,即AbstractQueryMode抽象类是各个QueryMode实现类的抽象类,每个QueryMode实现类里的内部类QueryWrapper是QueryFilter抽象类的实现类。这样,用户发送的查询请求中的每个查询条件(LuConditionParms)都会实现生成一个查询模式,调用该查询模式的getQueryFilter().getQuery()方法生成一个基本查询。

在本实施例中,可以根据查询条件,构建满足该查询条件的内部实现类对应的实例,并调用该内部实现类对应的实例中的查询方法,可以生成对应的基本查询,这样只需要通过简单参数传递,即可实现在保证搜索引擎轻量化的同时,也能过实现较高质量的检索,减少运行时内存的消耗和硬盘资源的占用。也就是说,通过这种方式可以实现单机版的搜索引擎,此处的单机指的是在不需要配置数据库及其它服务的情况下,能单独启动运行,并能够通过简单的参数实现数据的查询。

进一步地,上述步骤、根据逻辑运算表达式,对多个查询条件对应的内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例,包括:

根据逻辑运算表达式,将各查询条件划分至不同的条件组中,每个条件组用于表示组内的查询条件之间的与、或、非关系中的至少一种逻辑关系;

根据每个条件组内的各查询条件之间的逻辑关系,对每个条件组内的各查询条件对应的内部实现类对应的实例进行组合;

根据各条件组之间的关系,将所有条件组组合后的内部实现类对应的实例再次进行组合,得到组合后的内部实现类对应的实例。

在一实施例中,当查询请求中的查询条件为多个时,需要根据查询条件的逻辑运算表达式,对多个查询条件对应的内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例。具体地,可以根据逻辑运算表达式,将各查询条件划分至不同的条件组中,再根据每个条件组内的各查询条件之间的逻辑关系,对每个条件组内的各查询条件对应的内部实现类对应的实例进行组合;最后根据各条件组之间的关系,将所有条件组组合后的内部实现类对应的实例再次进行组合,得到组合后的内部实现类对应的实例。例如,预设的查询解析器AdvancedQueryParser接收到查询请求后,获取查询请求中的3个查询条件A、B和C,根据每个查询条件中的字段mode选取合适的AbstraceQueryMode的实现类,并创建对应的实例。假设查询条件A选取WildcardQueryMode实现类,查询条件B选取PhraseQueryMode实现类,查询条件C选取TermQueryMode实现类,然后分别用查询条件A、B和C中的字段field、value内的值去构造每个查询条件相应的QueryWrapper实例,分别记做aQueryWrapper、bQueryWrapper和cQueryWrapper。查询解析器AdvancedQueryParser解析查询请求中的字段operate对应的逻辑运算表达式。假设该逻辑运算表达式为(A+B)|C,那么可以将该逻辑运算表达式划分为A+B和C两个部分,两个部分的关系是“或”,此时可以将这两个部分放在一个should条件组中,第一部分对应表达式是A+B,因而should条件组中的第一个条件实质上是个BoolQueryWrapper,可以记为abBoolQueryWrapper,其中,abBoolQueryWrapper里面的must条件组包含aQueryWrapper和bQueryWrapper两个条件,should条件组的第二个条件为cQueryWrapper。最终可以形成组合后的内部实现类对应的实例,记为topBoolQueryWrapper。通过调用topBoolQueryWrapper内部的getQuery()方法,这个方法会递归调用topBoolQueryWrapper中所有条件组中每个条件的getQuery()方法,并把这些子句生成的基本查询按照相应的should、must、mustNot等逻辑关系组织成最终的BooleanQuery类型的基本查询。最后可以利用上一步生成的基本查询作为参数调用Lucene的查询接口获取查询结果。

需要说明的是,此处的BoolQueryWrapper可以包括多个条件组,如should条件组、must条件组、mustNot条件组和filter条件组等,每个条件组可以包含一个条件,也可以包括多个条件,每个条件可以是一个QueryWrapper,也可以是BoolQueryWrapper,BoolQueryWrapper实现了QueryFilter,BoolQueryWrapper内的getQuery()方法组织多个条件,最终生成lucene的查询接口可以使用的BooleanQuery。BoolQueryWrapper的条件组如图4所示,其中,should表示或的关系;must表示且的关系;mustNot表示且非的关系;filter和must类似,表示且的关系,两者的区别是filter不参与相似度得分计算,must参与相似度得分计算。假设,采用BoolQueryWrapper来表示逻辑运算表达式(A|B)C,那么该BoolQueryWrapper的条件组的组合关系如图5所示。

参见图6,图6为本申请实施例提供的一种基于Lucene的查询装置的结构示意图。如图6所示,该基于Lucene的查询装置600包括:

接收模块601,用于接收用户的查询请求,其中,查询请求中携带有查询请求参数,查询请求参数包括用于表征查询条件的字段和用于表征查询条件的逻辑运算表达式的字段;

转化模块602,用于通过预设的查询解析器,将查询请求参数转化为目标基本查询,目标基本查询为Lucene所支持的且与查询请求参数相匹配的基本查询;

获取模块603,用于通过目标基础查询,调用Lucene中的查询接口,以获取查询请求对应的查询结果;

反馈模块604,用于向用户反馈查询结果。

进一步地,转化模块602包括:

第一解析子模块,用于通过预设的查询解析器,解析得到查询请求参数中的查询条件;

构建子模块,用于根据查询条件,构建满足查询条件的内部实现类对应的实例;

第一生成子模块,用于调用内部实现类对应的实例中的查询方法,生成目标基本查询。

进一步地,转化模块602还包括:

第二解析子模块,用于在查询条件为多个的情况下,通过预设的查询解析器,解析得到查询请求参数中的逻辑运算表达式;

组合子模块,用于根据逻辑运算表达式,对多个查询条件对应的内部实现类对应的实例进行组合,得到组合后的内部实现类对应的实例;

第二生成子模块,用于调用组合后的内部实现类对应的实例中的查询方法,生成目标基本查询。

进一步地,查询条件包括查询模式、查询字段和查询词;

构建子模块包括:

选取单元,用于根据查询模式,从Lucene中选取出与查询模式相匹配的查询模式实现类,其中,Lucene预先实现有Lucene所支持的多种基本查询对应的查询模式实现类;

第一创建单元,用于创建与查询模式相匹配的查询模式实现类对应的查询模式实例;

第二创建单元,用于利用查询字段和查询词,在查询模式实例中构建满足查询条件的内部实现类对应的实例。

进一步地,组合子模块包括:

划分单元,用于根据逻辑运算表达式,将各查询条件划分至不同的条件组中,每个条件组用于表示组内的查询条件之间的与、或、非关系中的至少一种逻辑关系;

第一组合单元,用于根据每个条件组内的各查询条件之间的逻辑关系,对每个条件组内的各查询条件对应的内部实现类对应的实例进行组合;

第二组合单元,用于根据各条件组之间的关系,将所有条件组组合后的内部实现类对应的实例再次进行组合,得到组合后的内部实现类对应的实例。

需要说明的是,该基于Lucene的查询装置600可以实现如前述任意一个方法实施例提供的基于Lucene的查询方法的步骤,且能达到相同的技术效果,在此不再一一赘述。

如图7所示,本申请实施例提供了一种电子设备,包括处理器711、通信接口712、存储器713和通信总线714,其中,处理器711,通信接口712,存储器713通过通信总线714完成相互间的通信,

存储器713,用于存放计算机程序;

在本申请一个实施例中,处理器711,用于执行存储器713上所存放的程序时,实现前述任意一个方法实施例提供的基于Lucene的查询方法,包括:

接收用户的查询请求,其中,查询请求中携带有查询请求参数,查询请求参数包括用于表征查询条件的字段和用于表征查询条件的逻辑运算表达式的字段;

通过预设的查询解析器,将查询请求参数转化为目标基本查询,目标基本查询为Lucene所支持的且与查询请求参数相匹配的基本查询;

通过目标基础查询,调用Lucene中的查询接口,以获取查询请求对应的查询结果;

向用户反馈查询结果。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如前述任意一个方法实施例提供的基于Lucene的查询方法的步骤。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号