一种文档检索方法及装置与流程

文档序号:33700834发布日期:2023-03-31 18:51阅读:27来源:国知局
一种文档检索方法及装置与流程

1.本技术涉及信息检索领域,特别是指一种文档检索方法及装置。


背景技术:

2.信息检索在网页搜索中有深度的应用,在诸如音乐、视频、新闻等垂直领域中也广泛的应用。
3.信息检索的主要任务是根据用户查询语句在海量数据中查找到少量与查询相关的文档,检索引擎根据这些相关文档在各个相关维度上的度量,对文档进行打分,产生一个相关性递减的文档序列,返回给用户。
4.一般在海量索引检索场景下,由于需要考虑用户体验,需要检索引擎尽快处理查询并返回结果,但是排序效果更好的精细排序通常需要使用排序模型,开销大,无法在大量满足过滤条件的相关文档集合上直接使用。为了实现在短时间内返回高质量的排序结果,商用检索引擎一般采用两阶段检索流程,分为粗排和精排两个阶段。在粗排阶段,通过开销较低的方式,从全量数据中使用过滤器过滤出满足过滤条件的相关文档集合,然后使用打分器计算每个相关文档的相关性得分,获取得分最高的topn(topn表示排名前n个的文档),作为粗排结果。在精排阶段,在粗排阶段返回的topn相关结果上,使用特征提取模块对topn结果中提取每个文档的特征向量,然后输入排序模型对topn相关文档进行重排序,得到一个更好的排序。
5.由于通常情况下,检索引擎需要索引的文档集合很大,在这样的海量文档索引下,大部分数据存储在磁盘等存储介质上,读取/写入这些介质的过程称之为i/o过程。检索引擎在处理查询时实际上是一个i/o密集型的过程,它需要读取大量存储在这些介质上的索引信息,从而引入大量i/o,因此,如何减少查询处理过程中的i/o,就成了检索引擎优化查询性能的重点。


技术实现要素:

6.有鉴于此,本技术实施例提供了一种文档检索方案,文档检索包括粗排阶段,在粗排阶段,基于原子过滤器与粗排依赖的原子相关性算子所需要的索引资源,对索引资源库进行查询生成粗排索引资源池,文档过滤器与打分器复用粗排索引资源池中索引资源,降低粗排阶段i/o,且打分器复用各原子相关性算子的计算结果和/或中间结果,从而降低粗排阶段的计算量;在一些实施例中,文档检索还包括精排阶段,基于精排阶段专有的原子相关性算子所需的索引资源对索引资源库中粗排结果的文档进行查询,生成精排资源池以进行共享,且在计算精排特征向量计算过程中共享粗排依赖的各原子相关性算子和精排阶段专有的原子相关性算子的计算结果和/或中间结果。通过上述i/o共享和原子相关性算子的计算的共享,提高文档检索效率,提升用户满意度。
7.为达到上述目的,本技术的第一方面提供了一种文档检索方法,包括粗排阶段,粗排阶段包括:获取检索语句;基于检索语句生成文档过滤器和打分器;访问索引资源库,获
取文档过滤器和打分器所需的索引资源,索引资源形成粗排索引资源池,索引资源包括各文档的索引信息;基于粗排索引资源池中的索引资源,过滤出符合文档过滤器要求的文档;根据过滤出的文档进行相关性得分计算,相关性得分基于文档的粗排特征向量计算,粗排特征向量基于打分器计算;根据相关性得分选取文档,所选取的文档作为粗排阶段的检索结果。
8.由上,在粗排阶段,通过基于文档过滤器和打分器所需的索引资源,生成粗排索引资源池,文档过滤器与打分器复用粗排索引资源池中索引资源进行文档过滤和打分,对于一篇待处理的文档,一个索引资源仅需要对索引资源进行一次i/o,降低粗排阶段i/o,提高文档检索效率。
9.作为第一方面的一种可能的实施方式,打分器包括原子相关性算子,文档过滤器包括原子过滤器,其中获取文档过滤器和打分器所需的索引资源包括:获取原子相关性算子所需的索引资源和原子过滤器所需的索引资源。
10.由上,通过原子相关性算子所需的索引资源和原子过滤器所需的索引资源确定文档过滤器和打分器所需的索引资源,从而构建粗排索引资源池,使粗排索引资源池只占用适当内存的资源情况下可以满足文档过滤器和打分器的索引资源的需求。
11.作为第一方面的一种可能的实施方式,过滤出符合文档过滤器要求的文档,包括:基于粗排索引资源池中的索引资源,初次过滤出符合各原子过滤器要求的文档;针对初次过滤出的文档,过滤出符合文档过滤器要求的文档,文档过滤器描述了多个原子过滤器的组合逻辑。
12.由上,通过利用多个原子过滤器的组合逻辑根据原子过滤器的过滤结果,从而过滤出符合文档过滤器要求的文档,文档过滤器实现共享各原子过滤器的过滤结果,提高过滤效率。
13.作为第一方面的一种可能的实施方式,粗排特征向量基于打分器计算,包括:粗排特征向量基于各原子性相关算子的计算结果计算;其中粗排特征向量的计算过程中,共享使用原子相关性算子的计算结果和/或中间结果。
14.由上,通过根据各原子性相关算子的计算结果而计算粗排特征向量,打分器再根据粗排特征向量进行文档的相关性打分,从而实现在文档的打分过程中共享各原子性相关算子的计算结果,降低检索运算量,提高打分效率。
15.作为第一方面的一种可能的实施方式,原子相关性算子包括粗排阶段中计算粗排特征向量所使用的原子相关性算子。
16.由上,通过从原子相关性算子确定计算粗排特征向量所使用的原子相关性算子,从而确定粗排阶段的原子相关性算子所需的索引资源的合理范围,保存合理范围的原子相关性算子的计算结果和/或中间结果以进行共享,避免占用过多内存资源。
17.作为第一方面的一种可能的实施方式,还包括精排阶段,精排阶段包括:针对粗排阶段的检索结果中的文档,获得各文档的精排特征向量,精排特征向量基于原子性相关算子的计算结果和/或中间结果计算;由排序模型基于精排特征向量对粗排阶段的检索结果进行选取和/或排序,所选取和/或排序的结果作为精排阶段的检索结果。
18.由上,通过在精排阶段计算粗排阶段检索出的文档的精排特征向量,再进行排序选择最终的检索结果,进一步提升检索的准确率。
19.作为第一方面的一种可能的实施方式,精排特征向量基于原子性相关算子的计算结果计算,包括;精排特征向量包括第一特征向量,计算第一特征向量所基于的原子性相关算子属于粗排特征向量计算时使用的原子性相关算子;第一特征向量的计算过程中,共享使用粗排特征向量计算时使用的原子相关性算子的计算结果和/或中间结果。
20.由上,通过在计算精排特征向量中的第一特征向量时共享粗排阶段特使用的原子性相关算子的计算结果和/或中间结果,降低检索运算量,提高打分效率。
21.作为第一方面的一种可能的实施方式,第一特征向量的计算过程在粗排阶段执行。
22.由上,通过在粗排阶段计算第一特征向量,使粗排阶段的原子性相关算子的计算结果和/或中间结果只在粗排阶段占用合理的内存,减小内存资源的消耗。
23.作为第一方面的一种可能的实施方式,精排特征向量基于原子性相关算子的计算结果计算,包括:精排特征向量包括第二特征向量,计算第二特征向量所基于的原子性相关算子包括粗排特征向量计算时未使用过的原子性相关算子;精排排特征向量计算过程中,共享使用该未使用过的原子相关性算子的计算结果和/或中间结果。
24.由上,通过在计算精排特征向量中的第二特征向量时共享精频排阶段特使用的原子性相关算子的计算结果和/或中间结果,降低检索运算量,提高打分效率。
25.作为第一方面的一种可能的实施方式,计算粗排特征阶段未使用过的原子相关性算子的计算结果和/或中间计算结果,包括:访问索引资源库,获取该未使用过的原子相关性算子的索引资源,索引资源形成精排索引资源池;基于精排索引资源池的索引资源计算该未使用过的原子相关性算子的计算结果和/或中间结果。
26.由上,通过根据在粗排阶段未使用的原子相关性算子所需的索引资源构建精排索引资源池,在计算第二特征向量时进行共享,降低精排阶段i/o,提高文档检索效率。
27.为达到上述目的,本技术的第二方面提供了一种文档检索装置,应用于粗排阶段,包括:获取模块、共享查询构建模块、过滤模块、打分模块和粗排排序模块;获取模块用于获取检索语句;共享查询构建模块用于基于检索语句生成文档过滤器和打分器;获取模块还用于访问索引资源库,获取文档过滤器和打分器所需的索引资源,索引资源形成粗排索引资源池,索引资源包括各文档的索引信息;过滤模块用于基于粗排索引资源池中的索引资源,过滤出符合文档过滤器要求的文档;打分模块用于根据过滤出的文档进行相关性得分计算,相关性得分基于文档的粗排特征向量计算,粗排特征向量基于打分器计算;粗排排序模块用于根据相关性得分选取文档,所选取的文档作为粗排阶段的检索结果。
28.由上,在粗排阶段,通过基于文档过滤器和打分器所需的索引资源,生成粗排索引资源池,文档过滤器与打分器复用粗排索引资源池中索引资源进行文档过滤和打分,对于一篇待处理的文档,一个索引资源仅需要对索引资源进行一次i/o,降低粗排阶段i/o,提高文档检索效率。
29.作为第二方面的一种可能的实施方式,打分器包括原子相关性算子、文档过滤器包括原子过滤器,获取文档过滤器和打分器所需的索引资源包括:获取原子相关性算子所需的索引资源和原子过滤器所需的索引资源。
30.由上,通过原子相关性算子所需的索引资源和原子过滤器所需的索引资源确定文档过滤器和打分器所需的索引资源,从而构建粗排索引资源池,使粗排索引资源池只占用
适当内存的资源情况下可以满足文档过滤器和打分器的索引资源的需求。
31.作为第二方面的一种可能的实施方式,过滤模块具体用于基于粗排索引资源池中的索引资源,初次过滤出符合各原子过滤器要求的文档;过滤模块还具体用于针对初次过滤出的文档,过滤出符合文档过滤器要求的文档,文档过滤器描述了多个原子过滤器的组合逻辑。
32.由上,通过利用多个原子过滤器的组合逻辑根据原子过滤器的过滤结果,从而过滤出符合文档过滤器要求的文档,文档过滤器实现共享各原子过滤器的过滤结果,提高过滤效率。
33.作为第二方面的一种可能的实施方式,打分模块在计算粗排特征向量时,具体用于基于各原子性相关算子的计算结果计算粗排特征向量;其中粗排特征向量的计算过程中,共享使用原子相关性算子的计算结果。
34.由上,通过根据各原子性相关算子的计算结果而计算粗排特征向量,打分器再根据粗排特征向量进行文档的相关性打分,从而实现在文档的打分过程中共享各原子性相关算子的计算结果,降低检索运算量,提高打分效率。
35.作为第二面的一种可能的实施方式,原子相关性算子包括粗排阶段中计算粗排特征向量所使用的原子相关性算子。
36.由上,通过从原子相关性算子确定计算粗排特征向量所使用的原子相关性算子,从而确定粗排阶段的原子相关性算子所需的索引资源的合理范围,保存合理范围的原子相关性算子的计算结果和/或中间结果以进行共享,避免占用过多内存资源。
37.作为第二方面的一种可能的实施方式,还应用于精排阶段,还包括特征提取模块和精排排序模块;特征提取模块用于针对粗排阶段的检索结果中的文档,获得各文档的精排特征向量,精排特征向量基于原子性相关算子的计算结果和/或中间结果而计算;精排排序模块用于由排序模型基于精排特征向量选取文档,所选取的文档作为精排阶段的检索结果。
38.由上,通过在精排阶段计算粗排阶段检索出的文档的精排特征向量,再进行排序选择最终的检索结果,进一步提升检索的准确率。
39.作为第二方面的一种可能的实施方式,特征提取模块包括第一特征提取模块,用于提取精排特征向量中的第一特征向量,计算第一特征向量所基于的原子性相关算子属于粗排特征向量计算时使用的原子性相关算子;在第一特征提取模块计算第一特征向量的过程中,共享使用粗排特征向量计算时使用的原子相关性算子的计算结果和/或中间结果。
40.由上,通过在计算精排特征向量中的第一特征向量时共享粗排阶段特使用的原子性相关算子的计算结果和/或中间结果,降低检索运算量,提高打分效率。
41.作为第二方面的一种可能的实施方式,第一特征提取模块在粗排阶段执行。
42.由上,通过在粗排阶段计算第一特征向量,使粗排阶段的原子性相关算子的计算结果和/或中间结果只在粗排阶段占用合理的内存,减小内存资源的消耗。
43.作为第二方面的一种可能的实施方式,特征提取模块包括第二特征提取模块,用于提取精排特征向量中的第二特征向量,计算第二特征向量所基于的原子性相关算子包括粗排特征向量计算时未使用过的原子性相关算子;在第二特征提取模块计算第二特征向量的过程中,共享使用该未使用过的原子相关性算子的计算结果和/或中间结果。
44.由上,通过在计算精排特征向量中的第二特征向量时共享精频排阶段特使用的原子性相关算子的计算结果和/或中间结果,降低检索运算量,提高打分效率。
45.作为第二方面的一种可能的实施方式,获取模块还用于访问索引资源库,获取粗排阶段未使用过的原子相关性算子的索引资源,索引资源形成精排索引资源池;第二特征提取模块在计算该未使用过的原子相关性算子的计算结果和/或中间结果时,基于精排索引资源池的索引资源而计算。
46.由上,通过根据在粗排阶段未使用的原子相关性算子所需的索引资源构建精排索引资源池,在计算第二特征向量时进行共享,降低精排阶段i/o,提高文档检索效率。
47.为达到上述目的,本技术的第三方面提供一种计算设备,包括至少一个处理器和至少一个存储器,存储器存储有程序指令,程序指令当被至少一个处理器实现时使得至少一个处理器执行上述第一方面的方法。
48.为达到上述目的,本技术的第四方面提供一种计算机可读存储介质,其上存储有程序指令,程序指令当被计算机执行时使得计算机实现上述第一方面的方法。
49.为达到上述目的,本技术的第五方面提供一种计算机程序产品,其包括有程序指令,程序指令当被计算机执行时使得计算机实现上述第一方面的方法。
50.本技术的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
51.以下参照附图来进一步说明本技术的各个特征和各个特征之间的联系。附图均为示例性的,并且一些附图中可能省略了本技术所涉及领域的惯常的且对于本技术非必要的特征,或是额外示出了对于本技术非必要的特征,附图所示的各个特征的组合并不用以限制本技术。另外,在本说明书全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:
52.图1为elasticsearch+learning to rank plugin两阶段检索的流程示意图;
53.图2a为elasticsearch的查询树的结构示意图;
54.图2b为基于elasticsearch的查询树的过滤器的结构示意图。
55.图2c为基于elasticsearch的查询树的打分器的结构示意图。
56.图3为基于elasticsearch+learning to rank plugin方案的缺点示意图;
57.图4为本技术各实施例涉及的应用场景示意图;
58.图5a为本技术的一种文档检索方法实施例一的流程示意图;
59.图5b为本技术的粗排索引资源池构建的数据流示意图;
60.图5c为传统的打分方法与本技术方法实施例一的打分方法的对比示意图
61.图5d为本技术方法实施例一的共享索引资源和原子相关性算子计算的示意图;
62.图6a为本技术的一种文档检索方法实施例二的流程示意图;
63.图6b为本技术的方法实施例二的索引资源池构建的数据流示意图;
64.图6c为本技术方法实施例一的共享索引资源和原子相关性算子计算的示意图;
65.图7a为本技术的一种文档检索方法的具体实施方式的流程示意图;
66.图7b为本技术的具体实施方式的共享查询的内容结构示意图;
67.图7c为本技术的具体实施方式的全局的共享查询的构建方法的流程示意图;
68.图7d为本技术的具体实施方式的每篇文档的粗排检索方法的流程示意图;
69.图7e为本技术的具体实施方式的每篇文档的精排检索方法的流程示意图;
70.图8a为本技术的一种文档检索装置实施例一的结构示意图;
71.图8b为本技术的一种文档检索装置实施例二的结构示意图;
72.图9为本技术各实施例的计算设备的结构示意图。
具体实施方式
73.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
74.说明书和权利要求书中的词语“第一、第二、第三等”或模块a、模块b、模块c等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
75.在以下的描述中,所涉及的表示步骤的标号,如s110、s120
……
等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
76.说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置a和b的设备”不应局限为仅由部件a和b组成的设备。
77.本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
78.对本技术具体实施方式进行进一步详细说明之前,对本技术实施例中涉及的技术用语进行说明。除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
79.为了准确地对本技术中的技术内容进行叙述,以及为了准确地理解本技术,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
80.1.查询词(term):在检索引擎中被索引的词。在检索引擎中,用户输入的查询一般是由句子组成的,对句子进行分词就可以得到一个term的有序序列,检索引擎的搜索是以term为单位进行搜索的。
81.2.文档(document,或doc):在信息检索领域中,可以将网页、条目等数据抽象化为文档。文档是一个term的有序序列。在某些诸如网页搜索的场景下,文档还可以分为多个字段(field),每个可分词的字段相互独立且都为term有序序列。
82.3.倒排列表:是一种文档的索引表,用来存储某个term在哪些文档中出现的映射关系,是一个按照文档标识(doc id)从小到大排列的有序列表,代表在这些文档中含有该倒排代表的term。例如term“a”在id为0,2,5的文档中出现,则a的倒排列表就可以表示为{0,2,5}。而为了能够找到文档中多个term组成的短语,还需要记录term在文档中的位置。假设a在文档0的11,25,46三个位置上出现,在文档2的54位置上出现,在文档5的14,39位置上出现,则会有倒排列表{(0,《11,25,46》),(2,《54》),(5,《14,39》)}。同时,倒排列表还可以记录term在doc中出现的次数(词频),以及其他term在doc上具有的一些属性。检索引擎通过预先构建输入数据上的倒排列表结构,达到快速得在海量索引下检索的目的。倒排列表所包含的信息称为倒排索引资源。
83.4.正排索引:是一种记录文档属性的索引方法,记录每个doc自身的静态属性信息,比如某个文档的网页质量、网页url、网页点击次数等等,多用于读取这些静态属性,作用于相关性打分的过程中,或者静态属性也可以直接\间接作为文档的相关性特征,用于精排过程。正排索引的信息称为正排索引资源。
84.弹性搜索+学习排名插件(elasticsearch(es)+learning to rank plugin)是一种两阶段检索流程的实现方式,图1中示出elasticsearch+learning to rank plugin两阶段检索的流程,其中,在es阶段即粗排阶段,实现图1中示出的粗排阶段的筛选和打分功能,输出topn文档(即排序后的前n个文档);在learning to rank plugin阶段即精排阶段,实现了图1中示出的精排阶段的topn文档的特征向量提取,并根据该特征向量对topn文档进行排序,输出topk文档(即排序后的前k个文档,k小于n),作为最终的输出结果。
85.在es阶段,基于用户输入的查询句子或词生成的查询树,图2a示出了查询树的结构,其中,树上每个叶子是不可再分割的查询,称为原子查询,在根节点bool下标记为“must”的树枝用于筛选文档,在根节点bool下标记为“should”的树枝仅和标记为“must”的树枝一起用于对通过筛选的文档进行打分。
86.基于查询树生成过滤器和打分器,图2b和图2c示出了基于图2a生成的过滤器和打分器的结构。过滤器和打分器都是树状结构,又称过滤树和打分树。在过滤器中每个树叶为原子过滤器,对应一个原子查询,各个原子过滤器的结果经过逻辑运算生成过滤器的过滤结果;在打分器中的每个树叶为原子算子,对应一个原子查询,各个原子算子的结果经过运算生成打分器的分数,图2c中,bm25是一种基于原子查询结果的一种运算。es阶段基于查询树的叶子进行i/o,图2b和图2c中相同位置的原子过滤器和算子对应相同的原子查询,复用一个原子查询的结果,可以复用i/o。es阶段存在以下缺点:
87.(1)在过滤器不同位置的原子过滤器即使对应一个原子查询,并不能用i/o。
88.(2)在打分器不同位置的算子即使对应一个原子查询,并不复用i/o,不共享计算。
89.(3)在过滤器一个位置的叶子与打分器的另一个位置的叶子即使对应一个原子查询,并不复用i/o。
90.在learning to rank plugin阶段,所计算的特征向量为高维的向量,每个维度对应于一个特征树,各特征树各自的树叶也为算子,也分别对应一个原子查询,每个维度的特
征计算法方法与打分树相同。因为高维的特征向量对应大量i/o,同一文档的i/o开销比粗排阶段的i/o大得多。learning to rank plugin阶段基于各特征树的叶子进行i/o,存在以下缺点:
91.(1)在每个特征树不同位置的算子即使对应一个原子查询,并不复用i/o,原子算子的计算并不共享。
92.(2)在各个特征树过即使存在算子对应一个原子查询,并不复用i/o,原子算子的计算并不共享。
93.(3)在learning to rank plugin阶段的特征树与es阶段的过滤器或打分器即使存在原子算子对应一个原子查询,并不复用i/o,原子算子的计算并不共享。
94.图3是es+learning to rank plugin方案的一个缺点示意图,图中从索引资源引出的虚线箭头所代表的i/o为冗余i/o,这些i/o在从索引资源引出的左边的3个箭头都出现过。在计算层中,虚线框的计算模块为重复计算,打分器与过滤器中带虚线框的模块为重复计算。
95.本技术实施例提供了一种文档检索方法及装置,该文档检索包括粗排阶段,在粗排阶段,基于原子过滤器与粗排依赖的原子相关性算子所需要的索引资源,对索引资源库进行查询,生成粗排索引资源池,各原子过滤器与粗排依赖的各原子相关性算子复用粗排索引资源池中索引资源,降低粗排阶段i/o,且在打分器在粗排阶段复用各原子相关性算子的计算结果和/或中间结果,从而降低粗排阶段的计算量;在一些实施例中,该文档检索还包括精排阶段,提取精排特征时共享粗排阶段的各原子相关性算子的计算结果和/或中间结果,并基于精排阶段专有的原子相关性算子所需的索引资源对索引资源库中粗排结果的文档进行一次i/o,生成精排资源池以进行共享,在计算精排特征向量计算过程中还共享精排阶段专有的原子相关性算子的计算。通过共享上述i/o和原子相关性算子的计算结果和/或中间结果,提高文档检索效率,提升用户满意度。
96.下面基于图4至图9对本技术各实施例进行详细介绍。
97.首先基于图4对本技术各实施例涉及的应用场景进行概要性的说明。图4示出了本技术各实施例涉及的应用场景的结构,包括:检索客户端410、检索服务器420、索引资源库430。
98.检索客户端410用于用户输入检索条件和显示检索结果。检索客户端410包括手机、pad、笔记本、台式机等,通过无线或有线与检索服务器420连接。
99.检索服务器420用于基于用户输入的检索条件对系统索引资源库430进行检索,获取搜索结果。检索服务器420可以包括多台服务器,分别进行检索以提高检索效率,此时还可包括协调控制器以协同各个检索服务器420。
100.索引资源库430为存在存储设备上的索引资源,索引资源库430可以分布在多台存储设备上,存储设备可以为硬盘、光盘、磁带等。通常索引资源库430与检索服务器420在同一位置或就近部署,以提高i/o速率。当检索服务器420与索引资源库430都分布式部署时,索引资源库430的分布节点与检索服务器420的数据节点可存在对应关系,以使检索服务器420的数据节点从就近的系统索引资源库430的分布节点进行i/o。当检索服务器420与索引资源库430都分布式部署时,还包括协调节点以控制各数据节点协调工作。
101.下面基于图5a至图5d介绍本技术的一种文档检索方法实施例一。
102.【一种文档检索方法实施例一】
103.方法实施例一在检索服务器420上运行,方法实施例一基于用户输入的检索语句构建文档过滤器和打分器,基于文档过滤器和打分器所需资源构建索引资源池,使用文档过滤器和打分器对索引资源池的文档顺序进行过滤、打分和排序,以确定检索结果,实现在检索过程只进行共享资源池中索引资源和计算结果,提高检索效率。
104.5a示出了本技术的一种文档检索方法实施例一的流程,包括步骤s510至步骤s560。
105.s510:获取用户输入的检索语句。
106.其中,检索语句为用户通过一检索客户端410输入的句子或词,当输入的词为多个时,可以以空格、逗号或顿号等标点符号进行词语之间的间隔。检索条件还可以为带逻辑表达式的词。
107.当检索条件为句子时,通过对句子进行分词提取出该句子包含的各词。
108.s520:根据检索语句生成文档过滤器和打分器。
109.在一些实施例中,根据检索语句利用elasticsearch的方法构建查询树和打分树,再根据查询树构建文档过滤器和根据打分树构建打分器。
110.在本实施例中,根据检索语句的各词(关键词)生成原子查询,根据原子查询生成原子过滤器和原子相关性算子;文档过滤器包括若干个原子过滤器,描述了根据检索语句生成多个原子过滤器的组合逻辑。打分器包括若干个原子相关性算子,还包括根据检索语句利用原子相关性算子计算粗排特征向量,根据粗排特征向量可以计算文档的相关性得分。在一些实施例中,本步骤可包括步骤s521至s524。
111.s521:根据检索语句的关键词生成原子查询。
112.其中,根据检索语句的关键词可以利用elasticsearch的方法生成原子查询。
113.s522:构建粗排特征向量,并生成排特征向量中粗排特征与原子相关性算子的关系。
114.其中,根据检索语句可以利用elasticsearch的方法生成文档的相关性得分的打分方法,据此确定粗排特征向量,也可以描述为基于打分器的相关性得分的打分方法注册所需的粗排特征。
115.其中,还根据该相关性得分的打分方法还生成粗排特征与原子相关性算子的关系,一个原子相关性算子对应一个原子查询,粗排阶段的原子相关性算子又称为粗排原子相关性算子。
116.其中,粗排特征与原子相关性算子的关系包括:
117.每个粗排特征与哪些原子相关性算子有关,这些原子相关性算子又成为粗排原子相关性算子;
118.每个粗排特征值与相关的粗排原子相关性算子的计算结果和/或中间结果的函数关系。
119.其中,确定粗排特征与原子相关性算子的关系也可以描述为基于粗排特征的计算方法注册所需的原子相关性算子。
120.s523:构建利用原子过滤器构建文档过滤器。
121.其中,可以根据检索语句利用elasticsearch生成文档的过滤方法,并据此生成文
档过滤器与原子过滤器的关系,每个原子过滤器对应一个原子查询,再根据文档滤器与原子过滤器的关系构建文档过滤器。
122.其中,文档过滤器与原子过滤器的关系可以包括下述:
123.文档滤器与哪些原子过滤器有关,
124.文档滤器与相关的原子过滤器的逻辑关系。
125.在一些实施例中,每个数据节点分别构建本身的文档过滤器。
126.其中,确定文档过滤器与原子过滤器的关系也可以描述为基于文档过滤器的过滤方法注册所需的原子过滤器。
127.由上,通过利用相关的原子过滤器的逻辑关系构建的文档过滤器,相对于基于查询树构建的文档过滤器,解决了在查询树的不同叶节点对应一个原子过滤器时不能共享同一个原子过滤器对应的索引资源和原子过滤器的结果的问题,实现了原子过滤器对应的索引资源和原子过滤器的结果的共享。
128.s524:利用粗排特征和粗排原子相关性算子构建打分器。
129.其中,可以利用粗排特征与原子相关性算子的关系构建粗排特征执行器。
130.其中,在利用elasticsearch确定粗排特征时,还可以确定文档的相关性得分与粗排特征的关系,并据此构建打分器,打分器利用粗排原子相关性算子的计算结果和/或有用的中间结果计算粗排特征,在利用粗排特征计算文档的相关性得分。
131.在一些实施例中,构建原子相关性算子池用于保存原子相关性算子的计算结果和/或有用的中间结果,包括粗排原子相关性算子的计算结果和/或有用的中间结果。
132.在一些实施例中,利用粗排特征与原子相关性算子的关系构建粗排特征执行器,粗排特征执行器从原子相关性算子池获取相关的原子相关性算子的计算结果和/或有用的中间结果,并利用粗排特征值与相关的粗排原子相关性算子的计算结果和/或中间结果的函数关系,计算各粗排特征值;再利用文档的相关性得分与粗排特征的关系构建打分器,即打分器根据粗排特征执行器的输出计算文档的相关性得分。
133.在一些实施例中,每个数据节点构建本身的打分器。
134.由上,利用粗排特征和粗排原子相关性算子构建的打分器,相对于利用打分树构建的打分器,解决了在打分树的不同叶节点对应一个原子相关性算子时不能共享同一个原子相关性算子对应的索引资源和原子相关性算子的计算结果和/或中间结果的问题,实现了原子相关性算子对应的索引资源和原子相关性算子的计算结果和/或中间结果的共享。
135.s530:访问索引资源库,获取文档过滤器和打分器所需的索引资源,并形成粗排索引资源池。
136.其中,索引资源包括各文档的倒排索引资源和正排索引资源等信息。打分器所需的索引资源包括原子相关性算子所需的索引资源,文档过滤器所需的索引资源包括原子过滤器所需的索引资源。
137.在一些实施例中,当索引资源库分数据节点统一存放时,本步骤形成一个粗排索引资源池。
138.在一些实施例中,当索引资源库分数据节点存放时,本步骤形成各个数据节点的粗排索引资源池。
139.需要指出的是,本步骤也可以描述为基于文档过滤器和打分器所需的索引资源注
册粗排索引资源,文档过滤器和打分器所需的索引资源,形成粗排索引资源池。
140.图5b示出了确定粗排索引资源池构建的数据流图。基于文档过滤器注册所需的原子过滤器,基于打分器注册所需的粗排特征,基于粗排特征注册所需的原子相关性算子,基于原子过滤器和原子相关性算子向共享资源池注册所需的索引资源,从而通过从索引资源库获取该所需的索引资源构建粗排索引资源池。
141.s540:基于粗排索引资源池中的索引资源,过滤出符合文档过滤器要求的文档。
142.其中,先基于粗排索引资源池中的索引资源,初次过滤出符合各原子过滤器要求的文档;再针对初次过滤出的文档,过滤出符合文档过滤器要求的文档,文档过滤器描述了多个原子过滤器的组合逻辑。
143.在一些实施例中,各个数据节点分别保存本节点的粗排索引资源池时,在各个数据节点分别完成本步骤的过滤。
144.s550:根据过滤出的文档进行相关性得分计算。
145.其中,文档的相关性得分基于文档的粗排特征向量计算,粗排特征向量基于打分器计算,利用各粗排原子性相关算子的计算结果计算,且在计算过程中共享使用粗排原子相关性算子的计算结果。
146.在一些实施例中,当各个数据节点分别根据步骤s540的方法过滤出自身的文档时,在各个数据节点分别基于本步骤的方法对自身过滤出的文档打分。
147.图5c示出了传统基于查询树的打分方法与基于粗排特征的打分方法对比图,ax在右边的本技术的技术方案中在代表原子相关性算子,ax在左边的传统基于查询树的打分方法中代表原子算子。其中。图形左边a2原子算子和a3原子算子分别都调用了2次,互相之间隔离,索引资源查询和原子算子的计算均不能共享;图形右边通过粗排特征f1、f2和f3实现对原子相关性算子的索引资源查询和原子算子的计算的共享,提高了打分器打分的效率。
148.下面对步骤s540和s550中共享索引资源和原子相关性算子的计算进行说明。图5d示出了步骤s540和s550中共享索引资源和原子相关性算子的计算的流程。原子过滤器和原子相关性算子之间、原子过滤器之间及原子相关性算子之间均共享粗排索引资源池中索引资源,文档过滤器在过滤过程中共享原子过滤器的结果,各粗排特征在计算过程中共享原子相关性算子的计算。
149.s560:根据相关性得分选取文档,所选取的文档作为粗排阶段的检索结果。
150.在一些实施例中,对全部过滤出的文档一起排序,选择topn的文档作为粗排阶段的检索结果。
151.在一些实施例中,完成一篇过滤出的文档后进行动态排序,只保留当前topn文档,当完成全部过滤出的文档的排序后,剩下的topn的文档作为粗排阶段的检索结果。
152.在一些实施例中,每个数据节点都有粗排索引资源池,分别进行过滤和打分,每个数据节点的过滤出的文档在数据节点内进行排序,然后把各个节点的topn的文档放在一起排序,获得全局的topn的文档。
153.在一些实施例中,把本步骤的检索结果作为最终的检索结果向用户输出,检索结束。
154.在一些实施例中,在本步骤的检索结果的文档中继续进行精排阶段的检索。
155.综上,本技术的一种文档检索方法实施例一的文档检索包括粗排阶段,在粗排阶
段,基于原子过滤器与粗排依赖的原子相关性算子所需要的索引资源,对索引资源库进行查询,生成粗排索引资源池,各原子过滤器与粗排依赖的各原子相关性算子复用粗排索引资源池中索引资源,对待处理的文档的索引资源只进行一次i/o,降低粗排阶段i/o,且在打分器在粗排阶段复用各原子相关性算子的计算结果和/或中间结果,从而降低粗排阶段的计算量,提高文档检索效率,提升用户满意度。
156.下面基于图6a至图6c介绍本技术的一种文档检索方法实施例二。
157.【一种文档检索方法实施例二】
158.方法实施例二在检索服务器420上运行,方法实施例二在方法实施例一的检索基础上,对粗排阶段获得的文档进行精排特征向量抽取,并根据精排特征向量值进行排序,选择最终检索结果,在抽取过程中,共享原子相关性算子的计算算力,对方法实施例一未使用的原子相关性算子通过构建精排索引资源池进行资源共享,从而提高了精排阶段的检索效率。
159.在方法实施例二中,精排特征向量基于原子性相关算子的计算结果和/或中间结果计算。
160.在一些实施例中,精排特征向量包括第一特征向量,计算第一特征向量所基于的原子性相关算子属于粗排特征向量计算时使用的原子性相关算子,即粗排原子性相关算子。在第一特征向量的计算过程中,共享粗排原子相关性算子的计算结果和/或中间结果。在其中的一些实施例中,第一特征向量的计算过程在粗排阶段执行。在其中的另一些实施例中,第一特征向量的计算过程在精排阶段执行。
161.在一些实施例中,精排特征向量包括第二特征向量,计算第二特征向量所基于的原子性相关算子包括粗排特征向量计算时未使用过的原子性相关算子,该未使用过的原子性相关算子称为精排原子性相关算子。在计算过程中,共享精排原子性相关算子的计算结果和/或中间结果。
162.在一些实施例中,访问索引资源库,获取精排原子相关性算子的索引资源,引资源形成精排索引资源池,基于精排索引资源池的索引资源计算精排原子相关性算子的计算结果和/或中间结果。
163.图6a示出了本技术的一种文档检索方法实施例二的流程,包括步骤s610至s680。下面重点描述方法实施例二与方法实施例一不同的步骤。
164.s610:获取用户输入的检索语句。
165.其中,本步骤的方法同方法实施例一的步骤s510。
166.s620:根据检索语句生成文档过滤器、打分器和精排特征执行器。
167.其中,相对于方法实施例一的步骤s520,本步骤增加了精排特征执行器的构建。本步骤包括步骤s621至s626。
168.s621:根据检索语句的各词生成原子查询。
169.其中,本步骤的方法同方法实施例一的步骤s521。
170.s622:构建粗排特征向量和精排特征向量,并生成粗排特征和精排特征与原子相关性算子的关系。
171.其中,本步骤相对于方法实施例一的步骤s522,增加了构建精排特征向量及精排特征与原子相关性算子的关系。下面对增加部分进行说明。
172.其中,根据检索语句利用learning to rank plugin的方法构建精排特征向量及精排特征向量的获得方法。也可以描述为利用learning to rank plugin的方法注册精排特征。
173.根据精排特征向量的获得方法确定每个精排特征与原子相关性算子的关系。精排特征与原子相关性算子的关系包括:
174.每个精排特征与哪些原子相关性算子有关;
175.每个精排特征值与相关的原子相关性算子的计算结果和/或中间结果的函数关系。
176.其中,不同的精排特征可以与同一个原子相关性算子有关。
177.其中,确定每个精排特征与原子相关性算子的关系也可以描述为基于精排特征的计算方法注册各精排特征所需的原子相关性算子。
178.s623至s624:构建文档过滤器和打分器。
179.其中,这里执行的方法同方法实施例一的步骤s523至s524。
180.s625:基于精排特征与原子相关性算子的关系构建精排特征执行器。
181.在一些实施例中,在原子相关性算子池中保存精排原子相关性算子的计算结果和/或中间结果以事项共享。
182.其中,精排特征执行器从原子相关性算子池获取相关的原子相关性算子的计算结果和/或有用的中间结果,并利用精排特征值与相关的精排原子相关性算子的计算结果和/或中间结果的函数关系,计算各精排特征值。
183.s626:判断精排特征的原子相关性算子是否为粗排原子相关性算子,标记精排特征向量中的第一特征向量和第二特征向量。
184.其中,当精排特征所基于的原子相关性算子全部为粗排原子相关性算子,则这些精排特征构成第一特征向量;当精排特征所基于的原子相关性算子不全是粗排原子相关性算子,则这些精排特征构成第二特征向量。
185.s630至s660:获取文档过滤器和打分器所需的索引资源,并形成粗排索引资源池,并利用文档过滤器对其中的文档进行过滤,利用打分器对过滤出的文档进行打分和排序,获取粗排阶段的检索结果。其中的方法同方法实施例一的步骤s630至步骤s660的方法
186.s670:访问索引资源库,获取第二特征向量的原子相关性算子所需的索引资源,并形成精排索引资源池。
187.其中,精排索引资源池与粗排索引资源池的部署位置相同。
188.在一些实施例中,精排索引资源池与粗排索引资源池合成一个索引资源池。
189.在一些实施例中,每个数据节点形成本身的精排索引资源池。
190.图6b示出了方法实施例二索引资源池构建的数据流图。在图5b的基础上增加精排之所以资源池的构建,基于精排特征注册精排原子相关性算子,基于精排原子相关性算子向共享资源池注册所需索引资源,从而通过从索引资源库获取该所需索引资源构建精排索引资源池。
191.s680:针对粗排阶段的检索结果中的文档,获得各文档的精排特征向量。包括:
192.根据原子相关性算子池中的粗排原子相关性算子的计算结果和/或中间结果,利用第一特征向量的精排特征执行器计算第一特征向量;
193.根据粗排原子相关性算子与精排原子相关性算子的计算结果和/或中间结果计算第二向量,其中,基于精排索引资源池的索引资源计算精排原子相关性算子的计算结果和/或中间结果,并保存在原子相关性算子池中以实现共享。
194.在一些实施例中,第一特征向量在粗排阶段获得,第二特征向量在精排阶段获得,还对第一特征向量和第二特征向量进行合并,生成精排特征向量。
195.在一些实施例中,当每个数据节点分别进行粗排阶段的检索时,每个数据节点粗排阶段的检索结果中的文档为全局的检索结果与本数据节点的文档的交集,每个数据节点获得该交集中的各文档的精排特征向量。
196.s690:由排序模型基于精排特征向量选取文档,所选取的文档作为精排阶段的检索结果。
197.其中,排序模型基于learning to rank plugin的方法选择。
198.在一些实施例中,每个数据节点分别本数据节点相应的文档的精排特征向量,排序模型把各个节点相应的文档的精排特征向量合在一起,再进行排序。
199.图6c示出了本步骤中共享索引资源和原子相关性算子的计算的流程。精排原子相关性算子之间均共享精排索引资源池中索引资源,精排特征中第一特征在计算过程中共享粗排原子相关性算子的计算,精排特征中第二特征在计算过程中共享精排原子相关性算子的计算。
200.综上,本技术的一种文档检索方法实施例二在方法实施例一的基础上增加了精排阶段,在精排阶段提取精排特征时共享粗排阶段的各原子相关性算子的计算结果和/或中间结果,并基于精排阶段专有的原子相关性算子所需的索引资源对索引资源库中粗排结果的文档进行一次i/o,生成精排资源池以进行共享,在计算精排特征向量计算过程中还共享精排阶段专有的原子相关性算子的计算结果和/或中间结果。通过共享上述i/o和原子相关性算子的计算结果和/或中间结果,提高文档检索在精排阶段的检索效率,进一步提升用户满意度。
201.下面基于图7a至图7e介绍本技术的一种文档检索方法的具体实施方式。
202.在介绍本技术实施例描述的文档检索方法之前,为了便于对技术方案的了解,首先对如图7b示出的实现该方法的一种构架进行介绍,如图7b所示,该构架具体构成可以如7b所示,相关概念,如包括的各个模块涉及的功能、作用或要求等,介绍如下:
203.1.索引资源池:用于将从索引资源库读取的索引资源缓存到内存,形成索引资源池,索引资源包括倒排索引和正排索引。通过索引资源池,可以实现相同的索引资源在索引资源池内只需要向索引资源库进行一次i/o读取,其中,索引资源池需要获取哪些索引资源,由过滤器模块和原子算子计算模块在开始执行查询前注册到索引资源池中。其中,该索引资源池的特性具体可包括:
204.a)原子相关性算子(si)和原子过滤器(filteri)在访问索引资源进行过滤和相关性算子计算前,会将执行查询过程中所需的倒排索引、正排索引资源注册到索引资源池,同一种资源拥有一个唯一标识,用于保证同样的资源只向索引资源库读取一次(即执行一次i/o)。
205.b)在执行查询的过程中,在处理一个文档前,索引资源池会从将从索引资源库读取的索引资源中该文档的索引数据读取到内存(即读入索引资源池),从而使得原子相关性
算子(si)和原子过滤器(filteri)可以直接以只读的方式访问索引池中的信息(通过标识来寻址)。因此,如果有多个原子相关性算子(si)和原子过滤器(filteri)访问同一个索引资源,他们可以共享索引资源池中的倒排资源,而不用重复从索引资源库中读取。
206.2.共享查询(sharedquery):在执行用户查询的查询语句前,检索引擎需要根据用户查询,生成一个查询执行计划,包括需要如何过滤文档以及如何计算相关性得分,该过程涉及用户查询词、所需的原子过滤器(filteri)、粗排特征和精排特征以及它们依赖的原子相关性算子(si),该查询执行计划通过sharedquery实现。sharedquery中包含检索引擎需要执行的那些与用户查询相关的全局静态信息。本实施例中,使用原子查询(qi)生成的原子过滤器(filteri)和原子相关性算子(si),通过访问索引资源池获得倒排资源和正排资源,以用于判断文档是否满足过滤条件以及计算相关性算子得分。其中,该sharedquery具体可涉及:
207.a)queries列表:为检索过程中所需的原子查询(qi)的列表。其中,每个原子查询(qi)都拥有一个sharedquery内唯一的名字qname(如图7b中左侧queries列表中定义了q1到q7七个不同的原子查询)。
208.b)features列表:当执行特征(feature)时,特征(feature)本质上是基于原子相关性算子(si)的结果或中间结果的聚合计算,因此特征(feature)执行依赖于原子相关性算子(si)。在执行两阶段检索前,定义features列表。其中一个特征(feature)定义为feature=《fname,values,exec(s)》,其中,该定义各项含义如下:
209.fname是当前sharedquery内唯一的特征(feature)名字;
210.values是一个字符串列表,标记该特征(feature)依赖于哪些原子查询(该原子查询qi已经在queries列表中定义);
211.exec(s)则是一个负责执行“基于这些依赖原子查询(qi)生成的原子相关性算子(si)产生的结果、中间结果,如何计算出该特征值”的执行函数定义,其中s是values中引用的原子查询(qi)在进行打分时生成的原子相关性算子(si)的集合。
212.c)过滤器(filter):用来过滤文档的复合过滤器执行计划,包括所使用的queries列表中定义的原子查询(qi)生成的原子过滤器(filteri),如何计算文档的过滤条件(图7b中展示的filter为q1和q3的对应的原子过滤器filter1和filter3条件取或之和,再和q6的对应的原子过滤器filter6条件取与,即粗排阶段相关文档需要满足q1或者q3的过滤条件,此外还必须满足q6的条件)。
213.d)粗排特征列表,标记features中哪些是粗排阶段计算相关性得分时需要的粗排特征。
214.e)精排特征列表,标记features中哪些时精排阶段需要在粗排topk结果上提取的精排特征。进一步可以分为第一特征和第二特征,且分别在不同阶段执行,其中:
215.第一特征:仅依赖粗排特征计算过程中使用到的原子相关性算子的那些精排特征,可以在粗排阶段执行;
216.l2精排特征:依赖一些在粗排特征计算过程中没有用到的原子相关性算子的精排特征,可以在精排阶段执行。
217.其中,第一特征可以在粗排阶段原子相关性算子(si)计算后,顺便计算出来,而无需再精排特征提取时重新读取索引资源计算这些相关性算子而引入额外i/o。而l2精排特
征则因为使用到粗排阶段未涉及的索引资源,因此适合在精排阶段时读取索引资源进行计算。
218.3.原子相关性算子池(scorer pool):在用户查询执行过程中,需要基于queries列表中的原子查询(qi)生成原子相关性算子(si)以及对应的原子过滤器(filteri),具体的,对于满足原子过滤器(filteri)条件(通过访问索引资源池中所需的倒排、正排索引资源,使用原子过滤器(filteri)判断是否命中的方式实现)的文档,可以使用原子相关性算子(si)进行相关性算子的计算,并记录计算各特征(feature)所需的中间结果。其中,该原子相关性算子池具体可涉及:
219.a)将各原子查询(qi)生成的原子相关性算子(si)维护在原子相关性算子池中,每个原子相关性算子(si)名称对应它们的原子查询(qi)的qname。例如,s1对应q1、s6对应q6。
220.具体可参见图7b所示,需要在粗排阶段执行的q1到q6生成了对应的s1到s6,s1到s6维护在scorer池中。
221.b)原子相关性算子池在生成后,会向索引资源池注册原子相关性算子池中各个原子相关性算子(si)所需索引资源。
222.4.文档过滤器(filter):使用索引资源池中读取的索引资源过滤满足条件的文档。其中,原子过滤器(filteri)可以直接读取索引资源池中的命中信息,判断是否满足原子过滤器(filteri)条件,而文档过滤器为复合过滤器,则以引用原子过滤器(filteri)判断结果的方式,判断是否满足复合过滤条件。其中,多个复合过滤器可以引用同一个原子过滤器(filteri)的判断结果,共享该原子过滤器(filteri)的输出。其中,该文档过滤器具体可涉及:
223.a)sharedquery中根据定义的过滤器的逻辑式,生成在粗排阶段过滤文档的文档过滤器。该文档过滤器引用在sharedquery中过滤器的逻辑式定义所需的原子查询(qi)生成原子相关性算子(si)对应的原子过滤器(filteri),并在它们的基础上实现复合过滤器(这些原子过滤器(filteri)以生成它们的原子查询(qi)的qname作为唯一标识符,文档过滤器通过引用这些qname来表达复合过滤逻辑)。
224.b)该复合过滤器在判断文档是否满足条件时,先执行原子过滤器(filteri)判断目标文档是否满足各个原子过滤器(filteri)的条件并记录下来,然后再执行复合过滤判断逻辑,而复合过滤逻辑执行时,可仅需要读取各个被引用的原子过滤器(filteri)的过滤结果,如果由多个复合过滤逻辑中使用到了相同qname的过滤逻辑,由于同一个qname的(filteri)可仅执行一次,不会引入对索引资源库的冗余i/o。
225.5.特征执行器(leaffeature):其中,特征计算依赖原子相关性算子(si)的输出和记录的中间结果。多个特征(fi)可以依赖同一个原子相关性算子(si)计算的输出和中间结果,即共享相关性算子(si)的执行结果。本技术实施例中,将原子相关性算子(si)的计算和特征(fi)的计算分离开来,可以理解为分两步执行:首先,原子相关性算子(si)首先计算,并记录各自执行输出和特征(fi)所需的额外中间结果,然后,特征(fi)引用所需原子相关性算子(si)的输出、中间结果作为特征(fi)计算输入,在计算特征值时读取这些输入,计算特征值。具体的:
226.a)与原子查询(qi)可仅“定义怎么做而与具体索引数据无关”一样,特征(fi)也是如此,可仅定义“引用queries列表中的哪些原子查询(qi),以及定义特征值如何计算,与具
体数据无关”。就像可基于原子查询(qi)生成原子过滤器(filteri)和原子相关性算子(si)来读取具体数据执行过滤和打分一样,可以基于特征(fi)可以生成对应的特征执行器leaffeature,由该leaffeature负责计算满足待处理文档的特征值。
227.b)leaffeature生成的时机,可以在原子相关性算子池生成之后。在生成时,leaffeature会绑定特征(fi)引用的那些原子查询(qi)生成的原子相关性算子(si)。
228.c)在leaffeature计算某个文档在对应特征(fi)上的取值时,查询流程会确保原子相关性算子池中的原子相关性算子(si)已经基于当前文档得出其最终结果并记录必要中间结果,leaffeature只需要通过其feature定义的三元组中的exec(s)的执行函数定义,将绑定的原子相关性算子(si)集合输入exec中,exec会从原子相关性算子池中读取缓存的原子相关性算子(si)的计算结果、中间结果,并基于它们计算得出该特征(fi)的值。
229.例如在图7b中feature 2引用了q2,q5,q6,在生成leaffeature2时,leaffeature2绑定q2,q5,q6生成的s2,s5,s6,exec(s)=score(s2)+score(s5)+score(s6)。其中,score(s)代表从打分器s中获取缓存的doc的相关性算子得分。
230.6.执行规划:对于sharedquery中定义的features列表,需要判断features列表中每个特征(fi)分别应当在粗排阶段或细排阶段中的哪个阶段执行,避免冗余的索引资源i/o、计算。判断逻辑可以如下:
231.i.设q
α
为粗排特征引用的原子查询集合,f
α
,s
α
分别为q
α
生成的原子过滤器集合和原子相关性算子集合,另f
α
,s
α
需要访问的索引资源集合为r
α

232.ii.设第一特征,第二特征引用原子查询集合分别为q
β1
,q
β2
,对应的,有s
β1
,r
β1
,s
β2
,r
β2

233.iii.粗排特征需要在粗排阶段执行,因此其引用的q
α
需要在粗排阶段执行,即粗排阶段需要读取r
α
并执行f
α
,s
α

234.iv.对于一个精排特征,如果它引用的原子查询生成的原子过滤器和原子相关性算子所要访问的索引资源是r
α
的子集,则该特征属于第一特征,否则便属于第二特征。
235.第一特征可以在粗排阶段执行,而第二特征可以在精排阶段单独执行。
236.7.粗排阶段(或称query阶段):负责执行粗排阶段所需的打分、特征提取逻辑。即针对粗排阶段需要处理的文档所执行了逻辑,该执行逻辑可以如下:
237.i.生成索引资源池,索引资源池从索引资源库读取粗排原子过滤器和原子相关性算子所需倒排、正排索引资源。例如,读取上述执行规划中r
α
索引资源在该文档上的取值,即读取所需的倒排索引和正排索引资源。
238.ii.读取索引资源池中r
α
索引数据,执行原子过滤器中的f
α
,调用文档过滤器,基于各f
α
判断文档是否满足复合过滤条件。
239.iii.若满足过滤条件,则原子相关性算子池中的s
α
读取索引资源池中r
α
取值,计算s
α
中各个结果并记录特征感兴趣的中间结果。
240.iv.计算粗排特征值,例如计算图7b中的f1、f2、f4。
241.v.利用粗排特征值计算粗排得分:使用文档粗排特征作为输入,计算相关文档的粗排得分。
242.vi.若文档可能进入topk,则执行s
β1
并计算第一特征并记录结果,其中执行s
β1
时资源池无需额外读取r
β1
。因为
243.8.精排阶段(或称fetch阶段):负责执行精排特征提取阶段所需的第二精排特征值,即针对粗排阶段topn结果,执行下述逻辑:
244.i.索引资源池从索引资源库读取r
β2
索引在该文档上的取值。
245.ii.读取索引资源池中r
β2
索引数据,计算原子相关性算子池中的s
β2
,并计算第二精排特征值。
246.9.结果聚合:
247.对于每个属于topn的文档,执行第二精排特征后,聚合模块将粗排阶段记录下来的第一特征值与第二精排特征结果合并为完整的特征向量,输入到精排模型进行重排序后,作为两阶段检索的输出之一。
248.下面,进一步结合7a至图7e,对本技术的文档检索方法的一种具体实施方式进行详细介绍:
249.【一种文档检索方法的具体实施方式】
250.一种文档检索方法的具体实施方式在检索服务器420上运行,且为分布式部署,检索服务器420包括协调节点和若干数据节点,数据节点存储有本地的索引资源库,进行本地粗排检索和精排检索,协调节点基于各数据节点的本地检索结果,形成全局检索结果。在数据节点进行本地检索以前,下面集合图7a至图7e对该具体实施方式进行说明。
251.该具体实施方式以方法实施例二为例,采用elasticsearch+learning to rank plugin两阶段的方法进行检索。图7a示出了该具体实施方式的详细流程,包括步骤s710至s790。
252.s710:检索服务器获取检索语句。
253.其中,检索语句为用户通过一检索客户端输入的句子或词,当输入的词为多个时,可以以空格、逗号或顿号等标点符号进行词语之间的间隔。检索条件还可以为带逻辑表达式的词。
254.当检索条件为句子时,通过对句子进行分词提取出该句子包含的各词。
255.其中,检索服务器为任一数据节点或协调节点,可以选择最靠近检索客户端410的数据节点。
256.s720:检索服务器根据检索语句生成全局的共享查询(sharedquery)。
257.其中,该全局的共享查询的内容包括:
258.执行检索所需的各个原子查询(qi)、定义的各个特征(fi)、并标记粗排阶段涉及的特征(fi)的列表,以及精排阶段所涉及的特征(fi)的列表,复合过滤器的执行计划(filter)。图7b示出了全局的共享查询和节点的共享查询的内容,下面结合本具体实施方式一一详细介绍。
259.其中,各个特征包括粗排特征向量中的粗排特征和精排特征向量中的精排特征,精排特征向量分为第一特征向量和第二特征向量。为了描述方面,在本具体实施方式的后续描述中,粗排特征向量用粗排特征列表表示,精排特征向量用精排特征列表表示,第一特征向量用l1特征列表表示,第二特征向量用l2特征列表表示。
260.图7c示出了本步骤的全局的共享查询的构建方法的流程,包括下述步骤s721至s724。
261.s721:根据用户输入的检索语句的各词,生成若干个原子查询。
262.其中,原子查询按照elasticsearch的方法生成。该若干个原子查询可以以原子查询列表的方式存储。
263.本具体实施方式中,如图7b所示,生成了q1-q7这7个原子查询。
264.s722:创建各个特征(fi),并为每个特征定义了一函数。
265.其中,各个特征(fi)根据用户输入的检索语句利用elasticsearch+learning to rank plugin的方法生成。
266.其中,所定义的函数描述了通过至少一个原子查询(qi)所对应的原子相关性算子(si)获得该特征的算法,每个原子相关性算子(si)会对应一个原子查询(qi)。由于打分树基于查询树获得,因此每个原子相关性算子(si)会对应一个原子查询(qi)。
267.本具体实施方式中,如图7b所示,创建的特征包括f1-f6这6个特征。特征f1的定义为《f1,value[q1],position》,表示特征f1基于q1对应的s1输出的关键词位置计算特征值。特征f2的定义为《f2,value[q6,q2,q5],sum》,表示特征f2基于q6、q2、q5对应的s7、s2、s5,以s7、s2、s5得分求和的方式计算特征值。特征f5的定义为《f5,value[q1,q4],ax+by》,表示基于q1、q4对应的s1、s4,以as1+bs4的函数计算特征值。
[0268]
s723:创建文档过滤器(filter)的逻辑式,包括由逻辑表达式和过滤对象构成的逻辑式,过滤对象为所使用的上述至少之一的原子查询(qi)。
[0269]
本例中,如图7b所示,创建的文档过滤器(filter)的逻辑式为:(q1||q3)&&q6,表示该文档过滤器是q1和q3的过滤器条件取或之和,再和q6的过滤器条件取与。
[0270]
s724:标记粗排特征向量、精排特征向量中的第一特征向量和第二特征向量。
[0271]
其中,粗排特征列表用于标记上述哪些特征(fi)是粗排阶段计算相关性得分时需要的特征。如图7b所示,粗排特征列表为[f1,f2,f4],即在粗排阶段计算相关性得分时,涉及到f1、f2和f4。
[0272]
精排特征列表用于标记上述哪些特征(fi)是精排阶段需要在粗排topn结果上提取的特征。如图7b所示,精排特征列表为[f3,f5,f6],即在精排排阶段计算相关性得分时,涉及到f3、f5和f6。
[0273]
其中,精排特征列表包含的l1特征列表用于记录在粗排阶段执行所包含的特征的计算,包含的l2特征列表用于记录在精排阶段执行所包含特征的计算。如图7b所示,l1特征列表涉及到f3和f5,l2特征列表涉及到f6。
[0274]
其中,精排特征列表包含的l1特征列表中记录的特征(fi)所涉及的各个原子查询(qi),是粗排特征列表中记录的特征(fi)所涉及的各个原子查询(qi)的子集,如图7b所示,l1特征列表涉及的原子查询包括q1、q3和q4,l2特征列表涉及的原子查询包括q7。
[0275]
s730:检索服务器通过协调节点,向各数据节点发送所创建的全局的共享查询(sharedquery)。
[0276]
本具体实施方式中,数据节点为分布部署,每个数据节点分别对不同的节点索引资源进行查询,每个数据节点的节点索引资源包括该数据节点上的文档的倒排索引资源和正排索引资源等。
[0277]
s740:各个数据节点执行粗排阶段查询,并返回查询结果。
[0278]
其中,该查询结果包括数据节点粗排阶段的topk的文档和这些文档的相关性得分,还包括这些文档的l1特征值和l2特征涉及的粗排阶段的。其中,对于每个数据节点来
说,所执行的步骤包括下述子步骤s741-s746:
[0279]
s741:数据节点基于全局的共享查询(sharedquery)中的粗排阶段原子查询(qi)信息,生成粗排阶段的各个原子相关性算子(si)和原子过滤器(filteri)。
[0280]
其中,在生成各原子相关性算子(si)时为粗排阶段标记的各粗排特征(fi)定义涉及的原子相关性算子(si),其中部分原子相关性算子(si)也可以是精排阶段标记的各l1特征(fi)定义涉及的原子相关性算子(si)。如图7b所述,粗排特征列表为[f1,f2,f4],根据粗排特征的f1、f2和f4特征的定义涉及的原子相关性算子为s1-s6,未涉及s7,故所生成的原子相关性算子包括s1-s6,根据l1特征的f3和f5特征涉及的原子相关性算子为s1、s3和s4。其中,各个si可以以原子相关性算子池(scorer pool)的方式存储。
[0281]
其中,根据文档过滤器(filter)的逻辑式(q1||q3)&&q6获得的原子过滤器包括filter1、filter3、filter6,分别对应原子查询q1、q3、q6,也对应原子相关性算子s1、s3、s6。
[0282]
s742:根据各原子相关性算子(si)、各原子过滤器(filteri)所需要的索引资源,从数据节点的索引资源库获取相应的索引资源,并缓存形成粗排索引资源池。这里的索引资源包括倒排索引资源和正排索引资源。
[0283]
本步骤具体的可为:首先,创建粗排索引资源池,并由各原子相关性算子(si)、各原子过滤器(filteri)向粗排索引资源池注册所需的资源;然后,根据注册的所需的资源从索引资源库中读取所需的索引资源并缓存。
[0284]
由上,当不同的原子相关性算子、不同的原子过滤器涉及相同的某索引资源时,只需访问索引资源库一次、缓存入索引资源池即可,后续可从索引资源池获取该索引资源,不需重复访问索引资源库来获取该索引资源。
[0285]
s743:根据文档过滤器(filter)的逻辑式,根据逻辑式中的过滤对象(即原子查询)绑定对应的原子过滤器(filteri),生成文档过滤器。
[0286]
如图7b所示,本具体实施方式中绑定原子过滤器filter1、filter3、filter6后,生成的文档过滤器为:(filter1||filte3)&&filte6。
[0287]
s744:根据各个特征(fi)的定义,根据定义中的各个原子查询(qi)绑定对应的原子相关性算子(si),生成各个特征计算器(leaffeaturei)。
[0288]
如图7b所示,本具体实施方式中根据f1的定义,绑定原子过滤器q1对应的原子相关性算子s1后,生成的特征计算器leaffeature1=position(s1),其中position表示位置函数。又如根据f2的定义,绑定原子过滤器q2、q5、q6对应的原子相关性算子s2、s5、s6后,生成的特征计算器leaffeature2=score(s2)+score(s5)+score(s6)。
[0289]
s745:获取粗排索引资源池中的各文档,依次进行粗排阶段的筛选、打分、排序和l1特征计算,并输出粗排阶段的相关结果。
[0290]
其中,在所注册的索引资源中,各个倒排列表记录有文档标识(doc id),故可获取到可能满足文档过滤器的每篇文档标识。图7d示出了本步骤的针对每篇文档标识依次执行筛选、打分、排序和l1特征计算的流程,包括步骤s74501-s74510:
[0291]
s74501:获取当前一个待处理的文档标识即目标文档,从粗排索引资源池的索引资源中获取包含该目标文档的各索引资源。
[0292]
s74502:执行各原子过滤器(filteri),得到目标文档的各原子过滤器的原子过滤
结果。
[0293]
本具体实施方式中,即得到目标文档基于filter1、filte3、filte6的过滤结果。
[0294]
s74503:执行文档过滤器,即基于各原子过滤器(filteri)的过滤结果,根据文档过滤器的逻辑式(逻辑式即复合过滤条件)进行逻辑运算,得到针对该目标文档的过滤结果。
[0295]
本具体实施方式中,通过文档过滤器的逻辑式(filter1||filte3)&&filte6,得到该目标文档的过滤结果。
[0296]
s74504:判断目标文档是否命中,若命中,则执行下一步,否则运行步骤s74510。
[0297]
若步骤s74503过滤结果为空,则表示该目标文档不满足文档过滤器的复合过滤条件,即该文档未被命中。
[0298]
s74505:执行粗排阶段的各原子相关性算子(si),包括从粗排索引资源池中获取该目标文档的正排索引资源和该目标文档在倒排列表中的倒排索引资源进行打分,为便于描述,这里称为原子打分。在原子打分过程中,在原子相关性算子池中保存各原子相关性算子(si)的计算结果和/或中间结果,为便于后续共享。
[0299]
本具体实施方式中,即执行各原子相关性算子s1-s6,分别由s1-s6进行原子打分,得到各原子相关性算子的计算结果和中间结果,并保存该计算结果和中间结果在原子相关性算子池中。
[0300]
s74506:执行粗排阶段的各特征计算器(leaffeaturei),即基于各原子相关性算子的计算结果和/或中间结果,根据粗排阶段的特征计算器(leaffeaturei)的函数式,获得对应的各个特征(fi)的特征值。
[0301]
其中,所基于的原子相关性算子(si)的计算结果和/或中间结果直接从原子相关性算子池中获取。
[0302]
本具体实施方式中,根据粗排特征列表,获得粗排阶段所要涉及的特征f1、f2、f4,会利用步骤s744中粗排阶段所使用的特征计算器leaffeature1、leaffeature2、leaffeature4,导入各原子相关性算子(si)的计算结果计算出各个特征值,分别计算出f1、f2、f4对应的特征值。
[0303]
s74507:根据各个粗排特征值,计算该目标文档的粗排阶段的相关性得分。
[0304]
其中,该粗排阶段的相关性得分基于一系列的预定义算法计算,该预定义算法以涉及的组排特征列表中各特征的特征值为输入,输出为粗排阶段的相关性得分。
[0305]
s74508:判断该目标文档的粗排阶段的相关性得分是否高于当前的topk排名,如果高于当前的topk排名,则执行下一步,否则运行步骤74510。
[0306]
其中,topk小于或等于topn,topk的数量基于数据节点的数量和topn而确定。
[0307]
s74509:将目标文档纳入topk排名,刷新topk排名,并计算该目标文档的精排特征列表中的l1特征列表包含的各特征值。
[0308]
其中,l1特征值也可以在精排阶段计算。
[0309]
其中,l1特征列表中的各特征计算涉及的各si是粗排特征列表各特征计算涉及的各si的子集,故对l1特征列表中的各特征进行计算时,可以读取粗排索引资源池中的资源以及所缓存的si的计算结果和/或中间结果,无需额外i/o。
[0310]
本具体实施方式中,精排特征列表中的l1特征列表中包括f3和f5,计算f3和f5特
征值所需的s1、s3、s4已经在上述步骤s74505的计算过,因此可参照步骤s74506的原理,将所需的s1、s3、s4的计算结果和/或中间结果导入到f3和f5对应的leaffeature3和leaffeature5中,计算出f3和f5对应的特征值。
[0311]
s74510、判断粗排索引资源池是否有未经上述处理过的文档,如果有,则返回步骤s74501,读取下一篇文档标识,否则执行s74511。
[0312]
s74511、此时,数据节点已经获得该节点的topk的文档、这些文档的粗排阶段的相关性得分、以及这些文档的l1特征列表中的各特征值,数据节点将topk文档及对应的粗排阶段的相关性得分作为查询结果发送给协调节点。
[0313]
s750:协调节点聚合各个数据节点的查询结果后,生成全局查询结果,并发送至各数据节点。
[0314]
其中,协调节点根据各数据节点提供的各topk的文档在的粗排阶段的相关性得分排序,选择其中的topn的文档作为全局查询结果。
[0315]
其中,协调节点也可以将所述topn文档相关的数据节点发送所述topn文档,相关的数据节点指的是其所发送的topk文档与topn文档有交集的数据节点。
[0316]
s760:收到所述全局查询结果的数据节点,根据其上报的topk文档、收到的topn文档,取交集获得topx文档,作为要执行精排阶段的文档。然后执行以下步骤s761-s765:
[0317]
s761:根据精排特征列表的l2列表,基于该l2列表中的各特征(fi)的定义中涉及的原子查询(qi),生成原子相关性算子(si),并确定其中精排原子相关性算子(si)。
[0318]
其中,精排原子相关性算子(si)为不属于粗排阶段使用的原子相关性算子(si)。
[0319]
本具体实施方式中,l2列表中包括f6,根据f6的定义《f6,values[q7],sum》可知,特征f6的特征值是基于q7对应的原子相关性算子s7进行计算,故基于q7生成对应的s7。
[0320]
s762:从数据节点的索引资源库获取topx文档的精排原子相关性算子(si)所需索引资源,并缓存入精排索引资源池。
[0321]
本具体实施方式中,精排索引资源池中缓存有的s7对应的索引资源,包括topx文档的s7涉及倒排列表中倒排索引资源和正排索引资源。
[0322]
在其他实施例中,也可以继续使用粗排索引资源池中缓存新注册的索引资源。
[0323]
s763:根据l2列表中的各个特征(fi)的定义,根据定义中的各个原子查询(qi)绑定对应的原子相关性算子(si),生成l2列表中的各个特征计算器(leaffeaturei)。具体可参考上述步骤s744,不再赘述。
[0324]
本具体实施方式中,生成leaffeature6,用于后续步骤中计算特征f6的特征值。
[0325]
s764:针对topx中的每篇文档,依次获得精排阶段l2列表中的各个特征的特征值。图7e示出了本步骤的详细流程,包括步骤s76401-s7640。
[0326]
s76401:获取topx中当前处理的文档标识,即目标文档,从索引资源池的索引资源中获取包含该目标文档的各正排索引资源、倒排索引资源。
[0327]
s76402:针对步骤s761确定的精排原子相关性算子(si),执行这些原子相关性算子(si)进行原子打分,具体可参考上述步骤s74505,不再赘述。
[0328]
s76403:执行l2列表中涉及的各特征计算器(leaffeaturei),获得对应的各个特征的特征值,具体可参考上述步骤s74506,不再赘述。
[0329]
本具体实施方式中,执行leaffeature6,计算出f6对应的特征值。
[0330]
s76404:数据节点已经获得所有topx文档的l2特征列表中的各特征值,数据节点将topx文档的精排阶段的l2特征列表的各特征值发送给协调节点。
[0331]
s770:协调节点收集到各个数据节点发送的topx子集的l2列表中的特征的特征值,形成所述topn文档,对于topn中的每个文档,将缓存的l1特征向量和收到的l2特征向量合并为完整的精排特征向量。
[0332]
s780:协调节点根据topn文档的精排特征向量进行排序,从中选择topm的文档为最终搜索结果。
[0333]
其中,可以将topn中的各个文档的精排特征向量输入排序模型(ltr,learning to ranking),由排序模型计算的得分进行排序。
[0334]
s790:协调节点将所述最终搜索结果返回检索服务器,并通过检索服务器发送至检索客户端,以在客户端进行展示。
[0335]
【装置实施例一】
[0336]
一种文档检索装置实施例一执行方法实施例一的方法。
[0337]
图8a示出了装置实施例一的结构,可应用于粗排阶段,包括:获取模块810、共享查询构建模块820、过滤模块830、打分模块840、粗排排序模块850。在一些实施例中,分数据节点进行粗排节点的文档过滤和打分时,装置实施例一还包括聚合模块。
[0338]
获取模块810执行方法实施例一步骤s510的方法,用于获取检索语句。
[0339]
共享查询构建模块820执行方法实施例一步骤s520的方法,用于基于检索语句生成过滤器和打分器。
[0340]
获取模块810还执行方法实施例一步骤s530的方法,用于访问索引资源库,获取过滤器和所述打分器所需的索引资源,形成粗排索引资源池。
[0341]
过滤模块830执行方法实施例一步骤s540的方法,用于基于粗排索引资源池中的索引资源,过滤出符合所述过滤器要求的文档。
[0342]
打分模块840执行方法实施例一步骤s550的方法,用于根据过滤出的文档进行相关性得分计算,相关性得分基于所述文档的粗排特征向量计算,粗排特征向量基于打分器计算。
[0343]
粗排排序模块850执行方法实施例一步骤s550的方法,用于根据所述相关性得分选取文档,所选取的文档作为粗排阶段的检索结果。
[0344]
在一些实施例中,分数据节点进行粗排节点的文档过滤和打分时,聚合模块对数据节点的打分模块840选择的文档进行聚合,生成粗排阶段的全局检索结果。
[0345]
在一些实施例中,所述打分器包括原子相关性算子,所述文档过滤器包括原子过滤器,所述获取所述文档过滤器和所述打分器所需的索引资源包括:获取所述原子相关性算子所需的索引资源和所述原子过滤器所需的索引资源。
[0346]
在一些实施例中,所述过滤模块830具体用于基于所述粗排索引资源池中的索引资源,初次过滤出符合各所述原子过滤器要求的文档;所述过滤模块830还具体用于针对所述初次过滤出的文档,过滤出符合所述文档过滤器要求的文档,所述文档过滤器描述了多个原子过滤器的组合逻辑。
[0347]
在一些实施例中,所述打分模块840在计算所述粗排特征向量时,具体用于基于各所述原子性相关算子的计算结果计算所述粗排特征向量;其中所述粗排特征向量的计算过
程中,共享使用所述原子相关性算子的计算结果。
[0348]
在一些实施例中,所述原子相关性算子包括所述粗排阶段中计算所述粗排特征向量所使用的原子相关性算子。
[0349]
【装置实施例二】
[0350]
一种文档检索装置实施例二执行方法实施例二的方法。
[0351]
图8b示出了装置实施例二的结构,在装置实施例一的模块的基础上,还可应用于精排阶段,增加了特征提取模块860和精排排序模块870。下面进行说明。
[0352]
共享查询构建模块820还执行方法实施例二步骤s620的方法,用于根据检索语句生成文档过滤器、打分器和精排特征执行器。
[0353]
获取模块810还执行方法实施例二步骤s6270的方法,用于访问索引资源库,获取第二特征向量的原子相关性算子所需的索引资源,并形成精排索引资源池。
[0354]
特征提取模块860执行方法实施例二步骤s680的方法,用于针对粗排阶段的检索结果中的文档,获得各文档的精排特征向量,精排特征向量基于原子性相关算子的计算结果和/或中间结果而计算。
[0355]
特征提取模块860包括第一特征提取模块8610和第二特征提取模块8620。
[0356]
第一特征提取模块8610用于提取精排特征向量中的第一特征向量,计算第一特征向量所基于的原子性相关算子属于粗排特征向量计算时使用的原子性相关算子。在计算第一特征向量的过程中,共享所基于的原子相关性算子的计算结果和/或中间结果。
[0357]
第二特征提取模块8620用于提取精排特征向量中的第二特征向量,计算所述第二特征向量所基于的原子性相关算子包括粗排特征向量计算时未使用过的原子性相关算子,在计算第二特征向量的过程中,共享该未使用过的原子相关性算子的计算结果和/或中间结果。
[0358]
在一些实施例中,第一特征提取模块8610在粗排阶段执行,在另一些实施例中,第一特征提取模块8610在精选阶段执行。当第一特征提取模块8610在粗排阶段执行时,还包括特征聚合模块,用于把第一特征向量和第二特征向量进行合并,形成精排特征向量。
[0359]
精排排序模块870用于由排序模型基于精排特征向量选取文档,所选取的文档作为精排阶段的检索结果。
[0360]
在一些实施例中,所述获取模块810还用于访问所述索引资源库,获取所述未使用过的原子相关性算子的索引资源,所述索引资源形成精排索引资源池;所述第二特征提取模块8620在计算所述未使用过的原子相关性算子的计算结果和/或中间结果时,基于所述精排索引资源池的索引资源而计算。
[0361]
【有益效果分析】
[0362]
1、本技术实施例基于共享的索引资源池,减少了对索引资源库的i/o访问,可以避免因重复对索引资源库进行i/o访问导致的时间的消耗,解决图3中虚线箭头示出的重复i/o问题,提高了检索的效率。
[0363]
2、本技术实施例中,基于相关性原子算子进行原子打分的共享,以用于各个特征值的计算,以及各个特征值可以共享,用于相关性得分的计算,通过这些共享,可以有效避免计算过程中的重复计算,解决图3计算层中虚线示出的重复计算问题,从而降低了计算时间,提高了检索的效率。
[0364]
3、本技术实施例中的相关性得分的计算方法,更为灵活,不仅可以实现基于打分树的得分计算结果,还可以实现条件判断、复杂数学逻辑等得分计算方式,更加的灵活。具体分析如下:
[0365]
如图5c所示,对本技术的相关性得分进行介绍,可以是粗排阶段的相关性得分,或精排阶段的相关性得分。本技术实施例中,从特征(feature)的定义来看,特征本质上是基于原子相关性算子(si)的结果或中间结果的聚合计算。因此可以用特征(fi)代替第一层复合相关性算子(直接与叶子节点相邻的),更高层的复合关系则可以使用特征之间的计算来代替。因此,本发明提出利用共享特征(fi)作为输入来计算粗排得分的计算方式。
[0366]
其中,以计算粗排得分未例,来说明本技术实施例使用基于特征的计算方式也可以实现打分树方案的全部功能,如图5c所示是的粗排得分计算公式为score=max(max(a1,a2),(a2+a3)*a3),左侧是现有方案中,使用打分树自底向上计算,根节点得分为相关文档的相关性得分,该方案中需要重复计算原子相关性算子a2和a3,引入额外计算量和i/o。而在右侧本方案中,则直接使用特征(f1到f3)作为输入,计算粗排得分,转化过程如下(注:这里展示的是本技术实施例中以特征作为输入的粗排得分计算可以实现基于打分树的粗排得分计算,并不限定本技术实施例的粗排得分计算需要从打分树转化):
[0367]
将与原子相关性算子相邻的复合相关性算子定义为如下三个共享特征,使用特征来替代这些复合相关性算子,则可以观察到,f1、f2、f3在计算过程中,原子相关性算子a1,a2,a3仅需要计算1次:
[0368]
f1=max(a1,a2);
[0369]
f2=sum(a2,a3);
[0370]
f3=a3。
[0371]
粗排得分则定义为特征之间的计算,当定义为score=max(f1,f2*f3)时,可以看到,该打分方式可以替代基于打分树对粗排得分的计算。此外,本方案在使用特征作为输入来计算粗排相关性得分时,不仅可以实现基于打分树相同的功能,还可以实现条件判断、复杂数学逻辑等一系列编程语言级别的自由程度的得分计算方式,相比打分树方案则更加的灵活。
[0372]
4、提供了一种新的精排特征的获得方式,本技术实施例中,将精排特征分为l1特征、l2特征,可以实现,在粗排阶段就可以使用粗排阶段中的数据计算部分精排特征(即l1特征,图7b中示出的f3和f5),而后将l1特征、精排阶段计算的l2(图7b中示出的f6)特征结合的方式来生成精排特征。可见,实现了l1特征提取与粗排阶段相关性得分计算之间共享资源。
[0373]
【计算设备实施例】
[0374]
图9是本技术实施例提供的一种计算设备900的结构性示意性图。该计算设备900包括:处理器910、存储器920、通信接口930。
[0375]
应理解,图9所示的计算设备900中的通信接口930可以用于与其他设备之间进行通信。
[0376]
其中,该处理器910可以与存储器920连接。该存储器920可以用于存储该程序代码和数据。因此,该存储器920可以是处理器910内部的存储模块,也可以是与处理器910独立的外部存储模块,还可以是包括处理器910内部的存储模块和与处理器910独立的外部存储
模块的部件。
[0377]
应理解,在本技术实施例中,该处理器910可以采用中央处理模块(central processing unit,cpu)。该处理器还可以是其它通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是常规的处理器等。或者该处理器910采用一个或多个集成电路,用于执行相关程序,以实现本技术各实施例所提供的技术方案。
[0378]
该存储器920可以包括只读存储器和随机存取存储器,并向处理器910提供指令和数据。处理器910的一部分还可以包括非易失性随机存取存储器。例如,处理器910还可以存储设备类型的信息。
[0379]
在计算设备900运行时,所述处理器910执行所述存储器920中的计算机执行指令执行上述方法的操作步骤。
[0380]
应理解,根据本技术实施例的计算设备900可以对应于执行根据本技术各实施例的方法中的相应主体,并且计算设备900中的各个模块的上述和其它操作和/或功能分别为了实现本技术实施例各方法的相应流程,为了简洁,在此不再赘述。
[0381]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0382]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0383]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0384]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0385]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0386]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0387]
【存储介质实施例】
[0388]
本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行本技术各个实施例所描述的方案中的至少之一。
[0389]
本技术实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0390]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中连接了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0391]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0392]
可以以一种或多种程序设计语言或其组合来编写用于执行本技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0393]
注意,上述仅为本技术的较佳实施例及所运用的技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术的构思的情况下,还可以包括更多其他等效实施例,均属于本技术的保护范畴。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1