搜索方法和装置与流程

文档序号:12719978阅读:171来源:国知局
搜索方法和装置与流程
本发明涉及信息处理领域,具体而言,涉及一种搜索方法和装置。
背景技术
:目前各大搜索引擎的实时索引系统,为了避免影响检索的时效性,没有进行结果缓存。在处理所有的检索请求时,实时索引系统仅索引最近一段时间的数据,而非实时索引系统需要索引全量历史数据。在检索时,将实时索引系统的检索结果与带缓存的非实时索引系统的检索结果融合后返回给搜索用户。整个系统流程如图1所示,实时索引系统11基于关键词在最近一段时间内的数据中进行检索得到第一结果,非实时索引系统13基于关键词在全量数据中进行检索得到第二结果,将第二结果进行缓存,并将第一结果和第二结果进行融合,得到最终的检索结果。在上述方案中,为了保证检索的时效性,放弃了结果缓存,在提升时新性效果的同时,也极大的增加了实时检索系统的性能压力。对于用户量很大的检索系统,无缓存机制的实时索引方案会导致大量的计算资源需求。同时,由于互联网或者暗网的数据更新量在一定时间窗口范围内是有限的,时间窗口越小,更新量越少,大量相关请求会造成大量的重复计算。例如,在A时刻搜索了QueryString1,需要完成1000篇相关文档的计算,在A时刻之后新增了一篇与QueryString1相关的文档,在间隔很短的B时刻某用户又发起了搜索QueryString1的请求,则需要重新计算之前的1000篇相关文档以及新增的一篇文档,对于B时刻发起的搜索而言,绝大部分计算过程是重复的。针对上述搜索效率低的问题,目前尚未提出有效的解决方案。技术实现要素:本发明实施例提供了一种搜索方法和装置,以至少解决搜索效率低的技术问题。根据本发明实施例的一个方面,提供了一种搜索方法,包括:在接收到搜索请求之后,获取所述搜索请求的历史搜索结果;根据所述历史搜索结果检测系统中是否存在增量数据,其中,所述增量数据用于表示新增数据中与所述查询请求具有索引关系的数据,所述新增数据为在生成所述历史搜索结果之后增加入所述系统中的数据;在检测出存在所述增量数据的情况下,确定所述增量数据对应的增量搜索结果;至少基于所述增量搜索结果,确定所述搜索请求的搜索结果。根据本发明实施例的另一方面,还提供了一种搜索装置,包括:获取单元,用于在接收到搜索请求之后,获取所述搜索请求的历史搜索结果;检测单元,根据所述历史搜索结果检测系统中是否存在增量数据,其中,所述增量数据用于表示新增数据中与所述查询请求具有索引关系的数据,所述新增数据为在生成所述历史搜索结果之后增加入所述系统中的数据;第一确定单元,在检测出存在所述增量数据的情况下,用于确定所述增量数据对应的增量搜索结果;第二确定单元,用于至少基于所述增量搜索结果,确定所述搜索请求的搜索结果。在本发明实施例中,在接收到搜索请求之后,基于该搜索请求对应的历史搜索结果检测系统中是否存在增量数据,若检测出存在增量数据,则在该增量数据中执行搜索操作,得到增量搜索结果,基于该增量搜索结果和历史搜索结果,确定搜索请求的搜索结果,在该方案中无需在全量历史数据中执行搜索操作,仅需在增量数据中执行搜索操作,节省了搜索操作的时间,进一步地,基于历史搜索结果和增量搜索结果确定搜索请求的搜索结果,也可以保证搜索请求的准确性,解决了现有技术中搜索效率低的问题,提高了搜索效率。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是现有技术中的实时索引系统的搜索处理流程图;图2是根据本发明实施例的搜索方法的硬件环境的示意图;图3是根据本发明实施例的一种可选的搜索方法的流程图;图4是根据本发明实施例的又一种可选的搜索方法的流程图;图5是根据本发明实施例的另一种可选的搜索方法的流程图;图6是根据本发明实施例的另一种可选的搜索方法的原理图;图7是根据本发明实施例的另一种可选的搜索方法的语素与文档标识的索引关系示意图;图8是根据本发明实施例的再一种可选的搜索方法的流程图;图9是根据本发明实施例的一种可选的搜索装置的示意图;图10是根据本发明实施例的一种可选的搜索装置的示意图;以及图11是根据本发明实施例的一种终端的结构框图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:倒排索引:索引表中的每一项都包括一个属性值,索引表中记录具有该属性值的记录集的起始存放地址和总长度;用户搜索时会根据属性值来确定索引项,从而找到具体的记录集。内存索引:将索引和数据都存放在内存中的检索系统。归并查找:对多个有序数据段通过多路遍历的方式来获得各数据段交集的方法。根据本发明实施例,提供了一种搜索的方法实施例,该方案可以应用在搜索引擎中。可选地,在本实施例中,上述搜索方法可以应用于如图2所示的由服务器202和终端204所构成的硬件环境中。如图2所示,服务器202通过网络与终端204进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端204并不限定于PC、手机、平板电脑等。本发明实施例的搜索方法可以由服务器202来执行,也可以由终端204来执行,还可以是由服务器202和终端204共同执行。其中,终端204执行本发明实施例的搜索方法也可以是由安装在其上的客户端来执行。可选地,用户可以通过用户终端的页面输入搜索关键字,在输入搜索关键字之后,点击确定按键可以生成搜索请求,终端将该搜索请求发送至搜索服务器,服务器接收到搜索请求之后,执行上述搜索方法,以获取该搜索请求对应的搜索结果。服务器获取到该搜索请求之后,从服务器的缓存中,读取与该搜索请求对应的历史搜索结果,该历史搜索结果可以为在历史时间段内接收到该搜索请求之后,按照本申请实施例的方案搜索得到的结果。其中,搜索结果中可以包括多个文档的信息,该搜索结果可以按照与搜索请求的相关度的强弱来排序文档。服务器将该搜索结果返回给用户终端,用户终端可以在页面中展示该搜索结果。进一步地,服务器获取到历史搜索结果之后,基于该历史搜索结果检测系统中是否存在增量数据,也即,检测服务器存储的文档中是否有新增的文档,若检测出系统中存在增量数据,则对该增量数据执行搜索操作,得到增量搜索结果,基于该历史搜索结果和增量搜索结果得到与该搜索请求对应的搜索结果。本申请提供了一种搜索方法,如图3所示,该搜索方法的实施例可以通过如下步骤实现:步骤S302:在接收到搜索请求之后,获取搜索请求的历史搜索结果;步骤S304:根据历史搜索结果检测系统中是否存在增量数据,其中,根据历史搜索结果检测系统中是否存在增量数据,增量数据用于表示新增数据中与查询请求具有索引关系的数据,新增数据为在生成历史搜索结果之后增加入系统中的数据;步骤S306:在检测出存在增量数据的情况下,对增量数据执行搜索操作,得到增量搜索结果;步骤S308:至少基于增量搜索结果,确定搜索请求的搜索结果。通过上述实施例,在接收到搜索请求之后,从缓存的结果数据中,获取搜索请求的历史搜索结果,根据历史搜索结果检测系统中是否存在增量数据,其中,增量数据为在生成历史搜索结果之后增加入系统中的数据,在检测出存在增量数据的情况下,对增量数据执行搜索操作,得到增量搜索结果,至少基于增量搜索结果,确定搜索请求的搜索结果。在上述实施例中,在接收到搜索请求之后,基于该搜索请求对应的历史搜索结果检测系统中是否存在增量数据,若检测出存在增量数据,则在该增量数据中执行搜索操作,得到增量搜索结果,基于该增量搜索结果和历史搜索结果,确定搜索请求的搜索结果,在该方案中无需在全量历史数据中执行搜索操作,仅需在增量数据中执行搜索操作,节省了搜索操作的时间,进一步地,基于历史搜索结果和增量搜索结果确定搜索请求的搜索结果,也可以保证搜索请求的准确性,解决了现有技术中搜索效率低的问题,提高了搜索效率。在步骤S302提供的技术方案中,在接收到搜索请求之后,从缓存的结果数据中,获取搜索请求的历史搜索结果,可选地,在服务器中可以缓存每次搜索的搜索结果,在接收到新的搜索请求时,该缓存的搜索结果成为了该搜索请求的历史搜索结果。在服务器记录每次搜索的搜索结果的情况下,若接收到新的搜索请求,则可以获取距离当前时间最近的搜索结果;在服务器记录最新搜索请求的搜索结果的情况下,若接收到新的搜索请求,则可以获取该存储的最新的搜索结果。可选地,历史搜索结果中记录有生成该结果时系统中记录的文档的历史信息,该文档为系统中记录的供搜索使用的文档。优选地,该历史信息可以用文档的标识来表示。在步骤S304提供的技术方案中,根据历史搜索结果检测系统中是否存在增量数据。服务器将所有相关的文档存储在系统中,可选地,服务器可以利用倒排索引的方式记录各个语素与文档的索引关系,该倒排索引是根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为排序索引,带有倒排索引的文件可以称之为倒排索引文件,简称倒排文件。服务器对系统中记录的多个文档进行预处理,生成各个语素与各个文档的索引关系,将每个语素与多个文档的索引关系记录在倒排索引表中,倒排索引表中每一项用于记录一个语素与多个文档的索引关系,该索引关系中可以记录语素与多个文档标识的索引关系。在该实施例中,搜索请求中可以包括一个或多个搜索关键字,在执行搜索请求的过程中,将每个搜索关键字拆分为一个或多个语素,在执行搜索操作时,可以从倒排索引表中搜索各个语素对应的文档。可选地,通过生成历史搜索结果时系统中记录的文档的历史信息来检测该系统中是否存在增量数据(如各个语素的增量文档集合),在检测过程中,若检测出倒排索引表中存在未被历史信息记录的新的文档信息,则确定该系统中存在增量数据;若检测出倒排索引表中存在不存在未被历史信息记录的新的文档信息,则确定该系统中不存在增量数据。进一步可选地,若倒排索引表中存在未被历史信息记录的、且与查询请求的语素具有索引关系的新的文档信息,则确定该系统中存在增量数据;若检测出倒排索引表中不存在未被历史信息记录的、且与查询请求的语素具有索引关系的新的文档信息,则确定该系统中不存在增量数据。在步骤S306提供的技术方案中,在检测出存在增量数据的情况下,确定增量数据对应的增量搜索结果。可选地,增量数据用于表示新增数据中与查询请求相对应的数据,进一步可选地,该增量数据用于表示新增数据中与查询请求的语素具有索引关系的数据。在一个可选的实施例中,在检测出系统中存在新增数据的情况下,在新增文档中执行搜索操作,以对增量数据执行搜索操作,对搜索请求中的搜索关键字进行分词处理得到该搜索关键字对应的一个或多个语素,获取包含各个语素的新增文档集合。进一步可选地,在获取到增量数据之后,确定增量数据对应的增量搜索结果可以包括:对增量数据中,各个语素对应的新增文档集合(即增量文档集合)进行求交处理,得到增量搜索结果。可选地,从已经更新的倒排索引表中获取各个语素与新增文档的对应关系(即索引关系),可以获取包含各个语素的新增文档集合。在该实施例中,得到各个语素对应的增量文档集合,对多个语素对应的增量文档集合进行求交处理,得到增量搜索结果。其中,求交处理可以为获取多个语素对应的增量文档的交集,得到该多个语素对应的增量搜索结果。例如,搜索关键字包括3个语素(包括语素A、B和C),增量数据中包括10个文档(分别为文档1、文档2、文档3、文档4、文档5、文档6、文档7、文档8、文档9以及文档10),确定出的语素与增量文档的对应关系如表1所示。需要说明的是,表1仅作示例性说明,语素与文档的对应关系可以以不同于表1的方式展示出来,该表1对语素与文档的对应关系的展示方式不做具体限定。表1语素文档A文档1、文档3、文档5、文档9B文档3、文档5、文档6、文档8、文档10C文档2、文档3、文档4、文档5、文档7如表1所示,语素A对应的增量文档为文档1、文档3、文档5和文档9;语素B对应的增量文档为文档3、文档5、文档6、文档8和文档10;语素C对应的增量文档为文档2、文档3、文档4、文档5、文档6和文档7。在确定出各个语素对应的新增文档之后,对多个语素对应的新增文档进行求交处理,在表1所示的示例中,执行求交处理之后,得到的结果为:文档3和文档5,也即,得到的增量搜索结果用于记录该文档3和文档5。在步骤S308提供的技术方案中,至少基于增量搜索结果,确定搜索请求的搜索结果,可以根据该搜索结果确定该搜索请求的搜索结果。可选地,在检测出存在增量数据的情况下,对增量数据执行搜索操作,得到增量搜索结果,若该增量搜索结果不为空,则至少基于增量搜索结果,确定搜索请求的搜索结果;若增量搜索结果为空,则将历史搜索结果作为该搜索请求的搜索结果。可选地,该搜索结果中可以按照顺序记录搜索到的多个文档信息,该文档信息可以包括下述至少之一:文档标识、文档数量、文档名称以及文档数据容量(即内容大小)。其中,多个文档信息可以按照搜索到的文档与搜索关键字的关联度大小排序。进一步地,在获取到搜索请求的搜索结果之后,可以将其返回给发送搜索请求的终端,该终端接收到搜索结果之后,可以将接收到的搜索结果展示在终端的界面上。可选地,用户可以在终端的浏览器中输入搜索请求,在接收到搜索结果之后,可以将该搜索结果显示在浏览器中。在一个可选的实施例中,在得到搜索请求的搜索结果之后,将搜索请求的搜索结果发送至终端;若检测出终端展示搜索结果的时长超过预定时长,则系统自动发起搜索请求。可选地,终端在接收到搜索结果之后,将该搜索结果展示在搜索结果页中,系统实时检测该终端展示搜索结果页的展示时长,若检测到该展示时长超过预定时长,则自动发起该搜索请求,并再次执行上述步骤S302至步骤S308的操作。根据本发明的上述实施例,在根据历史搜索结果检测系统中是否存在增量数据之后,方法还可以包括:在检测出不存在增量数据的情况下,基于历史搜索结果确定搜索请求的搜索结果。可选地,若检测出系统中不存在增量数据,也即,可以确定系统在生成历史搜索结果之后,未存入新的文档,在该种情况下,若再次执行该搜索请求,得到的搜索结果应该与历史搜索结果是一致的,因此,在系统中不存在增量数据的情况下,无需重复执行搜索操作,直接将该历史搜索结果作为此次搜索的结果。通过该实施例可以节省大量的资源,提高了整个系统的处理速度。在一个可选的实施例中,在执行步骤S302之前,检测是否接收到搜索请求,可选地,若检测到终端发送的搜索请求,则确定接收到搜索请求;若检测到网关接口CGI发起的搜索请求,则确定接收到搜索请求。其中,搜索网关接口在检测到终端展示搜索结果的时间超长预定时长的情况下,发起搜索请求。可选地,系统在将搜索请求发送至终端之后,检测终端展示搜索结果的搜索结果页的展示时长是否超过预定时长,如超过1分钟,则系统自动发起搜索请求。根据上述实施例,至少基于增量搜索结果,确定搜索请求的搜索结果包括:汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果。可选地,汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果包括下述至少之一:对历史搜索结果和增量搜索结果进行排序,得到搜索请求对应的文档信息集合,其中,搜索结果包括文档信息集合;统计历史搜索结果和增量搜索结果所包含的文档数量,其中,搜索结果包括文档数量。该文档信息集合中可以包括搜索到的文档标识的集合。进一步可选地,若搜索请求为终端发送的请求,则至少基于增量搜索结果,确定搜索请求的搜索结果包括:若搜索请求为用户输入的请求,则基于历史搜索结果和增量搜索结果,确定搜索请求的搜索结果。可选地,确定搜索请求所指示的展示方式,根据该展示方式,基于历史搜索结果和增量搜索结果确定搜索请求的搜索结果。进一步可选地,根据展示方式,汇总历史搜索结果和增量搜索结果,确定搜索请求的搜索结果包括:若展示方式为展示搜索结果的文档信息集合,则对历史搜索结果和增量搜索结果进行排序,得到搜索请求的搜索结果。若该搜索请求为终端发送的请求,该搜索请求可以请求展示搜索结果的具体内容,该搜索结果的内容可以包括:搜索得到的文档标识、文档名称、文档内容大小等。在该实施例中,在获取到增量搜索结果之后,综合历史搜索结果和增量搜索结果,得到该次搜索请求的搜索结果,在该实施例中,对于已经执行过的历史搜索结果无需重复执行操作,在增量数据中执行搜索操作,最后,将历史搜索结果和增量搜索结果综合得到该次搜索请求的搜索结果,通过该实施例,不仅可以减少工作量,并且可以保证搜索结果的时效性、准确性和完整性。例如,该搜索请求对应的历史搜索结果用于表示5个文档,增量搜索结果用于表示2个文档,将该历史搜索结果和增量搜索结果汇总得到7个文档,得到该次搜索请求的搜索结果,在该搜索结果中,部分搜索结果可从数据库的缓存中读取得到,部分搜索结果是在接收到该搜索请求之后执行搜索操作得到,节省了搜索资源,并且提高了搜索效率。可选地,对历史搜索结果和增量搜索结果进行排序,得到搜索请求的搜索结果包括如图4所示的步骤:步骤S402:获取历史搜索结果和增量搜索结果中所包含的所有文档的标识。其中,文档的标识可以按照文档被录入系统的顺序来确定,可选地,可以按照文档被录入系统的顺序,在默认值的基础上按照预定步长来确定,如,默认值为1,预定步长为1,第一篇录入系统的文档的标识为1,第二篇录入系统的文档的标识为2,以此类推。可选地,在历史搜索结果和增量搜索结果中通过文档的标识来表示搜索到的文档。在一个可选的实施例中,历史搜索结果中的文档标识按照标识值的大小排序,或者,按照文档与搜索关键字的相关度来排序。其中,相关度(Relevancy)可以是两个事物间存在相互联系的百分比。可选地,文档或由几个或一些词、词组就可以完全表示其中的内容,文档中词语与语素(或搜索关键字)的距离(如欧式距离)可以确定文档与搜索关键字的相关度。相关度的值越大,表示文档与搜索关键字的相关性越强,反之,相关度的值越小,表示文档与搜索关键字的相关性越弱。在将该方案应用在搜索引擎的场景中,关联度可以指搜索请求(比如搜索关键字)和搜索结果(如搜索得到的文档、网页)之间的关联程度。步骤S404:基于文档的标识计算各个文档与搜索请求的相关度。可选地,在获取文档的标识之后,获取该标识所表示的文档的词语,计算文档中词语的集合与搜索关键字的关联度,得到各个文档与搜索请求的相关度。例如,历史搜索结果中包括3个文档的信息(分别为文档1、文档2和文档3),增量搜索结果中包括2个文档的信息(分别为文档4和文档5),则分别计算各个文档与搜索请求的相关度,计算结果如表2所示。需要说明的是,表2的展示方式和表中的数据仅作示例性说明,本申请对此不做具体限定。表2文档相关度文档135%文档250%文档380%文档496%文档585%如表2所示,文档1至5与搜索请求的相关度分别为:35%、50%、80%、96%和85%。步骤S406:按照计算得到的相关度对文档进行排序,得到搜索结果。可选地,按照相关度的值从大到小排序,得到搜索结果。如表2所示的示例中,按照相关度的值从大到小对搜索得到的文档进行排序,得到的搜索结果为:文档4、文档5、文档3、文档2、以及文档1。步骤S408:将搜索结果发送至终端。可选地,终端接收到该搜索结果之后,对其进行展示。在另一个可选的实施例中,根据展示方式,基于历史搜索结果和增量搜索结果,确定搜索请求的搜索结果包括:若展示方式为展示搜索结果包含的文档数量,则统计历史搜索结果和增量搜索结果所包含的文档数量,将统计得到的文档标识的数量作为搜索请求的搜索结果。可选地,展示方式可以为展示搜索结果所包含的文档数量,也即,搜索请求可以请求展示该搜索关键字可以搜索到的文档的数量。在该示例中,在得到历史搜索结果和增量搜索结果之后,统计历史搜索结果和增量搜索结果记录的文档的总量,得到搜索结果,该搜索结果中记录搜索得到的文档总数量。例如,历史搜索结果中包括3个文档的信息,增量搜索结果中包括2个文档的信息,得到的搜索结果可以为:得到5条结果。根据本发明上述实施例,在检测到的接收请求为系统(如网关接口)自动发起的请求的情况下,至少基于增量搜索结果,确定搜索请求的搜索结果包括:基于增量搜索结果确定增量结果数,将增量结果数确定为搜索请求的搜索结果。在该示例中,由于用户在终端的搜索结果页停留的时间较长、且用户仍停留在该页面上,在确定系统中存在增量数据的情况下,可以向终端发送增量通知,以向终端通知系统中出现了增量数据,终端可以对该增量通知执行预定操作,以生成确认指令或者取消指令,其中,确认指令用于指示获取增量数据的增量搜索结果,取消指令用于指示无需获取增量数据的增量搜索结果。在服务器接收到确认指令之后,在增量数据中执行搜索操作获取增量搜索结果,并至少基于该增量搜索结果确定搜索请求的搜索结果。另一种可选地,在检测到的接收请求为系统(如网关接口)自动发起的请求的情况下,在确定系统中存在增量数据的情况下,在增量数据中执行搜索操作获取增量搜索结果,在增量搜索结果不为空的情况下,向终端发送增量通知,以向终端通知系统中出现了增量数据,终端可以对该增量通知执行预定操作,以生成确认指令或者取消指令,其中,确认指令用于指示获取增量数据的增量搜索结果,取消指令用于指示无需获取增量数据的增量搜索结果。在服务器接收到确认指令之后,在增量数据中执行搜索操作获取增量搜索结果,并至少基于该增量搜索结果确定搜索请求的搜索结果可选地,至少基于该增量搜索结果确定搜索请求的搜索结果可以按照上述的实施方式执行;进一步地,至少基于该增量搜索结果确定搜索请求的搜索结果可以包括:生成用于指示增量搜索结果所包含的文档数量(即上述的增量文档数)的搜索结果。根据本发明的上述实施例,根据历史搜索结果检测系统中是否存在增量数据包括如图5所示的步骤:步骤S502:获取历史搜索结果的元信息,其中,元信息中记录有生成历史搜索结果时倒排索引表的历史信息,倒排索引表中的每一项用于记录搜索请求中一个语素与文档的索引关系。可选地,系统按照文档被录入系统的先后顺序记录文档的标识,也即,若文档1录入系统的时间晚于文档2录入系统的时间,则文档1的标识值大于文档2的标识值。可选地,历史信息可以记录生成历史搜索结果时倒排索引表的全部索引信息,也可以记录倒排索引表中各个语素对应的文档的最大标识值。步骤S504:基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据。进一步地,倒排索引表的历史信息包括各个语素的历史最大文档标识,倒排索引表的当前信息包括各个语素的当前最大文档标识,倒排索引表按照文档被录入系统的先后顺序确定文档标识。步骤S504基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据可以通过如下方式实现:步骤S5042:检测各个语素的历史最大文档标识是否与当前最大文档标识一致。步骤S5044:若检测出至少一个语素的历史最大文档标识与当前最大文档标识不一致,则确定系统中存在增量数据。进一步地需要说明的是,在确定搜索请求的搜索结果之后,方法还可以包括:利用搜索请求的搜索结果,更新搜索请求的历史搜索结果。通过该实施例,可以实时更新搜索请求的历史搜索结果,在下次接收到相同的搜索请求时,可以快速准确地提供搜索结果。在上述实施例中,在接收到搜索请求,响应该搜索请求进行检索的过程中,会把每次检索的结果生成结果缓存cache(如上述实施例中的历史搜索请求),并记录结果cache的一些元信息,如结果cache对应的倒排的位置等信息。这样,对于一个重复的检索请求,可以先获取结果cache,并通过结果cache记录的倒排位置等元信息,读取cache之后的新增倒排并计算符合条件的增量搜索结果,这些增量搜索结果与结果cache进行混排后,返回给用户,同时更新结果cache和元信息。通过上述实施例,可以实时更新cache,满足了性能和时效性两方面的要求,既能满足索引的实时更新,也能通过缓存提升检索性能。下面结合图6至图8对本申请的一个可选的实施例(应用于搜索引擎交互场景)进行详细描述。在搜索引擎交互过程中,可以通过用户主动发起搜索请求,或者是由接口CGI定期调用实时索引系统生成搜索请求。在定期调用实时索引系统生成搜索请求的示例中,如果实时索引系统有新数据,可以通知用户结果有新结果,且告知新结果数。可选地,用户主动发起的搜索请求的场景,在得到搜索结果之后,返回给用户召回结果数以及结果详情。另一种可选地,当用户停留在搜索结果页,接口CGI会定期发起同样的搜索请求,实时搜索系统判断搜索结果是否有变化,如果有新的搜索结果,则可以在页面上提示用户。如图6所示,为了完成基于缓存的高性能实时索引系统,可以确定索引格式、cache机制以及实时检索方案和增量结果数检索方案。图6所示的示例中,包括索引流程和检索流程。其中,索引流程负责对更新的数据建立实时索引;检索流程,负责接收检索请求,读取实时索引和结果cache数据,并进行相关性计算和回写结果cache(即返回搜索结果)。在该实施例中,可以预先设置索引结构,设置倒排索引按照文档ID有序排列。其中,文档ID(即文档标识)是根据文档的更新时序递增,也即按照文档被录入系统的时间顺序递增。越新的文档(即越晚录入系统的文档),对应的文档标识ID的值越大,这样新文档的ID追加在倒排索引表的尾部。如图7所示,倒排索引表中记录的语素与文档的索引关系中,尾部的都是新追加的文档,文档的标识也比较大。可选地,预先设置缓存cache结构,这里的cache是搜索结果cache(即上述的历史搜索结果),以及与cache相关的一些元信息。其中,搜索结果cache是文档ID集合(与上述的文档信息集合相对应),可选地,该方案可以包括相关性权重信息,优选地,搜索结果cache不包括相关性权重信息。优选地,相关性权重可以每次检索时结合时新性因子重新计算的,通过该种处理方式可以保证两次检索结果的相关性权重信息的可比性,同时也充分考虑了时新性对排序的效果的影响。可选地,cache相关的元信息包括搜索query(即搜索请求)、语素(如对搜索请求中的搜索关键字进行拆分得到的最小粒度的元素)、生成cache时每个语素的倒排尾部位置以及尾部文档ID,即最大文档ID。进一步可选地,在检索时读取cache搜索结果的同时,可以读取元信息,利用该元信息判断是否存在增量索引数据。如图8所示,在一个可选的实施例中可以通过下述步骤实现:步骤S801:在接收到检索请求时,查询缓存元信息。可选地,在接收到检索请求时,先通过搜索请求query生成关键字key,并利用该query和/或key去搜索cache元信息。步骤S802:根据cache元信息判断是否有新增数据。若是,则执行步骤S803;若否,则执行步骤S804。可选地,根据cache元信息,结合当前索引表元信息,判断是否有新增数据(即上述的增量数据)。具体地,搜索cache元信息中每个语素的最大文档ID,并搜索索引表的最大文档ID,如果不一致,则确定在生成历史搜索结果cache后,系统中新增的文档中包含该语素。可选地,只要query中任一语素的倒排发生了更新,都需要计算新增倒排。步骤S803:计算增量搜索结果。可选地,如果有新增倒排,则从cache生成时记录的倒排位置开始进行倒排求交,计算增量搜索结果。步骤S805:对历史搜索集合和增量搜索结果进行重排,得到最终结果。可选地,对增量结果ID和cache中的结果ID的并集计算相关性,并完成整体排序,得到排序权重最高的定量结果文档ID集合。步骤S806:更新历史搜索结果和元信息。可选地,将结果文档ID集合及元信息的更新,包括最新cache时每个语素的倒排尾部位置以及尾部文档ID重新写入cache,并返回结果给用户。步骤S804:对cache结果进行相关性计算并返回给用户。可选地,如果没有新增倒排,则直接对cache结果进行相关性计算并返回给用户。进一步可选地,对于不需要详细结果的请求,如仅提示用户结果发生了变更,则需要走结果数更新流程。结果数更新流程不需要步骤S805的检索流程中的整体排序的环节,在该实施例中,处理非常轻量,在数据增量不多的情况下,几乎不占用计算资源。通过设置高效的cache方案,来进行实时索引和检索,在工程层面能极大提高实时检索系统的吞吐量,有效降低访问延迟,提高资源利用效率;在产品层面,可以更实时的通知用户检索结果的变化情况。需要说明的是,该方案不仅可以用于普通的搜索场景,还可以应用于推荐等场景。在方案优化方面,对于时效性影响最大的业务,可以考虑对cache结果不进行相关性计算,从而进一步提高系统计算效率。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。根据本发明实施例,还提供了一种用于实施上述搜索方法的装置。图9是根据本发明实施例的一种可选的搜索装置的示意图,如图9所示,该装置可以包括:获取单元91,用于在接收到搜索请求之后,获取搜索请求的历史搜索结果;检测单元93,根据历史搜索结果检测系统中是否存在增量数据,其中,增量数据用于表示新增数据中与查询请求具有索引关系的数据,新增数据为在生成历史搜索结果之后增加入系统中的数据;第一确定单元95,在检测出存在增量数据的情况下,用于确定增量数据对应的增量搜索结果;第二确定单元97,用于至少基于增量搜索结果,确定搜索请求的搜索结果。根据本申请的上述实施例,装置还可以包括如图10所示的:第三确定单元1001,用于在根据历史搜索结果检测系统中是否存在增量数据之后,在检测出不存在增量数据的情况下,基于历史搜索结果确定搜索请求的搜索结果。可选地,第二确定单元可以包括:汇总单元,用于汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果。另一种可选的,汇总单元包括下述至少之一:排序单元,用于对历史搜索结果和增量搜索结果进行排序,得到搜索请求对应的文档信息集合,其中,搜索结果包括文档信息集合;统计单元,用于统计历史搜索结果和增量搜索结果所包含的文档数量,其中,搜索结果包括文档数量。在一个可选的实施例中,排序单元可以包括:第一获取子单元,用于获取历史搜索结果和增量搜索结果中所包含的所有文档的标识;计算子单元,用于对基于文档的标识计算各个文档与搜索请求的相关度;排序子单元,用于按照计算得到的相关度对文档进行排序,得到搜索结果。根据上述实施例,装置还可以包括如图10所示的:第四确定单元1003,用于在获取搜索请求的历史搜索结果之前,在检测到终端发送的搜索请求的情况下,确定接收到搜索请求;第五确定单元1005,用于在检测到网关接口发起的搜索请求的情况下,确定接收到搜索请求,其中,网关接口在检测到终端展示搜索结果的时间超长预定时长的情况下,发起搜索请求。另一种可选地,第二确定单元可以包括:第一确定子单元,用于确定增量搜索结果中包含的文档数量,得到增量结果数;第二确定子单元,用于将增量结果数确定为搜索请求的搜索结果。另一种可选地,检测单元可以包括:第二获取子单元,用于获取历史搜索结果的元信息,其中,元信息中记录有生成历史搜索结果时倒排索引表的历史信息,倒排索引表中的每一项用于记录搜索请求中一个语素与文档的索引关系;第三确定子单元,用于基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据。进一步地,倒排索引表的历史信息包括各个语素的历史最大文档标识,倒排索引表的当前信息包括各个语素的当前最大文档标识,文档标识按照文档的更新时序递增,其中,第三确定子单元包括:检测子单元,用于检测各个语素的历史最大文档标识是否与当前最大文档标识一致;第四确定子单元,用于若检测出至少一个语素的历史最大文档标识与当前最大文档标识不一致,则确定系统中存在增量数据。需要进一步说明的是,装置还可以包括:更新单元,用于在确定搜索请求的搜索结果之后,利用搜索请求的搜索结果,更新搜索请求的历史搜索结果。此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。根据本发明实施例,还提供了一种用于实施上述搜索方法的服务器或终端。图11是根据本发明实施例的一种终端的结构框图,如图11所示,该终端可以包括:一个或多个(图中仅示出一个)处理器1101、存储器1103、以及传输装置1105(如上述实施例中的发送装置),如图11所示,该终端还可以包括输入输出设备1107。其中,存储器1103可用于存储软件程序以及模块,如本发明实施例中的搜索方法和装置对应的程序指令/模块,处理器1101通过运行存储在存储器1103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的搜索方法。存储器1103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1103可进一步包括相对于处理器1101远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。上述的传输装置1105用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1105包括一个网络适配器(NetworkInterfaceController,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1105为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。其中,具体地,存储器1103用于存储应用程序。处理器1101可以通过传输装置1105调用存储器1103存储的应用程序,以执行下述步骤:在接收到搜索请求之后,获取搜索请求的历史搜索结果;根据历史搜索结果检测系统中是否存在增量数据,其中,增量数据用于表示新增数据中与查询请求具有索引关系的数据,新增数据为在生成历史搜索结果之后增加入系统中的数据;在检测出存在增量数据的情况下,确定增量数据对应的增量搜索结果;至少基于增量搜索结果,确定搜索请求的搜索结果。处理器1101还用于执行下述步骤:在根据历史搜索结果检测系统中是否存在增量数据之后,在检测出不存在增量数据的情况下,基于历史搜索结果确定搜索请求的搜索结果。处理器1101还用于执行下述步骤,汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果,以至少基于增量搜索结果,确定搜索请求的搜索结果。处理器1101还用于执行下述步骤:对历史搜索结果和增量搜索结果进行排序,得到搜索请求对应的文档信息集合,其中,搜索结果包括文档信息集合;和/或统计历史搜索结果和增量搜索结果所包含的文档数量,其中,搜索结果包括文档数量,以汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果。处理器1101还用于执行下述步骤:获取历史搜索结果和增量搜索结果中所包含的所有文档的标识;基于文档的标识计算各个文档与搜索请求的相关度;按照计算得到的相关度对文档进行排序,得到搜索结果,以对历史搜索结果和增量搜索结果进行排序,得到搜索请求的搜索结果括。处理器1101还用于执行下述步骤:在获取搜索请求的历史搜索结果之前,在检测到终端发送的搜索请求的情况下,则确定接收到搜索请求;在检测到网关接口发起的搜索请求的情况下,则确定接收到搜索请求,其中,网关接口在检测到终端展示搜索结果的时间超长预定时长的情况下,发起搜索请求。处理器1101还用于执行下述步骤:确定增量搜索结果中包含的文档数量,得到增量结果数;将增量结果数确定为搜索请求的搜索结果,至少基于增量搜索结果,确定搜索请求的搜索结果。处理器1101还用于执行下述步骤:获取历史搜索结果的元信息,其中,元信息中记录有生成历史搜索结果时倒排索引表的历史信息,倒排索引表中的每一项用于记录搜索请求中一个语素与文档的索引关系;基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据,以根据历史搜索结果检测系统中是否存在增量数据。可选地,倒排索引表的历史信息包括各个语素的历史最大文档标识,倒排索引表的当前信息包括各个语素的当前最大文档标识,文档标识按照文档的更新时序递增。处理器1101还用于执行下述步骤:检测各个语素的历史最大文档标识是否与当前最大文档标识一致;若检测出至少一个语素的历史最大文档标识与当前最大文档标识不一致,则确定系统中存在增量数据,以基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据。处理器1101还用于执行下述步骤:在确定搜索请求的搜索结果之后,利用搜索请求的搜索结果,更新搜索请求的历史搜索结果。可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。本领域普通技术人员可以理解,图11所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternetDevices,MID)、PAD等终端设备。图11其并不对上述电子装置的结构造成限定。例如,终端还可包括比图11中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图11所示不同的配置。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行搜索方法的程序代码。可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在接收到搜索请求之后,获取搜索请求的历史搜索结果;根据历史搜索结果检测系统中是否存在增量数据,其中,增量数据用于表示新增数据中与查询请求具有索引关系的数据,新增数据为在生成历史搜索结果之后增加入系统中的数据;在检测出存在增量数据的情况下,确定增量数据对应的增量搜索结果;至少基于增量搜索结果,确定搜索请求的搜索结果。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在根据历史搜索结果检测系统中是否存在增量数据之后,在检测出不存在增量数据的情况下,基于历史搜索结果确定搜索请求的搜索结果。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果,以至少基于增量搜索结果,确定搜索请求的搜索结果。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:对历史搜索结果和增量搜索结果进行排序,得到搜索请求对应的文档信息集合,其中,搜索结果包括文档信息集合;和/或统计历史搜索结果和增量搜索结果所包含的文档数量,其中,搜索结果包括文档数量,以汇总历史搜索结果和增量搜索结果,得到搜索请求的搜索结果。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取历史搜索结果和增量搜索结果中所包含的所有文档的标识;基于文档的标识计算各个文档与搜索请求的相关度;按照计算得到的相关度对文档进行排序,得到搜索结果,以对历史搜索结果和增量搜索结果进行排序,得到搜索请求的搜索结果括。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取搜索请求的历史搜索结果之前,在检测到终端发送的搜索请求的情况下,则确定接收到搜索请求;在检测到网关接口发起的搜索请求的情况下,则确定接收到搜索请求,其中,网关接口在检测到终端展示搜索结果的时间超长预定时长的情况下,发起搜索请求。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:确定增量搜索结果中包含的文档数量,得到增量结果数;将增量结果数确定为搜索请求的搜索结果,至少基于增量搜索结果,确定搜索请求的搜索结果。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取历史搜索结果的元信息,其中,元信息中记录有生成历史搜索结果时倒排索引表的历史信息,倒排索引表中的每一项用于记录搜索请求中一个语素与文档的索引关系;基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据,以根据历史搜索结果检测系统中是否存在增量数据。可选地,倒排索引表的历史信息包括各个语素的历史最大文档标识,倒排索引表的当前信息包括各个语素的当前最大文档标识,文档标识按照文档的更新时序递增。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:检测各个语素的历史最大文档标识是否与当前最大文档标识一致;若检测出至少一个语素的历史最大文档标识与当前最大文档标识不一致,则确定系统中存在增量数据,以基于倒排索引表的历史信息和倒排索引表的当前信息确定系统中是否存在增量数据。可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在确定搜索请求的搜索结果之后,利用搜索请求的搜索结果,更新搜索请求的历史搜索结果。可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1