搜索引擎的查询优化方法、装置、电子设备

文档序号:7809 发布日期:2021-09-17 浏览:69次 英文

搜索引擎的查询优化方法、装置、电子设备

技术领域

本申请涉及搜索技术,尤其涉及一种搜索引擎的查询优化方法、装置、电子设备及计算机可读存储介质。

背景技术

人工智能(AI,Artificial Intelligence)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。

人工智能广泛应用于搜索引擎中,然而随着信息量的不断增长,搜索需要遍历的信息量相应增加,搜索耗时相应变长。在此情况下,相关技术使用复杂的搜索策略,将使搜索耗时更长,影响用户对搜索引擎的使用体验。

发明内容

本申请实施例提供一种搜索引擎的查询优化方法、装置、电子设备及计算机可读存储介质,能够减少搜索消耗。

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

本申请实施例提供一种搜索引擎的查询优化方法,包括:

获取搜索引擎的历史查询记录,所述历史查询记录包括多个查询语句,基于所述查询语句包括的词语生成语法树;

基于所述语法树中每个词语对应的倒排列表包括的信息的数量,调整所述语法树中的词语的执行顺序;

基于调整执行顺序后的所述语法树进行搜索,并根据搜索结果确定所述语法树中每个词语的执行顺序,且所述执行顺序使整体搜索代价最小;

其中,所述语法树用于供所述搜索引擎在接收到所述查询语句时进行搜索。

本申请实施例提供一种搜索引擎的查询优化装置,包括:

生成模块,用于获取搜索引擎的历史查询记录,所述历史查询记录包括多个查询语句,基于查询语句包括的词语生成语法树;

调整模块,用于基于所述语法树中每个词语对应的倒排列表包括的信息的数量,调整所述语法树中的词语的执行顺序;

确定模块,用于基于调整执行顺序后的所述语法树进行搜索,并根据搜索结果确定所述语法树中每个词语的执行顺序,且所述执行顺序使整体搜索代价最小;其中,所述语法树用于供所述搜索引擎在接收到所述查询语句时进行搜索。

上述方案中,所述生成模块,还用于:

对所述查询语句进行分词处理,得到至少一个词元;

对所述至少一个词元进行同化处理,得到至少一个词语;

对所述至少一个词语进行语法分析,得到表征各个词语之间逻辑关系的逻辑运算符;

基于所述至少一个词语和所述逻辑运算符生成所述语法树。

上述方案中,当所述语法树包括至少两个相邻的与算子时,所述调整模块,还用于:

在所述语法树中,确定所述至少两个相邻的与算子所连接的词语对应的信息的数量;

将所述对应的信息的数量最少的词语的执行顺序调整为首位。

上述方案中,当所述语法树包括至少一个非算子时,所述调整模块,还用于:

在所述语法树中,确定所述至少一个非算子连接的词语对应信息的数量;

将所述至少一个非算子连接的词语的执行顺序调整到其他逻辑运算符连接的词语之后,所述其他逻辑运算符包括与算子和或算子;

其中,当所述语法树包括至少两个非算子时,所述至少两个非算子连接的词语的执行顺序与相应词语所对应的信息的数量的排序一致。

上述方案中,所述确定模块,还用于:

对所述语法树中其他词语的执行顺序进行调整,得到由所述语法树中的所有词语构成的多个组合,所述其他词语是所述语法树中除所述对应的信息的数量最少的词语之外的词语;

分别对所述多个组合进行搜索,得到对应的多个搜索结果,以及每个搜索结果对应的搜索量;

确定最小搜索量对应的组合中每个词语的执行顺序。

上述方案中,所述确定模块,还用于:

对所述语法树中其他词语的执行顺序进行调整,得到由所述语法树中的所有词语构成的多个组合,所述其他词语是所述语法树中除所述对应的信息的数量最少的词语之外的词语;

分别对所述多个组合进行搜索,得到对应的多个搜索结果,以及每个搜索结果对应的搜索耗时;

确定最小搜索耗时对应的组合中每个词语的执行顺序。

上述方案中,所述搜索引擎的查询优化装置还包括搜索模块,用于:

接收所述搜索引擎发送的携带查询语句的搜索请求;

确定与所述搜索请求中的查询语句匹配的语法树;

基于所述匹配的语法树中各个词语的执行顺序进行搜索,得到至少一个搜索结果;

将所述至少一个搜索结果按照与所述查询语句的相关度降序排序,并返回给所述搜索引擎。

上述方案中,所述搜索模块,还用于:

获取所述历史查询记录中的查询语句对应的多个过滤条件;

对所述多个过滤条件重组,基于重组后的多个过滤条件构建多个过滤器;

分别基于所述多个过滤器对所述查询语句进行搜索,得到每个过滤器对应的搜索耗时;

将搜索耗时最短的过滤器作为所述查询语句的过滤器,所述过滤器用于在接收到携带所述查询语句的搜索请求时进行搜索。

上述方案中,所述搜索模块,还用于:

获取所述历史查询记录中的查询语句对应的多个过滤条件;

确定每个过滤条件对应的过滤后的信息数量;

将所述多个过滤条件按照过滤后的信息数量升序排序,基于升序排序的多个过滤条件构建过滤器,所述过滤器用于在接收到携带所述查询语句的搜索请求时进行搜索。

本申请实施例还提供一种电子设备,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的搜索引擎的查询优化方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的搜索引擎的查询优化方法。

本申请实施例具有以下有益效果:

基于历史查询记录中的查询语句生成语法树,基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中词语的执行顺序,因为语法树中词语的执行顺序不同,对应的搜索量也不同,因此对语法树中词语的执行顺序进行调整可以减小搜索量;之后,基于调整执行顺序后的语法树进行搜索,并根据搜索结果再次调整语法树中每个词语的执行顺序,如此,可根据实际搜索结果的反馈确定出使整体搜索代价最小的各个词语的执行顺序,当基于最后调整得到的语法树进行搜索时,有效地减少了搜索消耗,提高了搜索效率。

附图说明

图1A是本申请实施例提供的搜索系统10的架构示意图;

图1B是本申请实施例提供的搜索系统10的架构示意图;

图2A是本申请实施例提供的搜索引擎的查询优化方法的流程示意图;

图2B是本申请实施例提供的搜索引擎的查询优化方法的流程示意图;

图3是本申请实施例提供的语法树的示意图;

图4是本申请实施例提供的调整执行顺序后的语法树的示意图;

图5是本申请实施例提供的搜索引擎的查询优化方法的交互流程示意图;

图6是本申请实施例提供的服务器的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)搜索召回:即通过查询语句进行搜索,并返回符合条件的搜索结果。

2)倒排列表:倒排列表记载了出现过某个词语的所有信息的信息列表及词语在该信息中出现的位置,信息列表中每条记录称为一个倒排项。信息列表中的信息可以是文档、网页等。根据倒排列表,即可获知哪些信息包含某个词语。

查询优化器分为基于规则的优化器和基于代价的优化器。基于规则的优化器通过预先设定好的规则将查询语句改写得更简单,从而实现提高查询效率的目的。基于代价的优化器通过一系列优化方法,例如基于统计、基数估计、转化规则、代价模型、计划空间搜索引擎等手段来提高查询效率。

在相关技术提供的搜索引擎中,语法树中词语的执行顺序或过滤器中过滤条件的执行顺序,是按照业务指定的顺序进行执行的。部分优化较好的搜索引擎,会增加一些基于规则的优化器,从而将过滤器中的多个过滤条件提前合并,或者将深层次语法树转化为浅层语法树,即在不改变语义的前提下,将深层次语法树对应的复杂的查询表达式等价替换为更简单的查询表达式(对应浅层语法树)。

在对语法树中的词语进行搜索时,搜索效率会受词语的执行顺序的影响。例如查询表达式为(a or b)and c and d,如果d对应的倒排列表中包括的信息数量很小,前面2次搜索,即分别对“a or b”和对“(a or b)and c”进行搜索,将造成很多无意义的消耗,如对中央处理器(CPU,Central Processing Unit)等资源的消耗。此时,基于规则的优化器,因为无法考虑各个词语对应的信息数量,所以无法确定使消耗最小的各个词语的执行顺序,无法解决消耗大这一问题。而且,基于规则的优化器也无法解决搜索中非语法表达层面的问题,例如,查询语句要求找出分辨率高于480×800的图片。

为了解决相关技术中搜索时消耗资源大的技术问题,本申请实施例提供一种搜索引擎的查询优化方法、装置、电子设备和计算机可读存储介质,能减少搜索消耗,提高搜索效率。

本申请实施例提供的搜索引擎的查询优化方法可以由各种电子设备实施,例如,可以由终端单独实施,也可以由服务器和终端协同实施。例如服务器独自执行下文所述的搜索引擎的查询优化方法,或者,由终端和服务器协同执行下文所述的搜索引擎的查询优化方法,例如终端向服务器发送携带查询语句的搜索请求,服务器根据搜索请求确定语法树中各个词语的执行顺序,基于语法树进行搜索,得到搜索结果,并将搜索结果返回给终端。

本申请实施例提供的用于搜索引擎的查询优化的电子设备可以是各种类型的终端设备或服务器,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器;终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例对此不做限制。

以服务器为例,例如可以是部署在云端的服务器集群,向用户开放人工智能云服务(AIaaS,AI as a Service),AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务,这种服务模式类似于一个AI主题商城,所有的用户都可以通过应用程序编程接口的方式来接入使用AIaaS平台提供的一种或者多种人工智能服务。

例如,其中的一种人工智能云服务可以是搜索引擎的查询优化服务,即云端的服务器封装有本申请实施例提供的搜索引擎的查询优化程序。终端响应于用户针对搜索引擎的搜索操作,通过调用云服务中的搜索引擎的查询优化服务,以使部署在云端的服务器调用封装的搜索引擎的查询优化的程序,确定语法树中各个词语的执行顺序,基于语法树进行搜索,得到搜索结果,并将搜索结果返回给终端。

下面以服务器和终端协同实施本申请实施例提供的搜索引擎的查询优化方法为例进行说明。参见图1A,图1A是本申请实施例提供的搜索系统10的架构示意图。终端400通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。

在一些实施例中,终端400中的搜索响应于针对搜索引擎的搜索操作,向服务器200发送携带查询语句的搜索请求,服务器200基于搜索请求中的查询语句在数据库中进行查找,确定与该查询语句对应的消耗最小的查询表达式,即确定对应的语法树中各个词语的执行顺序。基于语法树(即基于语法树对应的查询表达式)进行搜索,得到对应的搜索结果,将搜索结果返回给终端400,以在终端400中显示该搜索结果。

本申请实施例还可以通过区块链技术来实现,参见图1B,图1B是本申请实施例提供的搜索系统10的架构示意图。终端400在每次查询结束后,将历史查询记录发送给区块链网络500(示例性示出了区块链网络500包括的节点510-1、节点510-2和节点510-3),当区块链网络500中的历史查询记录达到一定规模时,将历史查询记录发送给服务器200,服务器200获取历史查询记录中的查询语句,基于查询语句包括的词语生成语法树,并确定使消耗最小的语法树中各个词语的执行顺序,将重新确定执行顺序后的语法树对应的查询表达式保存于数据库中。当服务器200接收到针对该查询语句的搜索请求时,基于对应的语法树进行搜索,得到搜索结果,将搜索结果返回给终端400。

下面将结合附图对本申请实施例提供的搜索引擎的查询优化方法进行说明,下述搜索引擎的查询优化方法的执行主体可以为服务器,具体可以是服务器通过运行上文的各种计算机程序来实现的;当然,根据对下文的理解,不难看出也可以由终端和服务器协同实施本申请实施例提供的搜索引擎的查询优化方法。

参见图2A,图2A是本申请实施例提供的搜索引擎的查询优化方法的流程示意图,将结合图2A示出的步骤进行说明。

在步骤101中,获取搜索引擎的历史查询记录,历史查询记录包括多个查询语句。

在一些实施例中,终端在通过搜索引擎向服务器发送搜索请求时,服务器会将搜索请求的相关信息记录于历史查询记录中,搜索请求的相关信息包括查询语句、用户身份标识号、搜索时间、搜索结果等。查询语句可以是一段话,例如“预测未来一周天气”,也可以是一些关键词,例如“红烧鱼”、“做法”等。服务器通过获取过去一段时间(如过去一周或过去一个月)的历史查询记录,得到多个查询语句。

在步骤102中,基于查询语句包括的词语生成语法树。

如图2B所示,图2B是本申请实施例提供的搜索引擎的查询优化方法的流程示意图。在一些实施例中,基于查询语句包括的词语生成语法树,可以通过图2B中的步骤1021至步骤1024实现。

在步骤1021中,对查询语句进行分词处理,得到至少一个词元。

服务器通过分词组件对查询语句进行分词处理,包括切词、去标点符号、去停词。当查询语句为中文时,可以通过词典进行切词或单独按照字进行切词,当查询语句为英文时,可以按照空格进行切词。停词是语言中没有特殊含义的副词,例如英文中的“this”、“is”,汉语中的“是”、“的”等。

在一些可能的示例中,当查询语句为“明天的天气”时,经过分词处理,得到的词元为“明天”和“天气”。

在步骤1022中,对至少一个词元进行同化处理,得到至少一个词语。

以英文为例,对至少一个词元进行同化处理包括大小写转换(例如,将“STUDENT”转换成“student”)和将词元转换成词根(例如,将“cars”转换成“car”)。当查询语句为中文时,在执行完步骤1021后,执行步骤1023。

在步骤1023中,对至少一个词语进行语法分析,得到表征各个词语之间逻辑关系的逻辑运算符。

例如,至少一个词语为“明天”和“天气”,经过语法分析,可以确定这两个词语之间的逻辑关系为并列,因此,对应的逻辑运算符为与算子“and”。再例如,当查询语句为“Catand mouse”时,对应的至少一个词语分别为“cat”和“mouse”,二者之间的逻辑运算符为与算子“and”。

在步骤1024中,基于至少一个词语和逻辑运算符生成语法树。

在一些实施例中,逻辑运算符包括以下至少一种:与算子、或算子、非算子。如图3所示,图3是本申请实施例提供的语法树的示意图,图3中的词语包括a、b、c、d,并且通过或算子or连接a和b,通过与算子and连接(a or b)和c,以及(a or b)and c和d。通过语法树,可以清晰的看到语法树中各个词语的执行顺序。

在步骤103中,基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中的词语的执行顺序。

在一些实施例中,当语法树包括至少两个相邻的与算子时,在语法树中,确定至少两个相邻的与算子所连接的词语对应的信息的数量;将对应的信息的数量最少的词语的执行顺序调整为首位。其中,基于历史查询记录中的搜索结果确定与算子所连接的词语对应的信息的数量,当历史查询结果中不存在该词语对应的信息的数量时,直接基于该词语进行搜索,以确定该词语对应的信息的数量。如图3所示,图3所示的语法树中包括两个相邻的与算子,分别连接(a or b)、c和d。a和b对应的倒排列表包括的信息的数量为50万,则(a orb)对应的信息的数量在50万至100万之间,c对应的倒排列表包括的信息的数量为70万,d对应的倒排列表包括的信息的数量为800。因为d对应的信息的数量最少,所以调整图3中d的执行顺序为首位,调整后如图4所示,图4是本申请实施例提供的调整执行顺序后的语法树的示意图。图4所示的语法树中执行顺序依次为d、(a or b)、c。

在一些实施例中,当语法树包括至少一个非算子not时,在语法树中,确定至少一个非算子连接的词语对应信息的数量;将至少一个非算子连接的词语的执行顺序调整到其他逻辑运算符连接的词语之后,其他逻辑运算符包括与算子、或算子等。例如,语法树对应的查询表达式为e not h and(f or g),则将非算子not和所连接的词语h调整到(f or g)之后,得到e and(f or g)not h。

当语法树包括至少两个非算子时,至少两个非算子连接的词语的执行顺序与相应词语所对应的信息的数量的排序一致。例如,语法树对应的查询表达式为e not h not iand j。其中,h对应的倒排列表包括的信息的数量为50万,i对应的倒排列表包括的信息的数量为70万,因为h对应的信息数量相比于i更小,所以,将i的执行顺序调整为h之前,如此,可以更早地过滤掉更多无用的信息。调整之后的语法树对应的查询表达式为e and j noti not h。

在步骤104中,基于调整执行顺序后的语法树进行搜索,并根据搜索结果确定语法树中每个词语的执行顺序,且执行顺序使整体搜索代价最小。

在一些实施例中,步骤103只调整了部分词语的执行顺序,在步骤104中对语法树中除了已经调整执行顺序的部分词语之外的其他词语的执行顺序进行调整,得到由语法树中的所有词语构成的多个组合。例如,语法树对应的查询表达式为(a or b)and c and d,在步骤103中调整为d and(a or b)an d c之后,继续对除d之外的词语进行调整,可以得到组合“d and(a or b)and c”和组合“d and c and(a or b)”。在得到多个组合后,对多个组合进行搜索,得到对应的多个搜索结果。在一些可能的示例中,当搜索代价为搜索量时,在得到搜索结果的同时还会得到对应的搜索量。例如搜索量为50万,则表示服务器搜索的数据量为50万。因为不同组合中词语的执行顺序不同,相应的搜索量也不同,最小搜索量对应的组合中各个词语的执行顺序是各个词语理想的执行顺序。将搜索量最小的组合对应的查询表达式作为查询语句对应的查询表达式存储于数据库中。可见,这种调整方法可以减少服务器需要遍历的数据量,从而减轻服务器压力。

在一些可能的示例中,当搜索代价为搜索耗时的时候,在得到搜索结果的同时还会得到对应的搜索耗时,例如,在针对一个组合进行搜索的过程中,搜索耗时为0.3秒。确定最小搜索耗时对应的组合中每个词语的执行顺序,并将搜索耗时最小的组合对应的查询表达式作为查询语句对应的查询表达式存储于数据库中。如此,当针对查询语句进行搜索时,可以尽快地得到搜索结果,并向搜索引擎返回搜索结果,提高用户的使用体验。

在一些实施例中,当服务器接收到搜索引擎发送的携带查询语句的搜索请求时,服务器基于查询语句在数据库中进行查找,以确定与查询语句对应的查询表达式,并确定查询表达式所对应的语法树,该语法树与查询语句相匹配。基于该语法树中各个词语的执行顺序进行搜索,得到至少一个搜索结果。将至少一个搜索结果按照与查询语句的相关度降序排序,并返回给搜索引擎。例如,搜索结果为结果1、结果2和结果3,结果1与查询语句的相关度为70%,结果2与查询语句的相关度为50%,结果3与查询语句的相关度为30%。将以上3个搜索结果按照结果1、结果2和结果3的排序返回给搜索引擎。

在一些实施例中,还可以通过过滤器来确定查询语句的搜索结果,以解决搜索中非语法表达层面的问题。过滤器由多个过滤条件构成。当通过过滤器确定查询语句的搜索结果时,服务器通过以下步骤1041至步骤1044确定查询语句对应的过滤器。

在步骤1041中,获取历史查询记录中的查询语句对应的多个过滤条件。

例如,查询语句对应的多个过滤条件分别为过滤条件1“图片”、过滤条件2“分辨率高于480×800”和过滤条件3“红色”。

在步骤1042中,对多个过滤条件重组,基于重组后的多个过滤条件构建多个过滤器。

例如,将上述3个过滤条件重组,可以构建得到排序为过滤条件1、过滤条件2和过滤条件3的过滤器1,排序为过滤条件1、过滤条件3和过滤条件2的过滤器2,排序为过滤条件2、过滤条件1和过滤条件3的过滤器3,排序为过滤条件2、过滤条件3和过滤条件1的过滤器4,排序为过滤条件3、过滤条件2和过滤条件1的过滤器5,排序为过滤条件3、过滤条件1和过滤条件2的过滤器6。

在步骤1043中,分别基于多个过滤器对查询语句进行搜索,得到每个过滤器对应的搜索耗时。

在步骤1044中,将搜索耗时最短的过滤器作为查询语句的过滤器,过滤器用于在接收到携带查询语句的搜索请求时进行搜索。

例如,在分别基于上述6个过滤器对查询语句进行搜索后,得到每个过滤器对应的搜索耗时中,过滤器2对应的搜索耗时最短,则将过滤器2作为该查询语句的过滤器,并将该过滤器与查询语句存储于数据库中。当服务器接收到携带该查询语句的搜索请求时,通过该过滤器确定搜索结果,并将搜索结果返回给搜索引擎。如此,可以尽快地向搜索引擎返回搜索结果,提高用户的使用体验。

在另一些实施例中,当通过过滤器确定查询语句的搜索结果时,服务器获取历史查询记录中的查询语句对应的多个过滤条件;确定每个过滤条件对应的过滤后的信息数量;将多个过滤条件按照过滤后的信息数量升序排序,基于升序排序的多个过滤条件构建过滤器。例如,2个过滤条件中,过滤条件A对应的过滤后的信息数量为10万,过滤条件B对应的过滤后的信息数量为20万,则将过滤条件A的顺序调整为过滤条件B之前,得到排序为过滤条件A、过滤条件B的过滤器。

在一些可能的示例中,一些过滤条件,如黑名单过滤条件、城市等级限制过滤条件等在过滤后会保留99%的数据,因此,将这些过滤后数据量仍然较大的过滤条件在过滤器中的排序后调,可以有效地提高搜索效率,从而加快索引召回性能。

可以看出,本申请实施例基于历史查询记录中的查询语句生成语法树,基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中词语的执行顺序,因为语法树中词语的执行顺序不同,对应的搜索量也不同,因此对语法树中词语的执行顺序进行调整可以减小搜索量;基于调整执行顺序后的语法树进行搜索,并根据搜索结果再次调整语法树中每个词语的执行顺序,如此,可根据实际搜索结果的反馈确定出使整体搜索代价最小的各个词语的执行顺序,相当于引入了基于代价的优化器。当基于最后调整得到的语法树进行搜索时,有效地减少搜索消耗,提高搜索效率,且通用性强。

在一些实施例中,参见图5,图5是本申请实施例提供的搜索引擎的查询优化方法的交互流程示意图,下面将结合图5中的步骤201至步骤209说明由终端和服务器协同实施本申请实施例提供的搜索引擎的查询优化方法的过程。

在步骤201中,服务器获取搜索引擎的历史查询记录,历史查询记录包括多个查询语句。

在步骤202中,服务器基于查询语句包括的词语生成语法树。

在步骤203中,服务器基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中的词语的执行顺序。

在步骤204中,服务器基于调整执行顺序后的语法树进行搜索,并根据搜索结果确定语法树中每个词语的执行顺序,且执行顺序使整体搜索代价最小。

在步骤205中,终端向服务器发送携带查询语句的搜索请求。

在步骤206中,服务器确定与搜索请求中的查询语句匹配的语法树。

在步骤207中,服务器基于匹配的语法树中各个词语的执行顺序进行搜索,得到至少一个搜索结果。

在步骤208中,服务器将至少一个搜索结果按照与查询语句的相关度降序排序。

在步骤209中,服务器将降序排序后的至少一个搜索结果发送给终端。

需要说明的是,在前文中已对上述步骤进行了详细的描述,此处不再赘述。

下面,将说明本申请实施例提供的搜索引擎的查询优化方法的具体示例。

首先介绍搜索引擎内倒排列表遍历求交的过程。例如需要求词语1和词语2的交集,词语1的搜索结果存放于倒排列表1中,词语2的搜索结果存放于倒排列表2中。一般先从倒排列表1中取出一个文档,检查该文档是否在倒排列表2中。因为倒排列表2是有序的,所以可以使用快速查找方法,基于倒排列表1中的文档迅速定位倒排列表2中与之相同的文档,从而避免遍历整个倒排列表2。对倒排列表1中的每个文档重复上述过程,以确定倒排列表2与倒排列表1相同的文档,这个过程的长短取决于倒排列表1中的文档数量。例如倒排列表1只有1个文档,那在检查完这个文档是否在倒排列表2中后,即可结束搜索。若倒排列表1中文档数量较多,则会带来很多额外开销。

为了减少搜索的开销,本申请实施例提出以下两种方案。方案一:预测各个词语对应的倒排列表中包括的文档数量,调整语法树中多个与算子所连接的词语的执行顺序,即优先执行对应的倒排列表中包括的文档数量最小的词语。方案二:通过统计实际遍历的文档数量来进行优化。

以下具体介绍上述两种方案。

查询子句 数据规模
a or b 不超过100万(a:50万,b:50万)
c 70万
d 800

表1查询子句对应的数据规模表

在方案一中,服务器基于搜索引擎的历史查询记录离线生成倒排列表,确定每个词语对应的倒排列表中的文档数量。如图3所示,假设语法树对应的查询表达式为(a or b)and c and d,可以得到每次查询的对象(查询子句)对应的预估数据规模,如表1所示。

根据先执行小规模的查询子句的策略,将语法树中的词语的执行顺序按照图4进行调整,则语法树对应的查询表达式相应调整为d and c and(a or b)。

其中,本申请实施例提供了不同的算子,用于实现不同的功能。例如,词语查询算子term,用于确定倒排列表包括的文档的数量。当词语a对应的文档数量为50万时,term a=50万。并算子and,用于对它连接的两个词语分别对应的文档取交集。或算子or,用于对它连接的两个词语分别对应的文档取并集。非算子not,用于从已有的文档数量中减去它所连接的词语对应的文档数量。

考虑到由或算子连接的两个词语存在交集,因此由或算子和它所连接的两个词语构成的整体对应的文档数量难以确定,只能粗略的估计。另外,当使用过滤器来进行搜索时,因为过滤器是由多个过滤条件构成的,而过滤条件不一定关联某个倒排列表(例如,需要根据文档中的字段进行范围过滤的情况),所以,本申请实施例提出了方案二。

在方案二中,在查询语句对应的多个过滤条件中,统计每个过滤条件所遍历的文档的数量和过滤后剩下的文档的数量,将多个过滤条件按照过滤后剩下的文档的数量的升序排序,得到由多个过滤条件构成的、且与查询语句对应的过滤器。或者,统计执行过滤器/语法树时的消耗,将消耗最小的过滤器/语法树作为查询语句对应的过滤器/语法树。例如,统计执行过滤器/语法树时的单次遍历的文档数,或者统计一段时间内执行过滤器/语法树时的平均耗时。其中,在统计文档的数量时,只需对各个算子或各个过滤条件进行编码,统计的数量即可在索引内核缓存中集成,从而完成统计。

可见,方案一中的查询算子用于遍历倒排列表的长度,方案二中的过滤器可用于统计过滤后剩下的文档数量,方案二提供的优化方法将剩下的文档数量少的过滤条件前置,这样能尽早的去掉不需要的文档,与方案一中的优化有异曲同工的效果。复杂的查询优化策略往往在一些针对性的情况中效果不错,但在通用性上缺乏优势。相较于复杂的查询优化策略,方案二效率较高,且易于实现。

在一些可能的示例中,也可将方案一和方案二相结合,即根据方案一提供的方法调整语法树中部分词语的执行顺序,然后调整语法树中其他词语的执行顺序,得到多个组合;分别对多个组合进行搜索,得到对应的多个搜索结果,以及每个搜索结果对应的搜索量;将最小搜索量对应的组合的表达式作为语法树对应的查询表达式。例如,语法树对应的查询表达式为a and b and c,通过方案一确定c的执行顺序是第一,则查询表达式调整为cand a and b。调整b和c的执行顺序,得到组合1“c and a and b”和组合2“c and b anda”。对组合1和组合2进行搜索,并确定组合2对应的搜索量更小,则将语法树对应的查询表达式确定为组合2“c and b and a”。

可以看出,本申请实施例提供了两种简单有效的查询优化方法,能够提升索引查询与过滤的性能。在实际业务中,往往存在过滤后保留99%数据的过滤器(例如黑名单过滤器、城市等级限制过滤器等);将这类过滤器后置,能有效地减少判断的时间,从而提高搜索召回性能。

继续以本申请实施例提供的电子设备为服务器为例说明示例性结构,参见图6,图6是本申请实施例提供的服务器的结构示意图,图6所示的服务器200包括:至少一个处理器410、存储器440、至少一个网络接口420。服务器200中的各个组件通过总线系统430耦合在一起。可理解,总线系统430用于实现这些组件之间的连接通信。总线系统430除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2A中将各种总线都标为总线系统430。

处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器440可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器440可选地包括在物理位置上远离处理器410的一个或多个存储设备。

存储器440包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器440旨在包括任意适合类型的存储器。

在一些实施例中,存储器440能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统441,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块442,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;

在一些实施例中,本申请实施例提供的搜索引擎的查询优化装置可以采用软件方式实现,图6示出了存储在存储器440中的搜索引擎的查询优化装置453,其可以是程序和插件等形式的软件,包括以下软件模块:生成模块4531、调整模块4532、确定模块4533和搜索模块4534,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

生成模块4531,用于获取搜索引擎的历史查询记录,历史查询记录包括多个查询语句,基于查询语句包括的词语生成语法树;调整模块4532,用于基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中的词语的执行顺序;确定模块4533,用于基于调整执行顺序后的语法树进行搜索,并根据搜索结果确定语法树中每个词语的执行顺序,且执行顺序使整体搜索代价最小;其中,语法树用于供搜索引擎在接收到查询语句时进行搜索。

在一些实施例中,生成模块4531,还用于:对查询语句进行分词处理,得到至少一个词元;对至少一个词元进行同化处理,得到至少一个词语;对至少一个词语进行语法分析,得到表征各个词语之间逻辑关系的逻辑运算符;基于至少一个词语和逻辑运算符生成语法树。

在一些实施例中,当语法树包括至少两个相邻的与算子时,调整模块4532,还用于:在语法树中,确定至少两个相邻的与算子所连接的词语对应的信息的数量;将对应的信息的数量最少的词语的执行顺序调整为首位。

在一些实施例中,当语法树包括至少一个非算子时,调整模块4532,还用于:在语法树中,确定至少一个非算子连接的词语对应信息的数量;将至少一个非算子连接的词语的执行顺序调整到其他逻辑运算符连接的词语之后,其他逻辑运算符包括与算子和或算子;其中,当语法树包括至少两个非算子时,至少两个非算子连接的词语的执行顺序与相应词语所对应的信息的数量的排序一致。

在一些实施例中,确定模块4533,还用于:对语法树中其他词语的执行顺序进行调整,得到由语法树中的所有词语构成的多个组合,其他词语是语法树中除对应的信息的数量最少的词语之外的词语;分别对多个组合进行搜索,得到对应的多个搜索结果,以及每个搜索结果对应的搜索量;确定最小搜索量对应的组合中每个词语的执行顺序。

在一些实施例中,确定模块4533,还用于:对语法树中其他词语的执行顺序进行调整,得到由语法树中的所有词语构成的多个组合,其他词语是语法树中除对应的信息的数量最少的词语之外的词语;分别对多个组合进行搜索,得到对应的多个搜索结果,以及每个搜索结果对应的搜索耗时;确定最小搜索耗时对应的组合中每个词语的执行顺序。

在一些实施例中,搜索引擎的查询优化装置还包括搜索模块4534,用于:接收搜索引擎发送的携带查询语句的搜索请求;确定与搜索请求中的查询语句匹配的语法树;基于匹配的语法树中各个词语的执行顺序进行搜索,得到至少一个搜索结果;将至少一个搜索结果按照与查询语句的相关度降序排序,并返回给搜索引擎。

在一些实施例中,搜索模块4534,还用于:获取历史查询记录中的查询语句对应的多个过滤条件;对多个过滤条件重组,基于重组后的多个过滤条件构建多个过滤器;分别基于多个过滤器对查询语句进行搜索,得到每个过滤器对应的搜索耗时;将搜索耗时最短的过滤器作为查询语句的过滤器,过滤器用于在接收到携带查询语句的搜索请求时进行搜索。

在一些实施例中,搜索模块4534,还用于:获取历史查询记录中的查询语句对应的多个过滤条件;确定每个过滤条件对应的过滤后的信息数量;将多个过滤条件按照过滤后的信息数量升序排序,基于升序排序的多个过滤条件构建过滤器,过滤器用于在接收到携带查询语句的搜索请求时进行搜索。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图2A示出的搜索引擎的查询优化方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

综上所述,本申请实施例基于历史查询记录中的查询语句生成语法树,基于语法树中每个词语对应的倒排列表包括的信息的数量,调整语法树中词语的执行顺序,因为语法树中词语的执行顺序不同,对应的搜索量也不同,因此对语法树中词语的执行顺序进行调整可以减小搜索量;之后,基于调整执行顺序后的语法树进行搜索,并根据搜索结果再次调整语法树中每个词语的执行顺序,如此,可根据实际搜索结果的反馈确定出使整体搜索代价最小的各个词语的执行顺序,当基于最后调整得到的语法树进行搜索时,有效地减少了搜索消耗,提高了搜索效率。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:图神经网络模型适用性判定方法、装置和计算机设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!