基于网页库进行检索的方法、装置及检索系统与流程

文档序号:12802722阅读:217来源:国知局
基于网页库进行检索的方法、装置及检索系统与流程

本发明涉及网页搜索领域,特别是涉及一种基于网页库进行检索的方法、装置及检索系统。



背景技术:

为满足网页检索结果的时效性需求,通常要求网页搜索引擎具有实时索引更新及实时结果检索的能力。由于索引数据中不断有新增、修改及删除的网页,使得基于相同查询语句的检索结果也会随时间变化。此时,对检索结果进行缓存,则会在一定程度上影响检索结果的时效性,从而难以满足用户的实时检索需求。而如果放弃对检索结果的缓存或者缩短缓存时间,则将直接导致检索性能下降,检索平均延迟上升,并消耗更多的计算资源,增加硬件成本。

针对上述问题,业界通常将网页库的更新拆分成批量更新和实时更新两类集群,需要实时更新的网页存入实时更新集群,其它网页存入批量更新集群,批量更新集群固定一段时间更新一次。在检索过程中,需要合并两个集群的检索结果,并去掉重复的结果,最终选择排名靠前的n个结果返回给用户。由此,可以在一个较短时间内缓存批量更新集群的检索结果,在下一次批量更新完成时,所缓存的结果全部失效。这种分集群的检索方案,能在一定程度上提升性能,但存在两个明显的不足:增加了集群管理、运维的复杂度;批量更新发生时,所有缓存结果集中失效,性能下降,集群出现延迟抖动,同时影响检索的稳定性。

由此,需要一种可以满足检索结果的实时性需要的同时,可以对检索结果进行长期缓存,从而可以提升检索引擎的性能并降低硬件成本消耗的新的检索方案。



技术实现要素:

本发明的主要目的在于提供一种基于网页库进行检索的方法、装置及检索系统,其能够在满足检索结果的实时性需要的同时,可以对检索结果进行长期缓存,从而可以提升检索引擎的性能并降低硬件成本消耗。

根据本发明的一个方面,提供了一种基于网页库进行检索的方法,其中,网页库按更新时间分成多个索引段,该方法包括:响应于查询请求,查找缓存中是否存在与查询请求相对应的缓存结果;在缓存中查找到缓存结果的情况下,在网页库中查找最后更新时间晚于缓存结果所对应的查询时间的索引段;在查找到的索引段内进行检索,以得到检索结果;基于检索结果和缓存结果,生成结果集;将结果集与接收到查询请求时的查询时间关联地保存到缓存中;以及将结果集返回给用户。

由此,索引段可以实时更新,在接收到用户的查询请求后,可以仅在更新时间晚于本次查询请求的查询时间的索引段内进行检索,从而可以在满足检索结果实时性需求的同时,提升检索效率。并且可以根据最终的检索结果更新缓存,从而可以提升缓存命中率。

优选地,该方法还可以包括:在缓存中未查找到缓存结果的情况下,基于查询请求,在网页库中进行检索。

由此,在缓存中未查找到缓存结果的情况下,可以按照现有的查询方式在整个网页库中进行检索,并且可以将检索得到的结果保存到缓存中。

优选地,将结果集与查询请求的查询时间关联地保存到缓存中的步骤可以包括:将结果集中的文档的文档id、作为排序依据的文档分数以及接收到查询请求时的查询时间,作为与查询请求相对应的缓存结果,保存到缓存中。

优选地,基于检索结果和缓存结果生成结果集的步骤可以包括:在更新时间早于缓存结果所对应的查询时间的索引段的文档id索引中进行查询,以得到与缓存结果中的文档id相同的文档id;将查询到的文档id加入检索结果,得到结果集。

由此,可以根据缓存结果中的文档id,在更新时间早于缓存结果所对应的查询时间的索引段的文档id索引中进行检索,以剔除已经被删除或无效掉的文档id。

优选地,索引段具有倒排索引和文档id索引,该方法还可以包括以下步骤中的至少一项:响应于在最新索引段内添加新文档,更新索引段的倒排索引,并在对应于该索引段的时间序列中依次记录更新时间,作为索引段的最后更新时间;响应于索引段内的有效文档数量超过第一预定阈值,新建索引段,作为新的最新索引段,将新文档存储在新的最新索引段内;响应于删除文档的指令,在文档id索引中对被删除的文档的文档id做删除标记;响应于非最新索引段内的有效文档数量减小到小于第二预定阈值,将非最新索引段内的所有有效文档添加到最新索引段内,并废弃非最新索引段;以及响应于更新文档的指令,在包含原文档的索引段中删除原文档,在最新索引段中添加新文档。由此,可以基于预定的规则对索引段进行更新维护。

优选地,网页库可以分成多个索引块,每个索引块可以按更新时间分成多个索引段。由此,可以基于预定的规则将网页库划分成不同的索引块,不同的索引块可以对应不同的搜索服务器。

根据本发明的另一个方面,还提供了一种基于网页库进行检索的装置,其中,网页库按更新时间分成多个索引段,该装置包括:第一查找单元,用于响应于查询请求,查找缓存中是否存在与查询请求相对应的缓存结果;第二查找单元,用于在第一查找单元在缓存中查找到缓存结果的情况下,在网页库中查找更新时间晚于缓存结果所对应的查询时间的索引段;检索单元,用于在查找到的索引段内进行检索,以得到检索结果;结果集生成单元,用于基于检索结果和缓存结果,生成结果集;保存单元,用于将结果集与接收到查询请求时的查询时间关联地保存到缓存中;以及返回单元,用于将结果集返回给用户。

优选地,在缓存中未查找到缓存结果的情况下,检索单元可以基于查询请求,在网页库中进行检索。

优选地,保存单元可以将结果集中的文档的文档id、作为排序依据的文档分数以及接收到查询请求时的查询时间作为与查询请求相对应的缓存结果,保存到缓存中。

优选地,结果集生成单元可以包括:查找模块,用于在更新时间早于缓存结果所对应的查询时间的索引段的文档id索引中进行查询,以得到与缓存结果中的文档id相同的文档id;生成模块,用于将查询到的文档id加入检索结果,以得到结果集。

优选地,索引段可以包括倒排索引和文档id索引,该装置还可以包括索引段维护单元,用于执行以下操作中的至少一项:响应于在最新索引段内添加新文档,更新索引段的倒排索引,并在对应于该索引段的时间序列中依次记录更新时间,作为索引段的最后更新时间;响应于索引段内的有效文档数量超过第一预定阈值,新建索引段,作为新的最新索引段,将新文档存储在新的最新索引段内;响应于删除文档的指令,在文档id索引中对被删除的文档的文档id做删除标记;响应于非最新索引段内的有效文档数量减小到小于第二预定阈值,将非最新索引段内的所有有效文档添加到最新索引段内,并废弃非最新索引段;以及响应于更新文档的指令,在包含原文档的索引段中删除原文档,在最新索引段中添加新文档。

优选地,网页库可以分成多个索引块,每个索引块可以按更新时间分成多个索引段。

根据本发明的另一个方面,还提供了一种检索系统,包括:网页库,按更新时间分成多个索引段;缓存装置,用于缓存之前基于查询请求检索得到的第一检索结果;检索装置,用于在其多个索引段中进行检索;以及请求处理装置,用于响应于查询请求,查找缓存装置中是否存在与查询请求相对应的第一检索结果,在缓存装置中查找到第一检索结果的情况下,将所查询请求以及第一检索结果一并发送给检索装置,检索装置在多个索引段中查找更新时间晚于第一检索结果所对应的查询时间的第一索引段,并基于查询请求在第一索引段内进行检索,以得到第二检索结果,并将第二检索结果发送给请求处理装置,请求处理装置基于第一检索结果和第二检索结果,生成结果集,将结果集与接收到查询请求时的查询时间关联地保存到缓存中,并将结果集返回给用户。

优选地,在缓存中未查找到第一检索结果的情况下,请求处理装置可以将查询请求下发给检索装置,以便于检索装置根据查询请求在多个索引段中进行检索。

优选地,请求处理装置可以将结果集中的文档的文档id、作为排序依据的文档分数以及接收到查询请求时的系统时间,作为与查询请求相对应的缓存结果,保存到缓存装置中。

优选地,检索装置在多个索引段中查找更新时间早于第一检索结果所对应的查询时间的第二索引段,并在第二索引段的文档id索引中进行查询,以得到与第一检索结果中的文档id相同的文档id,并将查询到的文档id发送给请求处理装置,请求处理装置将查询到的文档id加入第二检索结果,以得到结果集。

优选地,索引段包括倒排索引和文档id索引,该检索系统还可以包括索引段维护装置,用于执行以下操作中的至少一项:响应于在最新索引段内添加新文档,更新索引段的倒排索引,并在对应于该索引段的时间序列中依次记录更新时间,作为索引段的最后更新时间;响应于索引段内的有效文档数量超过第一预定阈值,新建索引段,作为新的最新索引段,将新文档存储在新的最新索引段内;响应于删除文档的指令,在文档id索引中对被删除的文档的文档id做删除标记;响应于非最新索引段内的有效文档数量减小到小于第二预定阈值,将非最新索引段内的所有有效文档添加到最新索引段内,并废弃非最新索引段;以及响应于更新文档的指令,在包含原文档的索引段中删除原文档,在最新索引段中添加新文档。

优选地,网页库可以分成多个索引块,每个索引块按更新时间分成多个索引段,检索装置包括多个检索节点,每个检索节点对应一个索引块。

本发明的基于网页库进行检索的方法、装置及检索系统,在接收到用户的查询请求后,可以仅在更新时间晚于本次查询请求的查询时间的索引段内进行检索,从而可以在满足检索结果实时性需求的同时,提升检索效率。并且可以根据最终的检索结果更新缓存,从而可以提升缓存命中率。

附图说明

通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。

图1是示出了本发明述及的网页库的索引结构的示意性流程图。

图2是示出了根据本发明一实施例的检索系统的结构框图。

图3是示出了根据本发明一实施例的基于网页库进行检索的装置的结构框图。

图4示出了根据本发明一实施例的基于网页库进行检索的方法的示意性流程图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

为了更好地理解本发明,在描述本发明之前,首先对本发明述及的网页库的索引结构进行说明。

本发明述及的网页库可以是全量的索引网页库,网页库中存储有大量的网页及其索引。本发明述及的网页库可以按照更新时间分成多个索引段。具体地,如图1所示,可以首先基于预定的规则将网页库分成一个或多个索引块,然后可以在每个索引块内继续分段,以得到一个或多个索引段,每个索引段包含一个索引文档子集,全部索引段中的索引文档子集就构成了网页库。

索引段可以包括倒排索引和文档id索引。倒排索引用于查询语句召回,倒排索引技术为本领域技术人员所公知,这里不再赘述。文档id索引中记录着有效文档的文档id,可以根据文档id检索,来验证一个文档id是否有效,该验证过程将在下文进行说明,这里暂不赘述。

每个索引段具有一个更新时间,该更新时间记录着索引段中的文档的最后更新时间。如上文所述,多个索引段可以归属于一个或多个索引块,因此可以在每个索引块中维护一个时间数组,用于记录该索引块中每个索引段的最后更新时间。优选地,该时间数组可以是按照时间先后排序的有序时间数组,这样可以方便后续采用二分查找算法快速查找目标索引段,具体的查找过程将在下文进行说明,这里暂不赘述。

下面就本发明述及的索引段的建立及更新维护机制进行说明。

如上文所述,索引段可以包括倒排索引和文档id索引。因此,在索引段中添加文档时,可以更新索引段的倒排索引,并在对应于该索引段的时间序列中依次记录更新时间,时间序列中最后的更新时间就可以作为该索引段的最后更新时间。

当索引段内的有效文档数量超过第一预定阈值时,可以新建索引段,新建的索引段可以作为最新索引段,需要添加的新文档可以存储在最新索引段内。

需要删除文档时,可以在索引段的文档id索引中对被删除的文档的文档id做删除标记。当某个非最新索引段内的有效文档数量减小到小于第二预定阈值时,可以将该非最新索引段内的所有有效文档添加到最新索引段内,并废弃该非最新索引段。另外,对于需要更新的文档,可以在包含原文档的索引段中删除原文档,并在最新索引段中添加新文档。

至此结合图1对本发明述及的网页库的索引结构做了详细说明。图2是示出了根据本发明一实施例的检索系统的结构框图。

如图2所示,检索系统100包括网页库110、缓存装置120、请求处理装置130以及检索装置140。另外,可选地,检索系统100还可以包括图中虚线框所示的维护装置150。其中,关于网页库110的结构及存储原理可以参见上文结合图1的描述,这里不再赘述。维护装置150可以对网页库110中的索引段进行更新维护,具体执行过程可以参见上文对索引段的建立及更新维护机制的描述,这里不再赘述。

缓存装置120用于缓存之前基于查询请求检索得到的检索结果,为了便于区分,缓存装置120所缓存的检索结果可以称为第一检索结果。缓存装置120所缓存的检索结果可以包括文档id、作为排序依据的文档分数以及查询时间三部分。

检索装置140可以在多个索引段中进行检索。如上文所述,网页库110可以分成一个或多个索引块,每个索引块可以进一步分成一个或多个索引段。因此,检索装置140也可以包括一个或多个检索节点,每个检索节点可以对应于一个索引块,检索节点可以在其对应的索引块内的索引段中进行检索。其中,本文述及的检索节点可以部署在服务器中,并且不同的检索节点可以部署在不同的服务器中,也可以部署在同一服务器中。

检索系统100的检索过程如下。

1、查找缓存

请求处理装置130响应于接收到用户发出的查询请求,在缓存装置120中查找是否存在与该查询请求相对应的第一检索结果。

具体来说,请求处理装置130在接收到用户发出的查询请求后,可以对查询请求进行语法解析,并做语法正确性校验,对于校验通过的查询语句,可以提取主要查询信息,生成关键词,并在缓存装置120的缓存中进行查询。缓存装置120可以根据关键词进行查询,如果查询到则返回第一检索结果,如果没有查询到则返回空值。第一检索结果可以包括多个文档id集合、每个文档id对应的文档分数以及查询时间。

2、进行检索

在缓存装置120中查找到第一检索结果的情况下,请求处理装置130可以将查询请求(或对查询请求进行解析得到的查询语句)以及第一检索结果一并发送给检索装置140,例如可以将第一检索结果附加在查询请求中发送给检索装置140。在缓存装置120中查找不到第一检索结果的情况下,请求处理装置130可以仅将查询请求发送给检索装置140,此时检索装置140可以按照现有正常的检索逻辑在多个索引段中进行检索。

在检索装置140接收到请求处理装置130发送的数据包括第一检索结果和查询请求的情况下,检索装置140可以在多个索引段中查找更新时间晚于第一检索结果所对应的查询时间的第一索引段,并基于查询请求在第一索引段内进行检索,以得到第二检索结果,并将第二检索结果发送给请求处理装置130。所得到的第二检索结果可以包括文档id和作为排序依据的文档分数,对检索到的文档进行打分为本领域技术人员所公知,这里不再赘述。

3、缓存验证,生成结果集

根据上文对索引段的建立及更新维护机制的描述可知,在索引段内新增文档的时间可以作为索引段的更新时间,在索引段内删除文档的时间不会作为索引段的更新时间。

由于第二检索结果是在更新时间晚于第一检索结果所对应的查询时间的索引段中进行检索得到的,因此第二检索结果满足时效性,可以直接将第二检索结果添入结果集。而第一检索结果是缓存装置120在当前查询请求之前缓存的检索结果,因此还需要根据更新时间早于第一检索结果所对应的查询时间的索引段的文档id索引,对第一检索结果中的文档id进行验证,以确定第一检索结果中的文档还是否有效。

具体验证过程如下,可以逐一取出第一检索结果中的文档id及查询时间,然后查找更新时间早于取出的文档id所对应的查询时间的第二索引段,在第二索引段的文档id索引中进行查询,以判断该文档id是否出现在第二索引段的文档id索引中,对于未出现的文档id,则表明该文档id所对应的文档已被删除或无效。

由此,检索装置140可以在多个索引段中查找更新时间早于第一检索结果所对应的查询时间的第二索引段,并在第二索引段的文档id索引中进行查询,以得到与第一检索结果中的文档id相同的文档id,并将查询到的文档id发送给请求处理装置130,请求处理装置130可以将查询到的文档id添加入结果集。

如上文所述,可以在索引块内维护一个用于记录该索引块内每个索引段的最后更新时间的有序时间数组。因此可以根据第一检索结果所对应的之前的查找时间tq,在有序数时间组中查找第一个最后更新时间tx晚于tq的索引段。有序时间数组中更新时间tx之前的更新时间所对应的索引段即为更新时间早于查找时间tq的索引段,有序时间数组中更新时间tx之后的更新时间所对应的索引段即为更新时间晚于查找时间tq的索引段。由此,可以快速查找到相应的索引段。

4、发送用户

在得到结果集后,请求处理装置130还可以根据文档分数,对结果集中的文档id进行排序,选择文档分数排名靠前的n个文档作为最终检索结果,发送给用户。

5、更新缓存

请求处理装置130还可以将结果集与接收到查询请求时的查询时间关联地保存到缓存装置120中。其中,在缓存装置120中先前没有缓存该查询请求所对应的检索结果时,可以直接保存;在缓存装置120中先前已经缓存了该查询请求所对应的检索结果时,可以删除旧的结果,用新的结果替代,当然也可以仅保存新结果,而不删除旧结果。

在将结果集保存到缓存装置120中时,请求处理装置130可以将结果集中的文档的文档id、作为排序依据的文档分数以及接收到查询请求时的查询时间,作为与查询请求相对应的缓存结果,保存到缓存装置120中。

综上,针对每次查询请求,检索系统100可以根据之前缓存的与当前查询请求对应的检索结果的查询时间,仅检索新增部分(即更新时间晚于之前的查询时间)的索引段,可以大大提升检索效率,而检索结果可以作为新的缓存结果长期缓存,使得缓存命中率大幅提高。并且索引段可以实时更新,不会出现在某个时间点大范围更新索引导致缓存整体失效的情况,由此本发明的检索方案可以大幅提升缓存命中率且使得整个检索系统更加平稳。

至此,结合图2详细说明了本发明的检索系统,另外本发明还提供了一种检索方法和检索装置,检索装置可以执行本发明的检索方法,而方法中涉及的细节已在上文做了详细说明,因此下面就本发明的检索方法的基本流程和检索装置的基本结构进行说明,对于其中的细节部分可以参见上文相关说明,下文不再详述。

图3是示出了根据本发明一实施例的检索装置的结构的功能框图。

图4是示出了根据本发明一实施例的检索方法的示意性流程图。图4中示出了步骤s450在步骤s460之前执行时的示意图,应该知道,还可以步骤s460还可以在步骤s450之前执行,或者二者同时执行,其执行顺序对本发明并无影响。

参见图3,检索装置300包括第一查找单元310、第二查找单元320、检索单元330、结果集生成单元340、保存单元350以及返回单元360。

参见图4,在步骤s410,例如可以由第一查找单元310,响应于查询请求,查找缓存中是否存在与查询请求相对应的缓存结果。

缓存中缓存的缓存结果与上文述及的第一检索结果含义相同,可以包括文档id、作为排序依据的文档分数以及查询时间三部分。

在缓存中未查找到缓存结果的情况下,可以执行步骤s415,例如可以由检索单元330,按照现有的检索逻辑在网页库中进行检索,以得到检索结果。在缓存中查找到缓存结果的情况下,可以执行步骤s420,例如可以由第二查找单元320在网页库中查找最后更新时间晚于缓存结果所对应的查询时间的索引段。

如上文所述,网页库可以分为一个或多个索引块,每个索引块可以进一步分为一个或多个索引段,可以在每个索引块内维护一个时间有序数组,用于记录该索引块下的索引段的最后更新时间。因此,可以采用二分查找算法在索引块内的时间有序数组中快速查找,找到最后更新时间晚于缓存结果所对应的查询时间的索引段。

在步骤s430,例如可以由检索单元330,在查找到的索引段内进行检索,以得到检索结果。

在步骤s440,例如可以由结果集生成单元340,基于检索结果和缓存结果,生成结果集。

步骤s430所查找到的检索结果是在更新时间晚于缓存结果的查找时间的索引段内进行检索得到的,因此可以直接将检索结果写入结果集。而缓存结果是在当前查找请求之前缓存的检索结果,因此还需要验证缓存结果的有效性,将被验证有效的缓存结果加入结果集。

如图3所示,结果集生成单元340可以包括查找模块341和生成模块343。查找模块341可以在更新时间早于缓存结果所对应的查询时间的索引段的文档id索引中进行查询,以得到与缓存结果中的文档id相同的文档id。生成模块343可以将查询到的文档id加入检索结果,以得到结果集。

在得到结果集后,可以执行步骤s450,例如可以由保存单元350,将结果集与接收到查询请求时的查询时间关联地保存到缓存中。此处可以将结果集中的文档的文档id、作为排序依据的文档分数以及接收到查询请求时的查询时间,作为与查询请求相对应的缓存结果,保存到缓存中。

最后可以执行步骤s460,例如可以由返回单元360,将结果集返回给用户。其中,在得到结果集后,还可以根据文档分数,对结果集中的文档id进行排序,选择文档分数排名靠前的n个文档作为最终检索结果,发送给用户。

如图3所示,检索装置300还可以可选地包括索引段维护单元370。索引段维护单元370可以对网页库中的索引段进行更新维护,具体执行过程可以参见上文对索引段的建立及更新维护机制的描述,这里不再赘述。

上文中已经参考附图详细描述了根据本发明的基于网页库进行检索的方法、装置及检索系统。

此外,根据本发明的方法还可以实现为一种计算机程序,该计算机程序包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。或者,根据本发明的方法还可以实现为一种计算机程序产品,该计算机程序产品包括计算机可读介质,在该计算机可读介质上存储有用于执行本发明的上述方法中限定的上述功能的计算机程序。本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1