Some content of this application is unavailable at the moment.
If this situation persist, please contact us atFeedback&Contact
1. (WO2019007010) DISTRIBUTED SEARCHING AND INDEX UPDATING METHOD AND SYSTEM, SERVERS, AND COMPUTER DEVICES
Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

附图

1   2   3   4   5   6   7  

说明书

发明名称 : 分布式搜索及索引更新方法、系统、服务器及计算机设备

[0001]
相关申请的交叉引用
[0002]
本专利申请要求于2017年7月5日提交的、申请号为201710540135.0、发明名称为“分布式搜索及索引更新方法、系统、服务器及计算机设备”的中国专利申请的优先权,该申请的全文以引用的方式并入本文中。

技术领域

[0003]
本发明涉及分布式搜索及索引更新方法、系统、服务器及计算机设备。

背景技术

[0004]
随着移动互联网的发展,人们可以方便地通过移动设备访问网络,获取网络服务,由此而兴起了一批线上到线下(O2O,Online-to-Offline)本地生活化服务。但随着业务的爆发性增长,搜索引擎需要查询的数据量越来越大,单机内存已存储不下这些数据,使得系统稳定性越来越低,而且查询请求的延时也越来越大,使得用户体验也越来越差。
[0005]
可将搜索、索引和索引维护程序放在一台服务器上,或者将索引拆分到多台机器上并由引擎这块负责管理索引。然而,当搜索并发量大的情况下,可能无法进行实时扩展。并且,随着业务量越来越多,需要的索引数也越来越多,运维成本也越来越大,并影响线上稳定性。
[0006]
可采用主(master)从(slave)结构的分布式搜索系统。然而,由于主服务器需要选举,当主服务器出现异常无法工作时,需要重新选举主服务器,这就可能导致在重新选取主服务器的时间内搜索服务不可用,从而影响了线上稳定性。
[0007]
发明内容
[0008]
为解决现有存在的技术问题,本发明实施例提供一种分布式搜索及索引更新方法、系统、服务器及计算机设备。
[0009]
根据本发明的第一方面,提供了一种分布式搜索方法,包括:多个代理服务器中的至少一个第一代理服务器在接收到来自查询服务器的查询请求时,获得所述查询请求对应的属性信息;所述第一代理服务器基于所述属性信息查询配置管理服务器,以获得所述属性信息对应的机器信息;所述第一代理服务器向所述机器信息对应的至少两个引擎服务器发送所述 查询请求;所述第一代理服务器获得所述至少两个引擎服务器根据所述查询请求而返回的第一查询结果;所述第一代理服务器将至少两个所述第一查询结果按照预设规则合并为第二查询结果;以及所述第一代理服务器将所述第二查询结果发送至所述查询服务器。
[0010]
根据本发明的第二方面,提供了一种索引更新方法,包括:主控服务器从配置管理服务器获得拆分规则;所述主控服务器发送所述拆分规则至索引创建服务器,以使所述索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分;所述主控服务器获得表征所述拆分的结果的索引配置信息;所述主控服务器基于所述索引配置信息获取索引数据;所述主控服务器将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。
[0011]
根据本发明的第三方面,提供了一种代理服务器,包括:通讯单元,用于接收来自查询服务器的查询请求;处理单元,用于获得所述查询请求对应的属性信息,基于所述属性信息查询配置管理服务器以获得所述属性信息对应的机器信息,并确定所述机器信息对应的至少两个引擎服务器。其中,所述通讯单元还用于向所述至少两个引擎服务器发送所述查询请求,以获得所述至少两个引擎服务器根据所述查询请求而返回的第一查询结果。所述处理单元还用于将至少两个所述第一查询结果按照预设规则进行合并,得到第二查询结果。所述通讯单元还用于将所述第二查询结果发送至所述查询服务器。
[0012]
根据本发明的第四方面,提供了一种主控服务器,包括:主控模块,用于从配置管理服务器获得拆分规则;通知模块,用于发送所述拆分规则至索引创建服务器,以使所述索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分,并获得表征所述拆分的结果的索引配置信息。其中,所述主控模块还用于基于所述索引配置信息获取索引数据,并将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。
[0013]
根据本发明的第五方面,提供了一种分布式搜索系统,包括:配置管理服务器,用于管理配置信息和机器信息,所述配置信息包括拆分规则,所述机器信息表征所述多个引擎服务器的信息;查询服务器,用于获得终端设备的查询请求;多个代理服务器;以及多个引擎服务器,所述多个引擎服务器中的每个引擎服务器用于存储满足所述拆分规则的索引数据。其中,所述多个代理服务器中的至少一个第一代理服务器接收到来自所述查询服务器的所述查询请求后,通过基于所述查询请求的属性信息查询所述配置管理服务器,确定所述多个引擎服务器中的至少两个第一引擎服务器,并向所述至少两个第一引擎服务器发送所述查询请求。所述至少两个第一引擎服务器各自响应于收到所述查询请求回复第一查询结果。所述至少一个第一代理服务器将至少两个所述第一查询结果合并为第二查询结果,并发送至所述查询服务器,以由所述查询服务器将所述第二查询结果返回至所述终端设备。
[0014]
根据本发明的第六方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述分布式搜索方法的步骤。
[0015]
根据本发明的第七方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述索引更新方法的步骤。
[0016]
采用本发明实施例的技术方案,通过多个代理服务器联结查询服务器和引擎服务器的分布式架构,查询服务器的查询请求可被发送至多个代理服务中的至少一个代理服务器,由至少一个代理服务器从相应的至少两个引擎服务器中获得查询结果。由于多个代理服务器相互之间具有并行关系,一个代理服务器无法工作还可通过其他代理服务器工作,可有效避免主设备无法工作时因需要重新选择主设备而导致的短时间内搜索服务不可用。另外,由于通过主控服务器联结配置管理服务器、索引创建服务器和引擎服务器进行索引数据的更新维护,代理服务器无需承担索引的更新维护,可大大降低了代理服务器的负担。

附图说明

[0017]
图1为本发明一实施例的索引更新方法的流程示意图。
[0018]
图2为本发明一实施例中的分布式搜索方法的应用架构以及数据交互示意图。
[0019]
图3为本发明另一实施例的分布式搜索方法的流程示意图。
[0020]
图4为本发明另一实施例中的分布式搜索方法的应用架构以及数据交互示意图。
[0021]
图5为本发明一实施例的代理服务器的组成结构示意图。
[0022]
图6为本发明一实施例的主控服务器的组成结构示意图。
[0023]
图7为本发明实施例的计算机设备的组成结构示意图。

具体实施方式

[0024]
下面结合附图及具体实施例对本发明作进一步详细的说明。
[0025]
图1为本发明一实施例的索引更新方法的流程示意图。如图1所示,所述方法可包括:
[0026]
步骤101:主控服务器将从配置管理服务器获得的拆分规则发送至索引创建服务器,以使索引创建服务器根据所述拆分规则将待创建的索引数据拆分为多个索引配置信息。
[0027]
步骤102:所述主控服务器从所述索引创建服务器获得索引配置信息。
[0028]
步骤103:所述主控服务器基于所述索引配置信息获取索引数据。
[0029]
步骤104,所述主控服务器将所述索引数据存储至多个引擎服务器中对应的第一引擎服务器中,以更新所述第一引擎服务器中存储的索引数据。
[0030]
本实施例的索引更新方法可应用于主控服务器中,所述主控服务器具体可以是服务器或服务器集群。在一实施例中,所述主控服务器可包括主控模块210、通知模块220和多个客户端模块230,具体可参照图2所示。所述主控模块210可负责统一调度,并与配置管理服务器240通信。所述通知模块220可负责通知索引创建服务器250。所述通知模块220的数量可以是一个或多个。例如,多个通知模块220可基于业务类型的不同进行区分,以分别用于通知属于相应业务类型的索引创建的相关信息。所述客户端模块230的数量可与引擎服务器260的数量相同,且每个客户端模块230对应一个引擎服务器260,所述客户端模块230可用于根据主控模块210的指示拉取索引数据,将拉取的索引数据存储至对应的引擎服务器260中。所述主控模块210、每个通知模块220可通过独立的服务器实现。所述客户端模块230可位于对应的引擎服务器260中,并通过对应的引擎服务器260实现相应功能。在实际应用中,所述主控模块210可配置备用主控模块。每个通知模块220也可配置对应的备用通知模块。每个客户端模块230也可配置对应的备用客户端模块。这样,主模块出现异常无法工作时,可通过相应的备用模块继续执行相应的功能。
[0031]
配置管理服务器240用于管理配置信息和机器信息。所述机器信息可表征所述多个引擎服务器260的信息。其中,引擎服务器260的信息可包括引擎服务器的IP地址和端口等信息。作为一种示例,所述机器信息可通过包含有上述引擎服务器260的信息的机器列表表示。所述配置信息可至少包括业务标识、机器配置信息以及配置的规则信息等等。其中,所述机器配置信息可具体包括机器列表,也即包括引擎服务器260的IP地址和端口等信息。所述规则信息包括在搜索过程中所需要的任何操作规则,至少包括索引创建时所需要的拆分规则、索引创建规则、通知模块执行哪一种或几种业务类型的索引创建的通知信息的配置规则、客户端模块执行拉取哪一种或几种业务类型对应的索引数据的配置规则等等,当然不限于上述几种规则。
[0032]
主控服务器从配置管理服务器240中获得配置信息中的拆分规则,将所述拆分规则发送至索引创建服务器250,可具体包括:主控模块210从配置管理服务器240获得拆分规则,当然也包括索引创建规则;主控模块210发送所述拆分规则和所述索引创建规则至所述通知模块220;所述通知模块220发送所述拆分规则和所述索引创建规则至索引创建服务器250。 其中,所述通知模块220的数量可依据业务类型的不同配置有多个,则所述主控模块210可依据待创建的索引数据的业务类型,从所述配置管理服务器240中获得与所述业务类型相匹配的拆分规则和索引创建规则,并将所述拆分规则和所述索引创建规则发送至与所述业务类型相匹配的通知模块220。所述通知模块220再将所述拆分规则和所述索引创建规则发送至所述索引创建服务器250。
[0033]
所述索引创建服务器250依据所述索引创建规则创建索引,进一步依据所述拆分规则将创建的索引数据进行拆分。其中,所述拆分规则中可包括拆分参数,所述拆分参数具体可包括拆分数量,所述拆分数量用于表征索引数据的拆分数量。例如,所述拆分数量为N时,表征将索引数据拆分为N份索引子数据。N可为大于等于2的正整数,以表示创建的索引数据会分布存储在至少两个引擎服务器260中。例如,search_online_dis_1和search_online_dis_2是一份完整的索引数据,可依据拆分规则将其水平拆分为两个索引数据。所述两个索引数据可分别存储在一引擎服务器中。
[0034]
进一步地,所述索引创建服务器250可基于创建完成、且拆分后的索引数据生成索引配置信息。所述索引配置信息可包括多个,或者所述索引配置信息可包括多个索引配置子信息。多个所述索引配置信息或所述多个索引配置子信息可表征索引数据的拆分结果,以及包括拆分后的每个索引子数据对应的引擎服务器260。每个索引配置信息或者每个索引配置子信息用于表示相应的引擎服务器260对应获取并存储哪些索引数据。则所述通知模块220可获得索引配置信息,并将所述索引配置信息发送至所述主控模块210,以由所述主控模块210进一步指示相应的客户端模块230进行索引数据的拉取。
[0035]
所述主控服务器基于所述索引配置信息获取索引数据,将所述索引数据存储至至少两个引擎服务器中,可具体包括:所述主控模块210基于所述索引配置信息指示第一客户端模块230获取索引数据;所述第一客户端模块230为所述索引配置信息中包括的拆分结果对应的任一客户端模块;所述第一客户端模块230将获取的所述索引数据存储至与所述第一客户端模块230对应的引擎服务器260中。具体的,所述主控模块210可依据任一索引配置信息或者任一索引配置子信息所包括的索引数据对应的引擎服务器260,来指示所述引擎服务器260对应的第一客户端模块230。这样,所述第一客户端模块230可基于所述主控模块210的指示拉取相应的索引数据,并将拉取的索引数据存储至所述第一客户端模块230对应的引擎服务器260中。
[0036]
可以理解,本实施例的分布式搜索方法为索引数据的拉取更新过程,其具体可以作为离线的数据处理过程。参照图2所示,结合各服务器和各模块的数据处理过程可如下:
[0037]
步骤21:主控模块210从配置管理服务器240获得拆分规则和索引创建规则。作为一种实施方式,所述主控模块210可根据待创建的索引数据的业务类型获得与所述业务类型相匹配的拆分规则和索引创建规则。
[0038]
步骤22:所述主控模块210将所述拆分规则和索引创建规则发送至通知模块220。
[0039]
步骤23:所述通知模块220将所述拆分规则和索引创建规则发送至索引创建服务器250。
[0040]
所述索引创建服务器250可依据索引创建规则创建索引数据,以及依据拆分规则将索引数据拆分为N个索引子数据。并且,所述索引创建服务器250可基于创建完成、且拆分后的索引数据生成多个索引配置信息或者多个索引配置子信息。每个所述索引配置信息或每个所述索引配置子信息可表征索引数据的拆分结果,并包括拆分后的每个索引子数据对应的引擎服务器260,从而可表示相应的引擎服务器260对应获取并存储哪些索引数据。
[0041]
步骤24:索引创建服务器250将索引配置信息发送至所述通知模块220。
[0042]
步骤25:所述通知模块220将所述索引配置信息发送至所述主控模块210。其中,所述通知模块220的数量可以为多个。多个通知模块220可依据业务类型进行功能配置,即不同的通知模块执行相应业务类型的通知功能。这样,主控模块210可依据业务类型获得拆分规则和索引创建规则,并将获得的拆分规则和索引创建规则发送至与业务类型相匹配的通知模块220。相应的,所述索引创建服务器250可将索引配置信息发送至与业务类型相匹配的通知模块220。可以理解的是,多个通知模块可并行工作。
[0043]
步骤26:主控模块210依据索引配置信息指示客户端模块230。作为一种实施方式,所述主控模块210可依据多个索引配置信息中的任一索引配置信息或者任一索引配置子信息所包括的索引数据对应的引擎服务器260指示所述引擎服务器260对应的客户端模块230。这样,所述客户端模块230可基于所述主控模块210的指示拉取相应的索引数据,并将拉取的索引数据存储至所述客户端模块230对应的引擎服务器260中。
[0044]
采用本发明实施例的技术方案,引擎服务器260只需要加载对应的索引数据即可,索引数据的更新功能主要通过主控服务器(具体可以是主控服务器中的客户端模块)实现,可大大降低服务器的负担。索引数据分布存储在多个引擎服务器260中,在搜索过程中可大大降低了引擎服务器260的内存使用,从而可有效提升了搜索的效率,减少了搜索的响应时间,提升了用户的操作体验。
[0045]
本发明实施例还提供了一种分布搜索方法。图3为本发明另一实施例的分布式搜索方 法的流程示意图。如图3所示,所述方法可包括:
[0046]
步骤301:多个代理服务器中的第一代理服务器接收到查询服务器的查询请求,获得所述查询请求对应的属性信息。
[0047]
步骤302:所述第一代理服务器基于所述属性信息查询配置管理服务器,以获得所述属性信息对应的机器信息。
[0048]
步骤303:所述第一代理服务器向所述机器信息对应的至少两个引擎服务器发送所述查询请求,以获得所述至少两个引擎服务器各自根据所述查询请求而返回的第一查询结果。
[0049]
步骤304:所述第一代理服务器将至少两个所述第一查询结果按照预设规则合并为第二查询结果。
[0050]
步骤305:所述第一代理服务器将所述第二查询结果发送至所述查询服务器。
[0051]
本实施例的分布式搜索方法可应用于多个代理服务器,并且所述多个代理服务器中的每个代理服务器可具有相同的功能。图4为本发明实施例的分布式搜索方法的应用架构以及数据交互示意图。如图4所示,在本实施例中以代理服务器的数量为两个为例进行说明。
[0052]
查询服务器410接收到来自用户的终端设备的查询请求后,可按照预设规则将所述查询请求发送至多个代理服务器420中的至少一个第一代理服务器421。其中,所述预设规则可以是轮询规则或者随机规则等等。在实际应用中,可预先对多个代理服务器420进行编号,所述轮询规则可以是基于所述多个代理服务器420的编号顺序依次选择一个或多个代理服务器作为待发送查询请求的第一代理服务器。例如,以将查询请求发送至一个代理服务器为例,查询服务器410接收到第一查询请求时,可发送所述第一查询请求至编号为1的代理服务器420;查询服务器410接收到第二查询请求时,可发送所述第二查询请求至编号为2的代理服务器420,以此类推。所述第一查询请求和所述第二查询请求可根据数据接收时间确定。而所述随机规则可以是将接收到的查询请求按照预设随机算法发送至相对应的至少一个代理服务器420。
[0053]
所述第一代理服务器421获得所述查询请求对应的属性信息,所述属性信息可以为所述查询请求对应的业务类型,从而可基于所述业务类型向配置管理服务器240请求机器信息。所述配置管理服务器240的具体介绍可参见以上,在此不再赘述。此外,基于以上描述可知,在对引擎服务器260中的索引数据进行更新存储时,可基于拆分规则对索引数据进行拆分。因此,属于同一业务类型的索引数据可能存储在至少两个引擎服务器260中。
[0054]
基于此,本实施例中,第一代理服务器查询配置管理服务器240,以获得所述属性信 息对应的机器信息。其中,所述机器信息中可包括至少两个引擎服务器260的标识,所述至少两个引擎服务器260的标识可表明所述查询请求中对应的索引数据存储在所述至少两个引擎服务器中。在具体实现过程中,所述机器信息可通过一机器列表实现。因此,所述第一代理服务器421可根据所述机器信息向对应的至少两个引擎服务器260发送所述查询请求,以获得所述查询请求中包括的关键字或关键词、关联关键字或关联关键词对应的索引数据。
[0055]
作为一种实施方式,所述第一代理服务器421获得所述至少两个引擎服务器260返回的第一查询结果,可包括:所述第一代理服务器421获得满足预先配置的截断参数的第一查询结果。
[0056]
具体的,所述截断参数表示任一引擎服务器260返回的查询结果中的索引数据的数量。例如,若一引擎服务器260获得的查询结果包括1000个索引数据,而所述截断参数为600,则该引擎服务器260返回所述1000个索引数据中的前600个索引数据。这样可大大降低搜索时延以及提升每秒查询率(QPS,Query Per Second)。其中,所述截断参数可由配置管理服务器240进行配置,由主控服务器中的主控模块210获得该截断参数,并发送至各引擎服务器260中进行配置。
[0057]
本实施例中,所述第一代理服务器421获得至少两个引擎服务器260返回的第一查询结果,将获得的至少两个第一查询结果按照预设规则进行合并以及排序以生成第二查询结果,并将所述第二查询结果发送至所述查询服务器410,由所述查询服务器410发送至终端设备以输出显示给用户。
[0058]
可以理解为,本实施例的分布式搜索方法为搜索查询过程,其具体可以作为在线的数据处理过程。参照图4所示,结合各服务器的数据处理过程如下:
[0059]
步骤41:查询服务器410获得终端设备的查询请求。
[0060]
步骤42:查询服务器410将查询请求发送至多个代理服务器420中的至少一个第一代理服务器421。其中,所述第一代理服务器421可以是多个代理服务器420中与查询请求的业务类型对应的代理服务器,也可以是基于预设规则(例如轮询规则或者随机规则等)确定的代理服务器。
[0061]
其中,所述查询服务器410可对接收到的所述查询请求进行分析,一方面,获得所述查询请求中的关键字或关键词,另一方面,获得所述关键字或关键词具有关联关系的关联关键字或关联关键词,也即对所述查询请求进行意图识别。例如,所述查询请求中包括的关键字或关键词为一餐厅名字,则对所述关键词或关键词进行意图识别可获得关联关键字或关联 关键词为订餐或外卖等等。再例如,所述查询请求中包括的关键字或关键词为字符串,通过意图识别确定该字符串为一中文词语的拼音,则对应的关联关键字或关联关键词可以为该中文词语等等。查询服务器410可进一步基于意图识别后获得的至少一个关键词生成至少一个查询请求,并将所述至少一个查询请求分别发送至对应的至少一个第一代理服务器421。
[0062]
步骤43:第一代理服务器421基于所述查询请求的属性信息(例如业务类型)向配置管理服务器240请求机器列表,从而获得所述查询请求对应的索引数据所在的引擎服务器260的信息。
[0063]
步骤44:所述第一代理服务器421基于获得的机器列表相对应的至少两个引擎服务器260发送查询请求。
[0064]
步骤45:所述至少两个引擎服务器260基于所述查询请求中的内容加载索引数据,并向所述第一代理服务器421返回查询结果。其中,所述引擎服务器260可基于预先配置的截断参数控制查询结果中的索引数据的数量,从而减少查询延时以及提升QPS。
[0065]
步骤46:所述第一代理服务器421将获得的至少两个查询结果按照预设规则进行合并以及排序以生成最终查询结果,将所述最终查询结果发送至所述查询服务器410。
[0066]
步骤47:所述查询服务器410将所述最终查询结果发送至终端设备,以供终端设备输出显示给用户。
[0067]
通过利用多个代理服务器420联结查询服务器410和引擎服务器260的架构,查询服务器410的查询请求可发送至对应的至少一个代理服务器420,由至少一个代理服务器420从相应的至少两个引擎服务器260中获得查询结果。其中,多个代理服务器420可具有相同的功能,多个代理服务器420相互之间可具有并行关系。这样,一个代理服务器420无法工作还可通过其他代理服务器420工作,可有效避免了主设备无法工作时因需要重新选择主设备而导致短时间内搜索服务不可用的问题。并且,由于代理服务器420无需承担索引的更新维护,大大降低了代理服务器420的负担。
[0068]
本发明实施例还提供了一种分布搜索系统,所述分布搜索系统具体可参照图4和图2所示,所述系统可包括配置管理服务器240、查询服务器410、多个代理服务器420和多个引擎服务器260。
[0069]
其中,所述配置管理服务器240可用于管理配置信息和机器信息。所述配置信息可包括拆分规则。所述机器信息可表征所述多个引擎服务器的信息。
[0070]
所述代理服务器420可用于在接收到所述查询服务器410发送的查询请求时获得所述 查询请求对应的属性信息,并基于所述属性信息查询所述配置管理服务器240,以获得所述属性信息对应的机器信息,从而可向所述机器信息对应的至少两个引擎服务器260发送所述查询请求。并且,在获得所述至少两个引擎服务器260返回的第一查询结果后,代理服务器420可将至少两个第一查询结果按照预设规则合并为第二查询结果,并将所述第二查询结果发送至所述查询服务器410。
[0071]
所述查询服务器410可用于在获得终端设备的查询请求时将所述查询请求发送至所述代理服务器420,并在收到所述第二查询结果时将所述第二查询结果发送至所述终端设备。
[0072]
所述多个引擎服务器260中的每个引擎服务器可用于存储满足所述拆分规则的索引数据,并在收到所述查询请求时回复所述第一查询结果。
[0073]
本实施例中,所述系统还可包括主控服务器和索引创建服务器250。其中,所述主控服务器可用于从所述配置管理服务器240获得拆分规则,并发送所述拆分规则至索引创建服务器250。此外,主控服务器还可用于获得所述索引创建服务器250发送的表征拆分结果的索引配置信息,基于所述索引配置信息获取索引数据,并将所述索引数据存储至多个引擎服务器260中对应的至少两个第一引擎服务器中。所述索引创建服务器250可用于基于所述拆分规则将待创建的索引数据进行拆分,并将表征拆分结果的索引配置信息发送至所述主控服务器。
[0074]
作为一种实施方式,所述代理服务器420可获得满足预先配置的截断参数的查询结果。
[0075]
本发明实施例的分布搜索系统,通过多个代理服务器联结主控服务器、配置管理服务器、索引创建服务器、查询服务器和引擎服务器的分布搜索架构,将查询功能以及索引更新维护功能分别通过代理服务器以及主控服务器实现,可大大提升了分布式搜索系统的可扩展性以及系统的稳定性。在实际应用中,通过线上以单个索引统计,前50%时间查询延时减少50%,前90%时间查询延时减少54.5%,前99%时间查询延时减少46%,提高了用户体验。
[0076]
本发明实施例还提供了一种代理服务器。如图5为本发明实施例的代理服务器的组成结构示意图,如图5所示,所述代理服务器可包括通讯单元51和处理单元52。
[0077]
其中,所述通讯单元51可用于接收来自查询服务器的查询请求,并将所述查询请求发送至所述处理单元52。通讯单元51还可用于向所述处理单元52确定的至少两个引擎服务器发送所述查询请求,获得所述至少两个引擎服务器返回的第一查询结果,并将所述处理单元52合并的第二查询结果发送至所述查询服务器。
[0078]
所述处理单元52可用于获得所述查询请求对应的属性信息,并基于获得的属性信息查询配置管理服务器,以获得所述属性信息对应的所述至少两个引擎服务器。所述处理单元52还可将至少两个由所述通讯单元51获得的所述第一查询结果按照预设规则合并得到第二查询结果。
[0079]
作为一种实施方式,所述通讯单元51可获得满足预先配置的截断参数的查询结果。
[0080]
所述代理服务器中的处理单元52可由所述代理服务器中的中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-Programmable Gate Array)实现。所述代理服务器中的通讯单元51可通过通信模组(包含:基础通信套件、操作系统、通信模块、标准化接口和协议等)及收发天线实现。
[0081]
本发明实施例还提供了一种主控服务器。图6为本发明实施例的主控服务器的组成结构示意图,如图6所示,所述主控服务器可包括主控模块61和通知模块62。
[0082]
其中,所述主控模块61可用于从配置管理服务器获得拆分规则,并发送所述拆分规则至所述通知模块62。所述主控模块61还可基于所述通知模块62发送的索引配置信息获取索引数据,并将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。
[0083]
所述通知模块62可用于发送所述拆分规则至索引创建服务器,以使所述索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分。此外,通知模块62还可获得表征拆分结果的索引配置信息,并发送所述索引配置信息至所述主控模块61。
[0084]
本实施例中,所述主控服务器还可包括多个客户端模块63。所述多个客户端模块63可与多个引擎服务器一一对应。其中,所述主控模块61可基于所述通知模块62发送的索引配置信息,指示所述索引配置信息中包括的拆分结果对应的客户端模块63获取索引数据。在实际应用中,所述主控模块61可包括:第一通信子模块,用以与所述配置管理服务器通信,以从所述配置管理服务器获得所述拆分规则;第二通信子模块,用以与所述通知模块62通信,以向所述通知模块62发送所述拆分规则并从所述通知模块62获取所述索引配置信息;以及第三通信子模块,用以与客户端模块63通信,以指示所述客户端模块63基于所述索引配置信息获取所述索引数据。
[0085]
所述通知模块62可用于发送所述拆分规则至索引创建服务器,并在获得表征拆分结果的索引配置信息后发送所述索引配置信息至所述主控模块61。在实际应用中,所述通知模块62可包括:第一通信模块,用以与所述主控模块61通信,以从所述主控模块61获得所述 拆分规则并向所述主控模块61发送所述索引配置信息;以及,第二通信模块,用以与所述索引创建服务器通信,以向所述索引创建服务器发送所述拆分规则并从所述索引创建服务器获得所述索引配置信息。
[0086]
所述客户端模块63可基于所述主控模块61的指示获取索引数据,并将所述索引数据存储至对应的引擎服务器中。在实际应用中,所述客户端模块63可包括:第一通信子模块,用以与所述主控模块61,以接受所述主控模块61的指示;处理模块,用于响应于所述主控模块61的指示基于所述索引配置信息获取索引数据;以及,第二通信子模块,用以与所述引擎服务器通信,以将所述索引数据存储至对应的引擎服务器中。
[0087]
本实施例中,所述主控服务器可以是服务器集群。所述主控模块61主要负责统一调度。所述通知模块62主要负责与索引创建服务器通信。所述通知模块62的数量可以是至少一个。至少一个通知模块62可基于业务类型的不同进行区分,例如每个通知模块62用于通知属于相应业务类型的索引创建的相关信息。所述客户端模块63的数量可与引擎服务器的数量相同,且每个客户端模块63对应一个引擎服务器。所述客户端模块63可用于根据主控模块61的指示拉取索引数据,并将拉取的索引数据存储至对应的引擎服务器中。所述主控模块61、每个通知模块62可通过独立的服务器实现。所述客户端模块63可位于对应的引擎服务器中,并通过对应的引擎服务器实现相应功能。在实际应用中,所述主控模块61可配置备用主控模块;每个通知模块62也可配置对应的备用通知模块。每个客户端模块63也可配置对应的备用客户端模块63。这样,主模块出现异常无法工作时,可通过相应的备用模块继续执行相应的功能。
[0088]
本发明实施例还提供了一种计算机设备,图7为本发明实施例的计算机设备的组成结构示意图,如图7所示。所述计算机设备可包括处理器71、存储器72以及至少一个外部通信接口73。所述处理器71、存储器72以及外部通信接口73均可通过总线74连接。所述存储器72中存储有可在处理器71上运行的计算机程序。
[0089]
其中,在所述计算机设备作为代理服务器时,所述处理器71执行所述程序时实现以下步骤:接收来自查询服务器的查询请求;获得所述查询请求对应的属性信息;基于所述属性信息查询配置管理服务器,获得所述属性信息对应的机器信息;向所述机器信息对应的至少两个引擎服务器发送所述查询请求;获得所述至少两个引擎服务器根据所述查询请求返回的第一查询结果;将至少两个所述第一查询结果按照预设规则合并为第二查询结果;以及,将所述第二查询结果发送至所述查询服务器。换言之,处理器71可通过执行程序实现图5所示代理服务器中的通讯单元51和处理单元52的具体功能。
[0090]
作为一种实施方式,所述处理器71执行所述程序时实现以下步骤:获得满足预先配置的截断参数的查询结果。
[0091]
在计算机设备作为主控服务器时,所述处理器71执行所述程序时实现以下步骤:从配置管理服务器获得拆分规则;发送所述拆分规则至索引创建服务器,以使索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分;获得表征拆分结果的索引配置信息;基于所述索引配置信息获取索引数据;以及,将所述索引数据存储至多个引擎服务器中相对应的至少两个第一引擎服务器中。换言之,处理器71可通过执行程序实现图6所示主控服务器中的主控模块61、通知模块62和客户端模块63的具体功能。
[0092]
这里需要指出的是:以上涉及计算机设备的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明计算机设备实施例中未披露的技术细节,请参照本发明方法实施例的描述。
[0093]
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0094]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。例如前面所述的各种服务器,可以是物理上的一台硬件机器,也可以是运行于服务器集群中的一个软件模块。
[0095]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0096]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟 或者光盘等各种可以存储程序代码的介质。
[0097]
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0098]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

权利要求书

[权利要求 1]
一种分布式搜索方法,包括: 多个代理服务器中的至少一个第一代理服务器在接收到来自查询服务器的查询请求时,获得所述查询请求对应的属性信息; 所述第一代理服务器基于所述属性信息查询配置管理服务器,以获得所述属性信息对应的机器信息; 所述第一代理服务器向所述机器信息对应的至少两个引擎服务器发送所述查询请求; 所述第一代理服务器获得所述至少两个引擎服务器根据所述查询请求而返回的第一查询结果; 所述第一代理服务器将至少两个所述第一查询结果按照预设规则合并为第二查询结果;以及 所述第一代理服务器将所述第二查询结果发送至所述查询服务器。
[权利要求 2]
根据权利要求1所述的方法,其特征在于,获得所述至少两个引擎服务器根据所述查询请求而返回的所述第一查询结果,包括: 所述第一代理服务器获得满足预先配置的截断参数的所述第一查询结果。
[权利要求 3]
根据权利要求1所述的方法,其特征在于,还包括: 从所述多个代理服务器中选择至少一个业务类型与所述查询请求匹配的代理服务器作为所述第一代理服务器。
[权利要求 4]
根据权利要求1所述的方法,其特征在于,还包括: 按预设规则从所述代理服务器中选择至少之一作为所述第一代理服务器, 其中,所述预设规则包括随机规则和轮询规则。
[权利要求 5]
一种索引更新方法,包括: 主控服务器从配置管理服务器获得拆分规则; 所述主控服务器发送所述拆分规则至索引创建服务器,以使所述索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分; 所述主控服务器获得表征所述拆分的结果的索引配置信息; 所述主控服务器基于所述索引配置信息获取索引数据; 所述主控服务器将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。
[权利要求 6]
一种代理服务器,包括: 通讯单元,用于接收来自查询服务器的查询请求; 处理单元,用于获得所述查询请求对应的属性信息,基于所述属性信息查询配置管理服务器以获得所述属性信息对应的机器信息,并确定所述机器信息对应的至少两个引擎服务器, 其中,所述通讯单元还用于向所述至少两个引擎服务器发送所述查询请求,以获得所述至少两个引擎服务器根据所述查询请求而返回的第一查询结果; 所述处理单元还用于将至少两个所述第一查询结果按照预设规则进行合并,得到第二查询结果;以及 所述通讯单元还用于将所述第二查询结果发送至所述查询服务器。
[权利要求 7]
一种主控服务器,包括: 主控模块,用于从配置管理服务器获得拆分规则; 通知模块,用于发送所述拆分规则至索引创建服务器,以使所述索引创建服务器根据所述拆分规则将待创建的索引数据进行拆分,并获得表征所述拆分的结果的索引配置信息, 其中,所述主控模块还用于基于所述索引配置信息获取索引数据,并将所述索引数据存储至多个引擎服务器中对应的至少两个引擎服务器中。
[权利要求 8]
根据权利要求7所述的主控服务器,其特征在于,所述主控服务器还包括多个客户端模块;所述多个客户端模块与多个引擎服务器一一对应;其中, 所述主控模块基于所述索引配置信息指示第一客户端模块获取第一索引数据,其中,所述第一客户端模块为所述多个客户端模块中与所述索引配置信息包括的第一拆分结果对应的客户端模块; 所述第一客户端模块基于所述主控模块的指示获取索引数据,并将所述索引数据存储至对应的引擎服务器中。
[权利要求 9]
一种分布式搜索系统,包括: 配置管理服务器,用于管理配置信息和机器信息,所述配置信息包括拆分规则,所述机器信息表征所述多个引擎服务器的信息; 查询服务器,用于获得终端设备的查询请求; 多个代理服务器;以及 多个引擎服务器,所述多个引擎服务器中的每个引擎服务器用于存储满足所述拆分规则的索引数据, 其中,所述多个代理服务器中的至少一个第一代理服务器接收到来自所述查询服务器的所述查询请求后,通过基于所述查询请求的属性信息查询所述配置管理服务器,确定所述多个引擎服务器中的至少两个第一引擎服务器,并向所述至少两个第一引擎服务器发送所述查询请求; 所述至少两个第一引擎服务器各自响应于收到所述查询请求回复第一查询结果; 所述至少一个第一代理服务器将至少两个所述第一查询结果合并为第二查询结果,并发送至所述查询服务器,以由所述查询服务器将所述第二查询结果返回至所述终端设备。
[权利要求 10]
根据权利要求9所述的系统,其特征在于,所述系统还包括: 主控服务器,用于从所述配置管理服务器获得所述拆分规则; 索引创建服务器,用于基于所述主控服务器发送的所述拆分规则将待创建的索引数据进行拆分,并将表征所述拆分的结果的索引配置信息发送至所述主控服务器, 其中,所述主控服务器基于所述索引配置信息获取索引数据,并将所述索引数据存储至所述多个引擎服务器中对应的至少两个引擎服务器中。
[权利要求 11]
根据权利要求9所述的系统,其特征在于,所述第一引擎服务器基于预先配置的截断参数向所述第一代理服务器回复所述第一查询结果。
[权利要求 12]
根据权利要求9所述的系统,其特征在于,所述查询服务器向所述多个代理服务器中业务类型与所述查询请求的业务类型匹配的所述第一代理服务器发送所述查询请求。
[权利要求 13]
根据权利要求9所述的系统,其特征在于,所述查询服务器按照预设的规则从所述代理服务器中选择至少之一作为所述第一代理服务器,并向所述第一代理服务器发送所述查询请求。
[权利要求 14]
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至4任一项所述分布式搜索的步骤。
[权利要求 15]
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求5所述索引更新方法的步骤。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]  
[ 图 5]  
[ 图 6]  
[ 图 7]