掌桥专利:专业的专利平台
掌桥专利
首页

用于对搜索系统进行优化的方法和装置

文献发布时间:2023-06-19 10:16:30


用于对搜索系统进行优化的方法和装置

技术领域

本公开涉及数据处理技术领域,尤其涉及数据搜索技术领域,并且更具地,涉及用于对搜索系统进行优化的方法、装置、电子设备、计算机可读存储介质和计算机程序产品。

背景技术

在网络信息时代,搜索系统每时每刻都需要处理海量的用户查询。为了提高响应速度、并减少计算开销,搜索系统中的缓存(cache,在本文中有时也被称为缓存单元)对于搜索系统的整体资源消耗来说很重要。当搜索系统再次处理相同的查询时,就能够直接从缓存中找到相应的查询结果,以用于响应用户查询,从而减少搜索系统的处理压力,并且提高响应时间。缓存命中率的改变会相应地导致搜索系统整体资源消耗的改变,例如,当缓存命中率下降时,搜索系统的计算开销将增大。而影响缓存命中率的因素可能是多种多样的,因此,存在对高效确定影响搜索系统的缓存的因素,进而优化搜索系统的需要。

发明内容

本公开提供了一种用于对搜索系统进行优化的方法、装置、设备、存储介质以及计算机程序。

根据本公开的第一方面,提供了一种用于对搜索系统进行优化的方法,该方法包括:确定搜索系统的缓存单元针对多个用户查询的第一命中率,其中每个用户查询与多个要素相关联;在多个要素中的第一要素集合中,针对第一要素集合中每一要素,通过以下方式来确定至少一个关键要素:生成与多个用户查询相对应的多个第一查询,所述多个第一查询均至少与所述要素相关联;确定缓存单元针对多个第一查询的第二命中率;以及如果第二命中率与第一命中率之间的差异小于差异阈值,将要素确定为至少一个关键要素之一;以及基于至少一个关键要素,优化搜索系统。

根据本公开的第二方面,提供了一种用于对搜索系统进行优化的装置,该装置包括第一命中率确定模块,被配置为确定所述搜索系统的缓存单元针对多个用户查询的第一命中率,其中每个用户查询与多个要素相关联。该装置还包括关键要素确定模块,被配置为在所述多个要素中的第一要素集合中,针对所述第一要素集合中每一要素,通过以下方式来确定至少一个关键要素:生成与所述多个用户查询相对应的多个第一查询,所述多个第一查询均至少与所述要素相关联;确定所述缓存单元针对所述多个第一查询的第二命中率;以及如果所述第二命中率与所述第一命中率之间的差异小于差异阈值,将所述要素确定为所述至少一个关键要素。该装置还包括优化模块,被配置为基于所述至少一个关键要素,优化所述搜索系统。

根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,该存储器存储有可被至少一个处理器执行的指令,该指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开的第一方面所述的方法。

根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开的第一方面所述的方法。

根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时,实现根据本公开的第一方面所述的方法。

本公开能够高效地确定影响搜索系统的关键要素,并据此优化搜索系统的性能。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1是示出了本公开的多个实施例能够在其中实现的示例环境的示意图;

图2是根据本公开实施例的用于对搜索系统进行优化的方法的流程图;

图3是根据本公开实施例的用于确定至少一个关键要素的方法的流程图;

图4是根据本公开实施例的命中率曲线的示意图;

图5是根据本公开实施例的用于确定能够在缓存单元中命中的用户查询数目的方法的流程图;

图6是根据本公开实施例的用于确定能够在缓存单元中命中的第一查询数目的方法的流程图;

图7是根据本公开实施例的命中率曲线的示意图;

图8是根据本公开实施例用于对搜索系统进行优化的装置的框图;

图9示出了能够实施本公开的多个实施例的电子设备的框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

如上所讨论的,在缓存命中率改变的情况下,特别是缓存命中下降的情况下,期望能够确定出影响缓存命中率的关键要素。在一些方案中,可以观察搜索系统的所接收的用户查询的数目、网络健康状态、缓存单元中的数据存在时间等指标,并确定这些指标是否与缓存命中率变化趋势一致,并结合经验来人工判断影响缓存命中率的关键要素。在另一些方案中,还可以对影响缓存命中率的原因进行分类,例如,因网络等原因导致的数据本身存在于缓存,但对其访问失败;存储实例因迁移而导致的数据丢失;因外部的主动删除操作导致的数据不存在;数据已经过了失效周期或者数据本身就不存在等等。然而,上述方案通常需要有经验的人员来进行判断,因此通常需要在一定时间之后才能对搜索系统进行优化。而且,上述方案无法从与用户查询相关联的多个要素的层面来确定关键要素,因此导致甚至无法确定出缓存命中率改变的原因。

为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种通过确定影响缓存单元的关键要素,进而优化搜索系统的技术方案。在该方案中,通过对与用户查询相关联的多个要素进行拆分,确定缓存单元针对与单要素相关的第一查询的命中率,以与该缓存单元针对真实的、多要素的用户查询的命中率相比较,由此能够在例如缓存命中率显著变化的情况下确定出对命中率影响大的一个或多个关键要素。

以此方式,能够从构成用户查询的要素层次对命中率变化进行分析,从而高效且准确地确定出其中对缓存命中率影响较大的一个或多个关键要素,继而可以基于所确定的关键要素,对搜索系统进行优化,从而在诸如缓存的命中率、搜索系统的命中率、搜索系统的响应时间、搜索系统的计算开销等诸多方面来改进搜索系统的性能。

图1是示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。

示例环境总体上包括搜索系统115和计算设备115。在本公开的实施例的描述中,术语“搜索系统”是指用于响应用户查询102来返回查询结果108的系统。搜索系统115通常包括缓存单元116(其有时也被称为缓存、或缓存系统)。搜索系统115还可以包括应用114、以及用于永久存储数据的存储单元(未示出)。

在缓存单元116中,可以存储有多个历史用户查询以及其对应的历史查询结果,以用于快速地响应来自用户的实时查询。这些历史查询结果是搜索系统115通过一系列过程而在永久存储数据的存储单元(未示出)检索到的对应的查询结果。在一些实施例中,该一系列过程可以例如包括:(例如,经由应用114)接收(历史)用户查询请求;对用户查询所包括的文本进行分词以确定至少一个查询词;计算每一查询词的权重;基于权重和至少一个查询词,生成查询向量;将存储单元的对应查询词的倒排列表送入存储器;通过对应查询词的倒排列表的交集,确定查询结果的集合;对每个查询结果进行排序,以确定相关度高的查询结果以用于输出(例如,经由应用114)。

将理解的是,上述一系列过程的耗时较长,并且将占用大量的计算资源。因此,搜索系统通常先在缓存单元中检索由应用114处理过(例如,通过签名算法)的用户查询是否存在对应的查询结果。缓存单元116中通常存储有用户查询频次较高的查询文本、以及其对应的通过上述一系列过程所确定的查询结果。当相同或其他用户再次发送包括同样的查询文本的用户查询时,搜索系统可以直接利用缓存单元116中所对应的查询结果来响应用户查询,仅在无法在缓存单元116中匹配到查询结果的情况下执行上述一系列过程,而省去针对一部分用户查询的诸如分词、计算权重、关键词匹配等一系列过程。因此,具有合适缓存(例如,缓存命中率较高)的搜索系统能够及时响应用户查询以提升用户体验、并且同时节省大量计算资源。将理解的,每个用户查询可以与该用户查询发生的时刻相关联。

在一些实施例中,考虑到用户查询具有一定的时效性度,搜索系统115例如可以通过用户行为分析,来对缓存单元116中所缓存的用户查询、以及相关联的查询结果设置一数据失效周期。超出数据失效周期的数据将不会由缓存系统116返回给应用114。在一些实施例中,可以定期对超出数据失效周期的数据进行清理或淘汰,以保持缓存单元的存储空间的高利用率以及高响应速度。

在一些实施例中,在缓存单元116(和/或离线缓存单元126)中,用户查询与相关联的查询结果可以按照键值对(key-value)的方式存储,其中用户查询将对应于键(key),而查询结果将对应于值(value)。在一些实施例中,键值对可以与该键值对写入时刻相关联,以用于后续数据失效周期的判断。在一些其他实施例中,用户查询与相关联的查询结果可以按照其他方式而关联地存储。

在一些实施例中,如果缓存单元116中存在与用户查询102相应的键值对,并且用户查询102所对应的时刻与该键值对相关联的写入时刻之间的周期小于数据失效周期,则缓存单元116向应用114返回该键值对中的值,该值例如可以包括针对该用户查询的查询结果108,其可以包括但不限于文件、图片、网页链接等。如果缓存单元116中不存在与用户查询102相应的键值对,或者用户查询102所对应的时刻与该键值对相关联的写入时刻之间的周期大于数据失效周期,则缓存单元不能向应用114返回对应的查询结果,换言之,可以返回为空的查询结果。此时,搜索系统可以进一步执行上述一系列过程来在存储单元中确定查询结果,并在预定义的时刻将利用用户查询-查询结果的键值对,更新缓存单元116(例如将该键值对存储到、或插入到缓存单元116中)。预定义的时刻例如可以是实时,每隔预定周期,或在用户查询较少的时段(例如,凌晨)。

应用114可以作为与用户的接口而被配置为接收用户查询102,并且返回对应的查询结果108。在一些实施例中,应用可以针对与用户查询102相关联的多个要素,生成针对这些要素的键(key)。这可以例如通过各种签名算法来实现,签名算法的示例包括但不限于MD5算法、RSA算法、DSS算法、SHA算法。

在本公开的实施例的描述中,术语“要素”指代用于在缓存和/或存储单元中匹配对应结果的查询元素。要素的示例包括但不限于:用户查询所来自的终端的类型、用户查询所来自的终端所处的位置信息、用户查询所包括的关键短语、用户查询的时间、用户查询包括的过滤条件、用户查询所对应的的查询结果页数、每个查询结果页所包含的查询结果条目数、与用户查询相关联的(多个)流量标记、指示用户查询是否属于压力测试的标志等。在一些实施例中,每个用户查询可以与相同数目个要素相关联。在一些情况下,用户查询可能不包括一些要素,例如在来自用户的用户查询并没有设置过滤条件的情况下,对应的要素可以取值为0,以使用户查询具有相同数目的要素以用于生成具有相同位数的键。

应用114除了可以向用户返回查询结果108之外,还可以将该查询结果108是否是在缓存单元116中查找到的信息发送给计算设备105,例如,针对给定查询,如果在缓存单元116中查找到相应查询结果,则可以称为命中,应用114可以例如发送第一信号(例如,1)给计算设备105。如果在缓存单元116中没有查找到相应查询结果,则可以称为未命中,应用114可以例如发送第一信号(例如,0)给计算设备105。

计算设备105可以利用第一信号和第二信号,来确定缓存单元的命中率(在本文中有时也被称为缓存命中率或第一命中率)。在本公开的实施例的描述中,除非明确相反指出,否则术语“命中率”指代(例如,在线的或者离线的)“缓存单元”针对多个查询(例如,用户查询或如下所讨论的第一查询)的命中率。

计算设备105可以包括关键要素确定模块104、优化模块106、(可选地)模拟模块124以及(可选地)离线缓存单元126。模拟模块124与应用114的功能具有对应性,并且离线缓存单元126与缓存单元116所存储的数据具有对应性(例如,相同或相似)。使用离线的离线缓存单元以及模拟模块可以在不影响用户体验的情况下确定出关键要素。

由于多个用户查询中(例如,x个用户查询,用户查询1至用户查询x,x为大于1正整数)的每个用户查询与多个查询要素(例如,n个要素,要素1至要素n,n为大于1正整数)相关联,因此计算设备105可以例如利用模拟模块124,针对该n个查询要素中每个要素,构建x个第一查询,该x个第一查询均至少与该要素相关联。然后,通过签名算法来确定其对应的键(例如,key1至keyx)。例如,针对要素1,可以生成与要素1相关的第一查询1至第一查询x,该x个第一查询均与要素1相关联。针对要素2,可以生成与要素2相关的第一查询1至第一查询x,该x个第一查询与要素2、以及可选地要素1相关联。以此类推,针对要素i(i为大于1正整数且小于或等于n),可以生成与要素i相关的第一查询1至第一查询x,该x个第一查询均与要素i、以及可选地要素1至要素i-1相关联。

计算设备105可以确定上述x个第一查询是否能在离线缓存单元126中找到对应的查询结果。例如,计算设备可以经由模拟模块124,将x个第一查询所对应的x个键(例如,key1至keyx)发送至离线缓存单元126,并接收离线缓存单元返回的结果(例如,x个值,value1至valuex),并据此确定第二命中率。可以理解的是,当离线缓存单元126中没有存在对应的键时,所返回的值可以为0。

类似地,针对给定第一查询,如果在离线缓存单元126中查找到相应查询结果,则可以称为命中(其可以利用例如1的第一信号来标识)。如果在离线缓存单元126中没有查找到相应查询结果,则可以称为未命中(其可以利用例如0的第二信号来标识)。

离线缓存单元126中的(多个)键值对可以缓存单元116中的(多个)键值对相同,以模拟真实的缓存单元。为了进一步减少离线缓存单元所占用的存储空间同时不影响对真实缓存单元的模拟,离线缓存单元126中的(多个)键值对中的键可以与缓存单元116中的(多个)键值对中的键相同,而离线缓存单元126中的(多个)键值对中的值则可以置为一个简单的占位符(例如,1),以指示缓存单元中是否存在与第一查询相对应的结果。

在一些实施例中,可以由应用114将用户查询(例如,异步地)转发给模拟模块124进行处理。在另一些实施例中,模拟模块124也可以配置有接收用户查询102的接口。

在一些实施例中,如果搜索系统115具有足够的资源来处查询请求(例如,资源利用率低于预定值和/或响应时间低于预定值,使得实现模拟模块124和离线缓存单元126的功能不会影响用户体验),则模拟模块124和离线缓存单元126的功能也可以由计算设备对应地配置应用114和缓存单元116以具有上述相同的功能来实现。在该一些实施例中,模拟模块124和离线缓存单元126也可以被省略。

所有指示用户查询和第一查询是否命中的信号可以由计算设备105根据本公开所描述的方案(例如在关键要素确定模块104处)进行处理,以确定出一个或多个关键要素,该一个或多个关键要素对缓存单元命中率的影响较大。

基于所确定的关键要素,计算设备105可以例如通过优化模块106来对搜索系统进行优化,以例如稳定甚至提升缓存单元的命中率,继而减少搜索系统的计算开销,改进对用户查询的响应速度。优化操作包括但不限于根据所确定的关键要素,对应地更新缓存单元中存储的键值对、调整缓存单元的(例如,部分或者全部)数据失效周期、调整与用户查询相关联的要素的种类和数目(例如,当存在新的用户查询来源、或者新的过滤条件时)、调整缓存单元中的数据淘汰策略、以及调整不同层级的缓存中所存储的数据等等。

可以理解的是,示例环境100中的搜索系统115和计算设备可以实时地处理用户查询,并确定影响命中率的关键要素。

为了便于清楚说明,以下将参考图1的环境100来描述本公开的实施例。应当理解,本公开的实施例还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。为了便于理解,在下文描述中提及的具体数据均是示例性的,并不用于限定本公开的保护范围。

图2是根据本公开实施例的用于对搜索系统进行优化的方法200的流程图。例如,方法200可以由图1中所示出的计算设备来执行。

在202,计算设备105可以确定搜索系统115的缓存单元针对多个用户查询的第一命中率。

具体地,如上面所讨论的,由于多个用户查询例如,x个用户查询,用户查询1至用户查询x,x为大于1正整数)每个用户查询可以与多个要素(例如,n个要素,要素1至要素n,n为大于1正整数)相关联,因此,第一命中率可能受该多个要素的影响。在一些实施例中,多个要素可以包括以下至少一项:用户查询所来自的终端的类型、用户查询所来自的终端所处的位置信息、用户查询所包括的关键短语、用户查询包括的过滤条件、用户查询所对应的的查询结果页数、每个查询结果页所包含的查询结果条目数、与用户查询相关联的(多个)流量标记、指示用户查询是否属于压力测试的标志。将理解的是,每个用户查询可以与该用户查询发生的时刻相关联。

第一命中率可以被定义为在预定时间段内(例如,1分钟、10秒、10分钟,或其他任意合适的时间段),多个用户查询中能够在缓存单元中检索到对应查询结果的查询的第一数目与多个用户查询的总数目的第二比值。确定第一数目的方式将在下文参考图5来详细讨论。

将理解的是,第一命中率受到各个要素的影响程度将不同,并且在多个预定时间段内,影响第一命中率的至少一个关键要素可能也会发生变化。因此,可以在多个要素中的第一要素集合中,针对第一要素集合中每一要素,通过下面描述的方式(例如,204-208)来确定至少一个关键要素。在一些实施例中,第一要素集合可以包括所有的多个要素,换言之,多个要素的全集。

在204,计算设备105可以生成与多个用户查询相对应的多个第一查询。

第一查询可以至少与上述每一要素相关联,因此,例如对于要素1,可以构建x个第一查询(例如,第一查询1至第一查询x,其与要素1相关联),该x个第一查询仅与要素1相关联。在一些实施例中,第一查询也可以与第一要素集合中的多于一个要素相关联。例如,针对要素i,上述多个第一查询中的每一者与要素i、以及要素1至要素i-1相关联。可以理解的是,上面所列举的与每一要素相关的x个第一查询仅为示例,其中所包括要素的数目与要素的序号成递增的关系。在一些其他示例中,这些第一查询也可以按照递减的方式来生成,例如,对于要素i,可以生成仅与要素i相关联的x个第一查询,针对要素i-1,则可以生成与要素i和要素i-1二者相关联的x个第一查询。以其他任何能够将不同要素单独区分开来的方式而生成x个第一查询均包括在本申请的范围内。在206,计算设备105可以确定缓存单元针对多个第一查询的第二命中率。

第二命中率为在预定时间段内,多个第一查询中能够在离线缓存单元中检索到对应查询结果的第一查询的第二数目与多个第一查询的总数目的第二比值。确定第二数目的方式将在下文参考图6来详细讨论。

如上所讨论的,在一些实施例中,如果搜索系统115具有足够的资源来处查询请求,例如,搜索系统115的资源利用率低于预定值和/或响应时间低于预定值,使得实现模拟模块124和离线缓存单元126的功能不会影响用户体验,则步骤204和206可以由计算设备105指令搜索系统115中的应用114和缓存单元116,并从搜索系统115获取相应的多个信号来进行分析来完成。

在另一些实施例中,步骤204和206可以完全在例如配置有对应的模拟模块124和离线缓存单元126的计算设备105处实现。因此,与缓存单元相对应的离线缓存单元126可以被预先构建,并且计算设备105可以将多个第一查询发送给离线缓存单元,并且将离线缓存单元针对多个第一查询的命中率确定为第二命中率。

在一些实施例中,计算设备105可以与搜索系统115处理多个用户查询异步地生成多个第一查询。例如,搜索系统115可以先处理用户查询以返回查询结果,然后在将用户查询送入模拟模块,以异步地生成第一查询,每个第一查询对应一个要素。然后模拟模块可以对第一查询例如通过签名算法来确定其对应的键,并据此确定离线缓存单元中是否存在对应的键值对,并返回值。将理解的是,当不存在对应的键值对时,返回的值可以为空(例如,0或null)。

在208,计算设备可以确定第二命中率与第一命中率之间的差异是否小于差异阈值。如果第二命中率与第一命中率之间的差异小于差异阈值,在210,则计算设备105将该要素确定为至少一个关键要素之一。反之,如果第二命中率与第一命中率之间的差异不小于差异阈值,则计算设备105将不将该要素确定为至少一个关键要素之一。

在一些实施例中,差异阈值可以被选取为固定值,以使得差异较小的所有关键要素被确定为关键要素。在一些实施例中,在不同时段处,也可以根据(例如,第一时段)所确定出至少一个关键要素的数目调整(例如,将在晚于第一时段的第二时段处所使用的)差异阈值。

在一些实施例中,上述差异可以例如通过确定命中率(例如,曲线)之间相似度来确定,这将在下文参考图3、图4以及图7来具体描述。将理解的是,步骤204至步骤208可以在多个要素(例如,n个要素,要素1至要素n,n为大于1正整数)中所有要素上执行。该执行过程可以是同步的或异步的,本公开在此方面不受限制。

在一些实施例中,要对其进行第二命中率确定的第一要素集合也可以仅包括多个要素中的一些要素,以将在例如一些时间段内,较为稳定的要素(例如,查询所来自的终端的类型)排除在外,以提高计算设备105的处理效率。在该一些实施例中,第一要素集合可以参考历史的第一命中率与第二命中率之间的差异来筛选。

在212,计算设备105可以基于至少一个关键要素,优化搜索系统115。

基于所确定的至少一个关键要素,计算设备105可以例如通过优化模块106来对搜索系统115进行优化,以例如稳定甚至提升缓存单元的命中率,继而减少搜索系统115的计算开销,改进对用户查询的响应速度。优化包括但不限于根据所确定的关键要素,对应地更新缓存单元中存储的键值对、调整缓存单元的(例如,部分或者全部)数据失效周期、调整与用户查询相关联的要素的种类和数目(例如,当存在新的用户查询来源、或者新的过滤条件时)、调整缓存单元中的数据淘汰策略、以及调整不同层级的缓存中所存储的数据等等。

在一些实施例中,在所确定出的至少一个关键要素的数目较多的情况下,计算设备105还可以从其中进行筛选,以确定预定数目个(例如,1-5个中的任意数目)关键要素,以用于搜索系统的优化。在这种情况下,计算设备可以对第二命中率与第一命中率之间的差异(例如,通过将在下文描述的相似度)进行排序,并确定出差异最小(例如,相似度最高)的预定数目个关键要素,以用于搜索系统的优化。

以此方式,能够从构成用户查询的要素层次对命中率变化进行分析,从而高效且准确地确定出在例如缓存命中率显著变化的情况下,对缓存命中率影响较大的一个或多个关键要素,继而可以基于所确定的关键要素,对搜索系统进行优化,从而在诸如缓存的命中率、搜索系统的命中率、搜索系统的响应时间、搜索系统的计算开销等诸多方面来改进搜索系统的性能。

图3是根据本公开实施例的用于确定至少一个关键要素的方法300的流程图。具体地,方法300可以是图2中208的具体过程。方法300描述了针对多个要素中的一个要素的过程,可以理解,该过程可以在多个要素中的所有要素上执行

在302,计算设备105可以确定第一命中率与第二命中率之间的相似度。

相似度的确定可以基于多种方式来进行、例如,通过采用余旋夹角、欧式距离、皮尔森相关系数等方式来计算。

在一些实施例中,计算设备105可以通过绘制能够指示多个时段的n个要素的每个要素的命中率曲线,并以此为基础来进行相似度的评估。

具体地,在搜索系统115中,与用户查询中多个要素中的一些要素比较稳定,在时间序列上的分布变化不大,那么这些要素对缓存命中率影响不大。而有些要素,比如用户的查询文本(例如,与突发的新闻事件相关的查询文本),其对缓存命中率的影响不容忽视。在不同时段,这些关键要素可能是不同的。因此,可以通过分时段绘制命中率曲线的方式,来确定不同时段中,多个要素中的至少一个关键要素,并进而基于该关键要素调整搜索系统和/或缓存单元。

现在参考图4来具体说明,图4是根据本公开实施例的命中率曲线的示意图400。计算设备105可以绘制针对第一命中率的第一曲线402、以及针对第二命中率的(多个)第二曲线404、406。作为示例,图4中仅示出了针对真实用户查询的缓存命中率曲线402,以及模拟命中率曲线404和406,模拟命中率曲线406例如可以指示至少与要素1相关联的第一查询的第二命中率,模拟命中率曲线404例如可以至少与要素1和要素2相关联的第一查询的第二命中率。可以理解的是,计算设备105还可以绘制其他曲线(未示出),以用于确定关键要素。

例如,计算设备105可以确定在t1至t2时段内的用户查询总数,并且确定在t1至t2时段内这些用户查询在缓存系统中能够找到对应查询结果的第一数目(确定第一数目的方式将在下文参考图5来详细讨论),并确定第一数目与用户查询总数的比值,以确定命中率402-1。以类似的方式,计算设备105还可以确定在t2至t3时段内的命中率402-2、t3至t4时段内的命中率402-3、t4至t5时段内的命中率402-4、t5至t6时段内的命中率402-5,以此类推。基于这些命中率点,计算设备105可以绘制出第一命中率的第一曲线402。

针对与每个查询要素(例如,要素1)相关联的第一查询,计算设备105还可以确定在t1至t2时段内的第一查询总数,并且确定在t1至t2时段内这些第一查询在缓存系统中能够找到对应查询结果的第二数目(确定第二数目的方式将在下文参考图6来详细讨论),并确定第二数目与第一查询总数的比值,以确定命中率404-1。以类似的方式,计算设备105还可以确定在t2至t3时段内的命中率404-2、t3至t4时段内的命中率404-3、t4至t5时段内的命中率404-4、t5至t6时段内的命中率404-5,以此类推。基于这些命中率点,计算设备105可以绘制出针对要素1的第二命中率的第二曲线404。

然后,计算设备105可以基于第一曲线402与第二曲线(例如,404、406)的接近程度,确定相似度。这可以例如通过计算曲线的接近程度得分来实现。在一些实施例中,计算设备105可以按预定数目个时段对进行打分,以确定与该时段中的关键要素。

返回图3,在304,计算设备105可以确定相似度是否高于相似度阈值。

如果相似度高于相似度阈值,在306,计算设备105可以将该至少一个要素确定为至少一个关键要素之一。如果相似度不高于相似度阈值,则计算设备105可以不将该至少一个要素确定为至少一个关键要素之一。

具体地,相似度阈值可以被选取为固定值,以使得相似度较高的所有关键要素被确定为关键要素。在一些实施例中,在不同时段处,也可以根据(例如,第一时段)所确定出至少一个关键要素的数目来调整(例如,将在晚于第一时段的第二时段处所使用的)相似度阈值。

在一些实施例中,计算设备可以同时绘制出如图7所示的第一曲线、以及多条第二曲线。图7是根据本公开实施例的命中率曲线的另一示意图700。在图7中,曲线702(即,第一曲线)指示第一命中率,多条曲线(即,第二曲线)704、706和708分别指示缓存单元针对仅与要素1(例如,用户查询所包括的关键短语)相关联的第一查询的缓存命中率704、针对与要素1和要素2(例如,每页结果数目和/或页数)相关联的第一查询的缓存命中率706、针对与要素1、要素2和要素3(例如,与压力测试相关的要素)相关联的第一查询的缓存命中率708。可以理解的是,示意图700还可以包括能够将要素单独区分开的更多第二曲线。从该图可以直观的看出,在缓存命中率显著变化的时段处(在66000s附近),第一命中率的曲线702与曲线708的变化趋势最为相似,而与曲线704和706则不太相似,因此,计算设备可以确定要素3为关键要素。

在一些实施例中,计算设备还可以通过对上述第一曲线以及多个第二曲线进行求导,并比较在不同时刻(或时段)处的第一导数值以及多个第二导数值。计算设备可以确定多个第二导数值中与第一导数值差异较小的至少一个第二导数值,并据此确定相应的至少一个第二曲线(并且,因此,至少一个关键要素)。

以此方式,通过例如命中率曲线来确定命中率的相似度,能够简单且直观地从构成用户查询的要素层次对命中率变化进行分析,从而高效且准确地确定出其中对缓存命中率影响较大的一个或多个关键要素。

图5是根据本公开实施例的用于确定能够在缓存单元中命中的用户查询数目的方法500的流程图。

如上所讨论的,在一些实施例中,缓存单元116(或离线缓存单元126)可以包括(例如,存储)多个第一键值对(或多个第二键值对)。在一些实施例中,第一键值对中的值为查询结果。因此,针对多个用户查询中的每一用户查询,可以通过执行以下步骤来确定能够在缓存单元中命中的用户查询的第一数目。

在502,计算设备105可以利用签名算法根据每一用户查询中所包括的多个要素,生成针对每一用户查询的第一键。

具体地,由于用户查询与多个要素相关联,因此,可以将多个要素(例如,按照预定顺序)拼接在一起,并对拼接好的多个要素应用签名算法,以确定键(key)。例如,当签名算法是MD5算法时,则可以算出MD5类型的第一键。

在504,计算设备105可以基于第一键在多个第一键值对中进行检索,以确定第一查询结果。

例如,计算设备105可以从缓存单元中的多个第一键值对中,获取键与第一键相同或相应的一个键值对,并且将该值返回。如果查找不到与第二键相同或相应的一个键值对,则返回为空的值。

计算设备105可以通过对不为空的第一查询结果进行计数来确定第一数目。例如,计算设备105可以在506,确定第一查询结果是否为空。如果是,则在508,第一数目的计数值M递增1;如果否,则在510,第一数目的计数值M保持不变。以此方式,可以统计出预定时段内缓存单元中命中的用户查询数目。在预定时段过后,第一数目的计数值可以归零,以重新开始下一预定时段的统计。

将理解的是,还可以通过其他的统计方式来确定第一数目,例如,可以暂存预定时段内不为空的第一查询结果,在预定时段末尾处对其进行统计。

图6是根据本公开实施例的用于确定能够在缓存单元中命中的第一查询数目的方法600的流程图。

如上所讨论的,缓存单元116可以包括(例如,存储)多个第一键值对,并且离线缓存单元126包括(例如,存储)多个第二键值对,多个第二键值对与第一键值对相对应。在一些实施例中,第二键值对中的值为占位符。因此,针对多个用户查询中的每一用户查询,可以通过执行以下步骤来确定能够在离线缓存单元(或者,在一些实施例中,缓存单元)中命中的第一查询的第二数目。

在602,计算设备105可以基于利用签名算法根据每一第一查询中所包括的要素,生成针对每一第一查询的第二键。

具体地,由于第一查询中可能与至少一个要素相关联,该至少一个要素是第一要素集合的子集。因此,计算设备105可以对该至少一个要素进行计算,以确定键(key)。例如,当签名算法是MD5算法时,则可以算出MD5类型的第二键。

在604,计算设备105可以基于第二键在多个第二键值对中进行检索,以确定第二查询结果。

例如,计算设备105可以从离线缓存单元中的多个第二键值对中,获取键与第二键相同或相应的一个键值对,并且将该值返回。如果查找不到与第二键相同或相应的一个键值对,则返回为空的值。

计算设备105可以通过对不为空的第二查询结果进行计数来确定第一数目。例如,计算设备105可以在606,确定第二查询结果是否为空。如果是,则在608,将第二数目的计数值P递增1;如果否,则在610将第二数目的计数值P保持不变。以此方式,可以统计出预定时段内离线缓存单元(或者,在一些实施例中,缓存单元)中命中的第一查询数目。在预定时段过后,第二数目的计数值可以归零,以重新开始下一预定时段的统计。

将理解的是,还可以通过其他的统计方式来确定第二数目,例如,可以暂存预定时段内不为空的第一查询结果,在预定时段末尾处对其进行统计。

图8是根据本公开实施例用于对搜索系统进行优化的装置800的框图。

装置800包括第一命中率确定模块802,被配置为确定搜索系统的缓存单元针对多个用户查询的第一命中率,其中每个用户查询与多个要素相关联。装置800还包括关键要素确定模块804,被配置为在多个要素中的第一要素集合中,针对第一要素集合中每一要素,通过以下方式来确定至少一个关键要素:生成与多个用户查询相对应的多个第一查询,该多个第一查询均至少与上述要素相关联;以及确定缓存单元针对多个第一查询的第二命中率;以及如果第二命中率与第一命中率之间的差异小于差异阈值,将要素确定为至少一个关键要素之一。装置800还包括优化模块802,被配置为基于至少一个关键要素,优化搜索系统。

在一些实施例中,与缓存单元相对应的离线缓存单元被预先构建,其中关键要素确定模块804被进一步配置为:将多个第一查询发送给离线缓存单元;以及将离线缓存单元针对多个第一查询的命中率确定为第二命中率。

在一些实施例中,关键要素确定模块804被进一步配置为:与搜索系统处理多个用户查询异步地生成多个第一查询。

在一些实施例中,关键要素确定模块804还包括相似度确定模块,被配置为确定第一命中率与第二命中率之间的相似度。关键要素确定模块804被进一步配置为:如果相似度高于相似度阈值,将至少一个要素确定为至少一个关键要素之一。

在一些实施例中,相似度确定模块关键要素确定模块804被进一步配置为:绘制针对第一命中率的第一曲线、以及针对第二命中率的第二曲线;以及基于第一曲线与第二曲线的接近程度,确定相似度。

在一些实施例中,第一命中率为在预定时间段内,多个用户查询中能够在缓存单元中检索到对应查询结果的查询的第一数目与多个用户查询的总数目的第二比值,并且其中第二命中率为在预定时间段内,多个第一查询中能够在离线缓存单元中检索到对应查询结果的第一查询的第二数目与多个第一查询的总数目的第二比值。

在一些实施例中,缓存单元包括多个第一键值对,并且第一命中率确定模块802包括第一数目确定模块,第一数目确定模块被配置为:针对多个用户查询中的每一用户查询:利用签名算法根据每一用户查询中所包括的多个要素,生成针对每一用户查询的第一键;基于第一键在多个第一键值对中进行检索,以确定第一查询结果;以及通过对不为空的第一查询结果进行计数来确定第一数目。

在一些实施例中,离线缓存单元包括多个第二键值对,多个第二键值对与第一键值对相对应,并且关键要素确定模块804包括第二数目确定模块,第二数目确定模块被配置为针对多个第一查询中的每一第一查询:利用签名算法根据每一第一查询中所包括的要素,生成针对每一第一查询的第二键;基于第二键在多个第二键值对中进行检索,以确定第二查询结果;以及通过对不为空的第二查询结果进行计数确定第二数目。

在一些实施例中,第一键值对中的值为占位符,第二键值对中的值为查询结果。

在一些实施例中,多个要素包括以下至少一项:用户查询所来自的终端的类型、用户查询所来自的终端所处的位置信息、用户查询所包括的关键短语、用户查询包括的过滤条件、用户查询所对应的的查询结果页数、每个查询结果页所包含的查询结果条目数、与用户查询相关联的(多个)流量标记、指示用户查询是否属于压力测试的标志。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图8所示,设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。

设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如方法200、300、500和600。例如,在一些实施例中,方法200、300、500和600中的任一个可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的方法200、300、500和600中的任一个的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200、300、500和600中的任一个。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

相关技术
  • 用于对搜索系统进行优化的方法和装置
  • 基于人工智能的搜索系统优化方法和装置
技术分类

06120112481048