一种数据搜索方法、电子设备和计算机可读存储介质与流程

文档序号:19418932发布日期:2019-12-14 01:13阅读:127来源:国知局
本发明涉及计算机
技术领域
:,更具体地,涉及一种数据搜索方法、电子设备和计算机可读存储介质。
背景技术
::similaritysearch(相似性搜索)泛指通过比较相似性,对一些数据对象进行搜索,例如在图片库里搜索和指定的某张图片最相似的一张或多张图片。在现代大数据应用中,数据规模愈加庞大,数据类型也更加多种多样,例如文字、图片、语音、视频等复杂的数据类型,因此,进行高效的相似度查询变得尤为重要。技术实现要素:有鉴于此,本发明实施例提供一种数据搜索方法、电子设备和计算机可读存储介质,以提高增、删、修改目标数据集合的效率,进而提高数据搜索效率第一方面,本发明实施例提供一种数据搜索方法,所述方法包括:获取数据搜索请求,所述数据搜索请求包括搜索目标和输出数据的数量n,n大于等于1;根据所述数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合,以确定与所述搜索目标匹配的n个输出数据,其中,所述第一数据集合为第一时刻的目标数据集合,第二数据集合包括从所述第一时刻到当前时刻需要插入目标数据集合的数据,所述第三数据集合包括从所述第一时刻到当前时刻需要从目标数据集合删除的数据,所述搜索图在搜索周期中保持不变。可选的,根据所述数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合包括:对于当前访问的所述搜索图中的数据节点,在所述第三数据集合中查找所述数据节点;响应于所述数据节点对应的数据不在所述第三数据集合中,进行搜索匹配操作。可选的,根据所述数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合还包括:对于当前访问的所述第二数据集合中的数据,在所述第三数据集合中查找当前访问的数据;响应于当前访问的数据不在所述第三数据集合中,进行搜索匹配操作。可选的,根据所述数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合还包括:对所述第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据;对所述第二数据集合进行搜索,以获取n个第二候选数据;从所述n个第一候选数据和n个第二候选数据中确定n个输出数据。可选的,所述第二数据集合和所述第三数据集合至少在搜索周期中的部分时间段动态更新。可选的,所述方法还包括:响应于所述第二数据集合和/或所述第三数据集合的数据量大于第一预定值,更新所述第一数据集合、所述搜索图、所述第二数据集合和第三数据集合。可选的,所述方法还包括:响应于所述第二数据集合和/或所述第三数据集合的数据数量与所述第一数据集合的数据数量的比值大于第二预定值,更新所述第一数据集合、所述搜索图、所述第二数据集合和所述第三数据集合。可选的,所述方法还包括:响应于所述第一时刻到当前时刻的时间段大于预定时间段,更新所述第一数据集合、所述搜索图、所述第二数据集合和所述第三数据集合。可选的,更新所述第一数据集合、所述搜索图、所述第二数据集合和第三数据集合包括:初始化第四数据集合和第五数据集合,所述第四数据集合包括在更新阶段需要插入目标数据集合的数据,所述第五数据集合包括在更新阶段需要从目标数据集合删除的数据;合并所述第二数据集合和所述第一数据集合以形成第六数据集合;计算所述第六数据集合与所述第三数据集合的差集,将所述差集作为新的第一数据集合;基于所述新的第一数据集合构建新的搜索图;其中,在更新阶段,所述第二数据集合和所述第三数据集合保持不变,所述第四数据集合和所述第五数据集合动态更新,在更新结束时,将所述第四数据集合和所述第五数据集合分别作为新的第二数据集合和第三数据集合。可选的,所述方法还包括:在更新阶段,根据所述数据搜索请求、第三数据集合和第五数据集合,搜索所述第一数据集合对应的搜索图、第二数据集合和第四数据集合,以确定与搜索目标匹配的n个输出数据;其中,搜索所述第一数据集合对应的搜索图包括:对于当前访问的所述搜索图中的数据节点,在所述第三数据集合和所述第五数据集合中查找所述数据节点;响应于所述数据节点对应的数据不在所述第三数据集合且不在所述第五数据集合中,进行搜索匹配操作;搜索所述第二数据集合包括:对于当前访问的所述第二数据集合中的数据,在所述第三数据集合和所述第五数据集合中查找当前访问的数据;响应于当前访问的所述第二数据集合中的数据不在所述第三数据集合且不在所述第五数据集合中,进行搜索匹配操作;搜索所述第四数据集合包括:对于当前访问的所述第四数据集合中的数据,在所述第三数据集合和第五数据集合中查找当前访问的数据;响应于当前访问的所述第四数据集合中的数据不在所述第三数据集合且不在所述第五数据集合中,进行搜索匹配操作。可选的,搜索所述第一数据集合对应的搜索图、第二数据集合和第四数据集合还包括:对所述第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据;对所述第二数据集合进行搜索,以获取n个第二候选数据;对所述第四数据集合进行搜索,以获取n个第三候选数据;从所述n个第一候选数据、n个第二候选数据以及n个第三候选数据中确定n个输出数据。可选的,所述第一数据集合和所述第二数据集合采用list数据结构进行存储,所述第三数据集合采用哈希表进行存储。第二方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被处理器执行以实现如上所述的方法。第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如上所述的方法。在本发明实施例中,在第一时刻基于目标数据集合构建对应的搜索图,并维护用于存放从第一时刻起需要插入目标数据集合的数据的第二数据集合、以及用于存放从第一时刻起需要从目标数据集合中删除的数据的第三数据集合,根据接收到的数据搜索请求和第三数据集合搜索对应的搜索图和第二数据集合,以确定n个输出数据,由此,通过维护第二数据集合和第三数据集合,可以提高数据搜索效率。附图说明通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:图1是现有技术的数据维护过程的示意图;图2是本发明实施例的一种数据搜索方法的流程图;图3是本发明实施例的数据维护过程的示意图;图4是本发明实施例的另一种数据搜索方法的流程图;图5是本发明实施例的一种获取第一候选数据的方法流程图;图6是本发明实施例的一种获取输出数据的过程示意图;图7是本发明实施例的又一种数据搜索方法的流程图;图8是本发明实施例的另一种获取第一候选数据的方法流程图;图9是本发明实施例的另一种获取输出数据的过程示意图;图10是本发明实施例的数据搜索装置的示意图;图11是本发明实施例的电子设备的示意图。具体实施方式以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。除非上下文明确要求,否则整个说明书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。通常,我们用最邻近搜索(nearestneighborsearch,nns)进行相似性查询。最邻近搜索是指在搜索空间内,找到距离搜索对象最近的一个或多个数据。判断距离远近的依据有很多种,例如欧几里得距离(euclideandistance)等。最邻近搜索包括多种方法,其中,基于图的方法能更加高效地进行数据搜索。基于图的最近邻搜索方法根据目标数据集合构建一个搜索图,在搜索图中,每个数据节点对应目标数据集合中的一个数据。在一种可选的实现方式中,将目标数据集合中的数据记为一个数据节点,计算数据节点之间的相似度,并将相似度大于预设值的数据节点用边连接起来,这些数据节点和边构成了搜索图。在另一种可选的实现方式中,将目标数据集合中的数据记为一个数据节点,计算数据节点之间的相似度,将一个数据节点和与该数据节点相似度最高的m个数据节点用边连接起来,其中,m为预先设定的值,这些数据节点和边构成了搜索图。在进行数据搜索时,如果需要输出n个相似数据,那么通过预定的搜索算法在搜索图中找到与搜索目标距离最近的n个数据节点,n大于等于1。在现有技术中,如果需要在目标数据集中增加数据、或删除某个或某些数据、或修改某个或某些数据,需要遍历搜索图的每个数据节点,对图中的每条边做相应的调整来维护搜索图的属性。图1是现有技术的数据维护过程的示意图。在现有技术中,数据维护也即对应的搜索图的维护。如图1所示,搜索图1包括节点j11-j20等多个数据节点,若想要将数据节点j11修改为数据节点j21,则需要先将数据节点j11删除,再插入数据节点j21。假设搜索图1中,两个数据节点之间的相似度至少在其中一个节点对应的相似度序列中位于前m位,图1中以m=3为例。其中,相似度序列为:一个数据节点与搜索图中其他数据节点的相似度按照从高到低进行排序而形成的序列。如图1所示,将数据节点j11删除后形成的搜索图2,在搜索图2的基础上插入数据节点j21,遍历搜索图2中的每个数据节点,对图中的每条边做相应的调整,也即重新计算各数据节点之间的相似度,并将与一个数据节点相似度最高的m个数据节点用边连接起来,最终形成搜索图3。由此,在现有技术中,每插入、或删除、或修改一个数据,均需要遍历整个搜索图,效率较低,进而使得数据搜索效率较低。由此,本发明实施例提供一种数据搜索方法,通过维护包括需要插入的数据的第二数据集合、以及包括需要删除的数据的第三数据集合来提高对目标数据集合进行插入、删除和修改操作的效率,进而提高数据搜索效率。图2是本发明实施例的一种数据搜索方法的流程图。如图2所示,本实施例的数据搜索方法包括以下步骤:步骤s110,获取数据搜索请求。其中,数据搜索请求包括搜索目标和输出数据的数量n,n大于等于1。步骤s120,根据数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合,以确定与搜索目标匹配的n个输出数据。其中,第一数据集合为第一时刻的目标数据集合,第二数据集合包括从第一时刻到当前时刻需要插入目标数据集合的数据,第三数据集合包括从第一时刻到当前时刻需要从目标数据集合删除的数据,第一数据集合对应的搜索图在搜索周期中保持不变,第二数据集合和第三数据集合至少在搜索周期的部分时间段动态更新。其中,搜索周期为第一数据集合对应的搜索图更新完毕到下一次更新完毕。在一种可选的实现方式中,在对第一数据集合对应的搜索图进行数据搜索操作时,跳过在第三数据集合中存在的数据节点,在对第二数据集合进行数据搜索操作时,跳过在第三数据集合中存在的数据。由此,可以确保目标数据集合的完整性和准确性。其中,第二数据集合可以采用支持高效插入的数据结构进行存储,例如list表、k-dtree等。第三数据集合可以采用支持高效访问的数据结构进行存储,例如哈希表等。在本实施例中,通过维护在第一时刻基于目标数据集合构建对应的搜索图,并维护用于存放从第一时刻起需要插入目标数据集合的数据的第二数据集合、以及用于存放从第一时刻起需要从目标数据集合中删除的数据的第三数据集合,根据接收到的数据搜索请求和第三数据集合搜索对应的搜索图和第二数据集合,确定n个输出数据,由此,通过维护搜索图、第二数据集合和第三数据集合,可以提高增、删、修改目标数据集合的效率,进而提高数据搜索效率。图3是本发明实施例的数据维护过程的示意图。如图3所示,在本实施例中,搜索周期t包括保持阶段(t0-t1时刻)和更新阶段(t1-t2)时刻。其中,在整个搜索周期t中,数据搜索操作对应的搜索图g保持不变。第二数据集合b和第三数据集合c在保持阶段(t0-t1时刻)动态更新,在更新阶段(t1-t2)保持不变,第四数据集合b'和第五数据集合c'在t1时刻进行初始化,在更新阶段(t1-t2)阶段动态更新。在t2时刻,搜索图g更新完成,也即搜索周期t+1中,数据搜索操作对应更新后的搜索图g,并将第四数据集合b'和第五数据集合c'作为新的第二数据集合b和第三数据集合c。在t0时刻,将当前的目标数据集合作为第一数据集合a,并基于第一数据集合a构建搜索图g,同时维护第二数据集合b和第三数据集合c。其中,第二数据集合b至少包括从t0时刻到t1时刻之间需要插入目标数据集合的数据,第三数据集合c至少包括从t0时刻到t1时刻之间需要从目标数据集合中删除的数据。如图3所示,数据b1-bn为需要插入目标数据集合的数据,数据c1-cx为需要从目标数据集合中删除的数据,并且,需要将目标数据集合中的数据a1-am修改为数据a1'-a'm,也即需要将数据a1'-a'm插入目标数据集合,将数据a1-am从目标数据集合中删除。由此,在t0时刻-t1时刻,需要将数据b1-bn、数据a1'-a'm添加至第二数据集合b中,将数据c1-cx、数据a1-am添加至第三数据集合c中。其中,m、n、x均大于等于1。应理解,在修改数据时,可以先将数据a1-am添加至第三数据集合、再将数据a1'-am'添加至第二数据集合b,也可以先将数据a1'-a'm添加至第二数据集合b、再将数据a1-am添加至第三数据集合,还可以同时进行,本实施例并不对此进行限制。容易理解,在本实施例中,在t0时刻-t1时刻,目标数据集合为(a∪b)\c,也即第一数据集合a与第二数据集合b的并集减去第三数据集合c。应理解,上述示例以在t0时刻-t1时刻之间存在数据添加至第二数据集合b和/或第三数据集合c为例进行说明,应理解,在t0时刻-t1时刻之间,也可能不存在数据添加至第二数据集合b和/或第三数据集合c中,也即,在t0时刻-t1时刻之间,可能并没有需要插入目标数据集合的数据,和/或并没有需要从目标数据集合中删除的数据。在t1时刻,满足预定的更新条件,更新第一数据集合a、搜索图g、第二数据集合b和第三数据集合c。在一种可选的实现方式中,预定的更新条件包括:1、第二数据集合b和/或第三数据集合c的数据量大于第一预定值。2、第二数据集合b和/或第三数据集合c的数据数量与第一数据集合a的数据数量的比值大于第二预定值。3、t0时刻-t1时刻之间的时间段大于预定时间段。可选的,根据系统的硬件信息和计算资源信息来设置第二数据集合b和第三数据集合c的最大存储大小(第一预定值)、分别包含的数据数量与搜索图g包含的数据数量的最大比例(第二预定值)、以及距离最近一次构件搜索图g的预定时间段。在一种可选的实现方式中,在满足上述任一项预定的更新条件时,更新第一数据集合a、搜索图g、第二数据集合b和第三数据集合c包括:在t1时刻,初始化第四数据集合b'和第五数据集合c',例如构建一个空的list表,用于记录被插入的数据,构建一个空的哈希表,用于记录被删除的数据。在更新阶段中,也即t1时刻-t2时刻,第二数据集合b和第三数据集合c中的数据保持不变,第四数据集合b'和第五数据集合c'保持动态更新,也即,在更新阶段中,将需要插入目标数据集合的数据(b'1-b'n、d'1-d'm)添加至第四数据集合b',将需要从目标数据集合中删除的数据(c'1-c'x、d1-dm)添加至第五数据集合c'。在t1时刻-t2时刻(也即更新阶段),计算(a∪b)\c以获取新第一数据集合a',并基于新第一数据集合a'构建新的搜索图g。由此,在t2时刻,新的搜索图g更新完成,删除原有的第二数据集合b和第三数据集合c,并将第四数据集合b'和第五数据集合c'作为新的第二数据集合b和第三数据集合c。由此,在本实施例中,通过维护搜索图g、第一数据集合a、第二数据集合b和第三数据集合c,在未到达预定的更新条件时,基于数据搜索请求和第三数据集合c来搜索对应的搜索图以及第二数据集合b,以确定输出数据,在达到预定的更新条件时更新第一数据集合来维护其对应的搜索图,由此,本实施例无需在每次增删或修改目标数据集合时,遍历搜索图中的每个数据节点以对图中的边作相应调整来维护搜索图,提高了目标数据集合增删或修改的效率,进而提高了数据搜索效率。同时,在本实施例的更新阶段中,维护第四数据集合b'和第五数据集合c',分别用于存放在更新阶段需要插入目标数据集合的数据和需要从目标数据集合中删除的数据,在更新阶段接收到数据搜索请求时,基于第三数据集合c和第四数据集合c',搜索对应的搜索图g、第二数据集合b和第四数据集合b',以确定输出数据,由此,可以使得即使在更新过程中,也能够保证搜索空间(也即目标数据集合)是完整的、最新的,保证了数据搜索结果的准确性。在一种可选的实现方式中,采用一个独立于数据搜索操作的线程获取新的第一数据集合、搜索图、第二数据集合和第三数据集合,以使得在更新阶段,用户可以在数据搜索操作的进程中根据第三数据集合c和第五数据c'集合对搜索图g、第二数据集合b和第四数据集合b'进行搜索,这避免了在更新阶段中断数据搜索操作,由此,进一步提高了数据搜索的效率。并且,在独立于数据搜索操作的进程中获取新的搜索图、新的第二数据集合和新的第三数据集合后,使得数据搜索操作进程删除原有的搜索图、第二数据集合、第三数据集合、第四数据集合和第五数据集合删除,并加载新的搜索图、新的第二数据集合和新的第三数据集合,以在新的搜索周期中,采用新的搜索图、新的第二数据集合和新的第三数据集合进行数据搜索操作。在本实施例中,在数据搜索操作进程删除原有搜索图、各数据集合以及加载新的搜索图、各数据集合过程中,不进行数据搜索操作,但是该过程的时间很短,几乎忽略不计,因此,基本不会影响数据搜索操作。图4是本发明实施例的另一种数据搜索方法的流程图。如图4所示,在一种可选的实现方式中,在保持阶段接收到数据搜索请求,本实施例的数据搜索方法包括以下步骤:步骤s210,获取数据搜索请求,其中,数据搜索请求包括搜索目标和输出数据的数量n,n大于等于1。步骤s220,对第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据。步骤s230,对第二数据集合进行搜索,以获取n个第二候选数据。步骤s240,从n个第一候选数据和n个第二候选数据中确定n个输出数据。在一种可选的实现方式中,计算n个第一候选数据和n个第二候选数据分别与搜索目标的相似度,并基于相似度的高低对n个第一候选数据和n个第二候选数据进行排序以获取相似度序列,从相似度序列中选择与搜索目标相似度最高的n个数据作为输出数据。容易理解,本实施例并不限制步骤s220和步骤s230的前后执行顺序,也即步骤s220可以在步骤s230之前执行,也可以在步骤s230之后执行,也可以与步骤s230同时执行。在一种可选的实现方式中,步骤s220和步骤s230采用不同的线程并行执行,以进一步提高数据搜索效率。图5是本发明实施例的一种获取第一候选数据的方法流程图,在一种可选的实现方式中,如图5所示,步骤s220包括以下步骤:步骤s221,初始化第一候选数据集合。步骤s222,访问搜索图中的数据节点,并在第三数据集合中查找该数据节点。在一种可选的实现方式中,第三数据集合可以采用任一支持高效访问的数据结构,例如,第三数据集合的采用哈希表进行存储,哈希表(hashtable)是根据关键码值(keyvalue)而直接进行访问的数据结果。具体地,给定表m,存在哈希函数f(key),对任意给定的关键字值key,代入哈希函数f(key)后获取该关键字值在表中的地址,则表m为哈希表。在本实施例中,在接收到需要从目标数据集合中删除数据q的请求时,将数据q作为key添加进第三数据集合对应的哈希表中。容易理解,在本实施例中,只需要访问哈希表中的key,因此,在哈希表中,key对应的value值可以为任意值。则步骤s222具体可以为:将当前访问的数据节点对应的数据作为key访问第三数据集合对应的哈希表。若哈希表中存在这个key,则表征该数据节点对应的数据已经从目标数据集合中删除,因此无需再将该数据节点对应的数据与搜索目标进行相似性比对。步骤s223,判断该数据节点是否在第三数据集合中。在该数据节点在第三数据集合中存在时,执行步骤s227,也即判断是否已经将搜索图搜索完毕,在搜索图搜索完毕时执行步骤s228,也即输出第一候选集合,在搜索图未搜索完毕时执行步骤s222,也即继续访问下一个数据节点。在该数据节点在第三数据集合中不存在时,执行步骤s224。在本实施例中,可以采用任一基于图的最近邻搜索算法来对搜索图进行数据搜索,例如贪心搜索算法等。由此,可以基于对应的最近邻搜索算法来确定搜索图是否搜索完毕。步骤s224,计算搜索目标和该数据节点对应的数据的相似度。在一种可选的实现方式中,搜索目标和目标数据集合中的数据通常采用特征向量进行存储(例如搜索目标为图像),由此,可以采用余弦相似度、欧式距离等相似度计算方法来计算搜索目标和数据节点对应的数据之间的相似度。步骤s225,判断搜索目标和该数据节点对应的数据的相似度是否大于相似度阈值,若大于,执行步骤s226,若不大于,执行步骤s227,也即判断是否已经将搜索图搜索完毕,在搜索图搜索完毕时执行步骤s228,也即输出第一候选集合,在搜索图未搜索完毕时执行步骤s222,也即继续访问下一个数据节点。在一种可选的实现方式中,相似度阈值为动态变化的。在本实施例中,第一候选数据集合中的数据的个数最多为n,相似度阈值可以为第一候选数据集合中的数据与搜索目标的相似度的最小值。步骤s226,将该数据节点添加至第一候选数据集合,并更新第一候选数据集合和相似度阈值。其中,在第一候选数据集合中的数据的个数小于n时,相似度阈值保持不变,将该数据节点添加至第一候选数据集合以更新第一候选数据集合。在第一候选数据集合中的数据的个数等于n时,将该数据节点添加至第一候选数据集合,并将原相似度阈值对应的数据节点从第一候选数据集合中删除以更新第一候选数据集合,并重新确定第一候选数据集合中的数据与搜索目标的相似度的最小值以更新相似度阈值。在步骤s226执行完成后,执行步骤s227,也即判断是否已经将搜索图搜索完毕,在搜索图搜索完毕时执行步骤s228,也即输出第一候选集合,在搜索图未搜索完毕时执行步骤s222,也即继续访问下一个数据节点。由此,可以对第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据。容易理解,上述n个第一候选数据获取方法仅仅是示例性的,其他能够获取n个第一候选数据的方法均可应用于本实施例中,例如,计算不存在于第三数据集合中的数据节点对应的数据与搜索目标的相似度,并基于相似度的高低对这个数据节点进行排序,取与搜索目标相似度最高的前n个数据节点作为n个第一候选数据。在一种可选的实现方式中,可采用类似的方法获取n个第二候选数据,在此不再赘述。图6是本发明实施例的一种获取输出数据的过程示意图。如图6所示,第一搜索单元61用于根据数据搜索请求和第三数据集合c对搜索图g进行搜索,以输出第一候选集合s1。其中,本实施例以预设的输出数据的个数为5个为例进行描述,第一候选集合s1包括数据a61-a65,以及数据a61-a65分别与搜索目标的相似度。第二搜索单元62用于根据数据搜索请求和第三数据集合c对第二数据集合b进行搜索,以输出第二候选集合s2。第一候选集合s2包括数据b61-b65,以及数据b61-b65分别与搜索目标的相似度。在一种可选的实现方式中,基于相似度对第一候选集合s1和第二候选集合s2进行综合排序,获取相似度序列s3,获取相似度序列s3中的前5个数据以确定最终的输出数据集合so,输出数据集合so包括数据a61、a62、b61、a63和b62。在实施例中,在第一时刻基于目标数据集合构建对应的搜索图,并维护用于存放从第一时刻起需要插入目标数据集合的数据的第二数据集合、以及用于存放从第一时刻起需要从目标数据集合中删除的数据的第三数据集合,根据接收到的数据搜索请求和第三数据集合搜索对应的搜索图和第二数据集合,以确定n个输出数据,由此,通过维护搜索图、第二数据集合和第三数据集合,可以提高数据搜索效率。图7是本发明实施例的又一种数据搜索方法的流程图。如图7所示,在一种可选的实现方式中,在更新阶段接收到数据搜索请求,本实施例的数据搜索方法包括以下步骤:步骤s310,获取数据搜索请求,其中,数据搜索请求包括搜索目标和输出数据的数量n,n大于等于1。步骤s320,对第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据。步骤s330,对第二数据集合进行搜索,以获取n个第二候选数据。步骤s340,对第四数据集合进行搜索,以获取n个第三候选数据。步骤s350,从n个第一候选数据、n个第二候选数据和n个第三候选数据中确定n个输出数据。在一种可选的实现方式中,计算n个第一候选数据、n个第二候选数据和n个第三候选数据分别与搜索目标的相似度,并基于相似度的高低对n个第一候选数据、n个第二候选数据和n个第三候选数据进行排序以获取相似度序列,从相似度序列中选择与搜索目标相似度最高的n个数据作为输出数据。容易理解,本实施例并不限制步骤s320、步骤s330和步骤s340的前后执行顺序。在一种可选的实现方式中,步骤s320、步骤s330和步骤s340采用不同的线程并行执行,以进一步提高数据搜索效率。图8是本发明实施例的另一种获取第一候选数据的方法流程图,在一种可选的实现方式中,如图8所示,步骤s320包括以下步骤s321-步骤s328。其中,步骤s321、步骤s322、步骤s324-步骤s328与图5中的步骤s221、步骤s222、步骤s224-步骤s228类似,在此不再赘述。在步骤s323中,本实施例需要判断当前访问的数据节点否在第三数据集合c和第五数据集合c'中存在,也即是否为需要从目标数据集合中删除的数据。如图3所示,第三数据集合c在t1时刻保持不变,在更新阶段t1时刻-t2时刻,将需要从目标数据集合中删除的数据添加至第五数据集合c'中,由此,在对搜索图进行搜索时,需要跳过存在于第三数据集合c和第五数据集合c'中的数据,以确保输出结果的准确性。在一种可选的实现方式中,可采用类似的方法获取n个第二候选数据和n个第三候选数据,在此不再赘述。图9是本发明实施例的另一种获取输出数据的过程示意图。如图9所示,第一搜索单元91用于根据数据搜索请求、第三数据集合c和第五数据集合c'对搜索图g进行搜索,以输出第一候选集合s91。其中,本实施例以预设的输出数据的个数为5个为例进行描述,第一候选集合s91包括数据a91-a95,以及数据a91-a95分别与搜索目标的相似度。第二搜索单元92用于根据数据搜索请求、第三数据集合c和第五数据集合c'对第二数据集合b进行搜索,以输出第二候选集合s92。第二候选集合s92包括数据b91-b95,以及数据b91-b95分别与搜索目标的相似度。第三搜索单元93用于根据数据搜索请求、第三数据集合c和第五数据集合c'对第四数据集合b'进行搜索,以输出第三候选集合s93。第三候选集合s93包括数据b'91-b'95,以及数据b'91-b'95分别与搜索目标的相似度。在一种可选的实现方式中,基于相似度对第一候选集合s91、第二候选集合s92和第三候选集合s93进行综合排序,获取相似度序列s94,获取相似度序列s94中的前5个数据以确定最终的输出数据集合so,其中,输出数据集合so包括数据a91、a92、b91、a93和b'91。在本实施例中,在更新阶段,在t1时刻(也即满足预定的更新条件的时刻),由于需要根据第一数据集合、第二数据集合和第三数据集合确定当前的目标数据集合(新的第一数据集合),因此,第二数据集合和第三数据集合需要在更新阶段保持不变。本实施例在t1时刻初始化第四数据集合和第五数据集合,以分别用于记录更新阶段需要插入目标数据集合的数据以及需要从目标数据集合中删除的数据。在更新阶段接收到数据搜索请求时,根据数据搜索请求对搜索图、第二数据集合以及第四数据集合进行数据搜索,并跳过存在于第三数据集合和第五数据集合中的数据,以获取输出数据。由此,本实施例可以确保更新阶段的数据搜索请求对应的搜索空间完整性和准确性。图10是本发明实施例的数据搜索装置的示意图。如图10所示,数据搜索装置包括请求获取模块101、搜索模块102和数据维护模块103。其中,请求获取模块101被配置为获取数据搜索请求,所述数据搜索请求包括搜索目标和输出数据的数量n,n大于等于1。搜索模块102被配置为根据所述数据搜索请求和第三数据集合搜索第一数据集合对应的搜索图和第二数据集合,以确定与所述搜索目标匹配的n个输出数据,其中,所述第一数据集合为第一时刻的目标数据集合,第二数据集合包括从所述第一时刻到当前时刻需要插入目标数据集合的数据,所述第三数据集合包括从所述第一时刻到当前时刻需要从目标数据集合删除的数据,所述搜索图在搜索周期中保持不变,所述第二数据集合和所述第三数据集合至少在搜索周期中的部分时间段动态更新。数据维护模块103被配置为在满足预定的更新条件时,也即在第二数据集合和/或所述第三数据集合的数据量大于第一预定值、和/或所述第二数据集合和/或所述第三数据集合的数据数量与所述第一数据集合的数据数量的比值大于第二预定值、和/或所述第一时刻到当前时刻的时间段大于预定时间段,更新所述第一数据集合、所述搜索图、所述第二数据集合和所述第三数据集合。在一种可选的实现方式中,数据维护模块103进一步被配置为:初始化第四数据集合和第五数据集合,所述第四数据集合包括在更新阶段中需要插入目标数据集合的数据,所述第五数据集合包括在更新阶段中需要从目标数据集合删除的数据;合并所述第二数据集合和所述第一数据集合以形成第六数据集合;计算所述第六数据集合与所述第三数据集合的差集,将所述差集作为新的第一数据集合;基于所述新的第一数据集合构建新的搜索图;其中,在更新阶段,所述第二数据集合和所述第三数据集合保持不变,所述第四数据集合和所述第五数据集合动态更新,在更新结束时,将所述第四数据集合和所述第五数据集合分别作为新的第二数据集合和第三数据集合。在一种可选的实现方式中,搜索模块102包括第一搜索单元1021、第二搜索单元1022和输出数据确定单元1023。第一搜索单元1021被配置为对所述第一数据集合对应的搜索图进行搜索,以获取n个第一候选数据。第二搜索单元1022被配置为对所述第二数据集合进行搜索,以获取n个第二候选数据。输出数据确定单元1023被配置为从所述n个第一候选数据和n个第二候选数据中确定n个输出数据。在一种可选的实现方式中,第一搜索单元1021进一步被配置为:对于当前访问的所述搜索图中的数据节点,在所述第三数据集合中查找所述数据节点;响应于所述数据节点对应的数据不在所述第三数据集合中,进行搜索匹配操作。在一种可选的实现方式中,第二搜索单元1022进一步被配置为:对于当前访问的所述第二数据集合中的数据,在所述第三数据集合中查找当前访问的数据;响应于当前访问的数据不在所述第三数据集合中,进行搜索匹配操作。在本发明实施例中,在第一时刻基于目标数据集合构建对应的搜索图,并维护用于存放从第一时刻起需要插入目标数据集合的数据的第二数据集合、以及用于存放从第一时刻起需要从目标数据集合中删除的数据的第三数据集合,根据接收到的数据搜索请求和第三数据集合搜索对应的搜索图和第二数据集合,以确定n个输出数据,由此,通过维护搜索图、第二数据集合和第三数据集合,可以提高数据搜索效率。图11是本发明实施例的电子装置的示意图。如图11所示,电子设备11:至少包括一个处理器111;以及,与处理器111通信连接的存储器112;以及,与扫描装置通信连接的通信组件113,通信组件113在处理器111的控制下接收和发送数据;其中,存储器112存储有可被至少一个处理器111执行的指令,指令被至少一个处理器111执行以实现上述任一实施方式的数据搜索方法。其中,处理器111为cpu处理器或加速处理器(例如gpu处理器)。具体地,电子设备11包括:一个或多个处理器111以及存储器112,图11中以包括一个处理器111为例,处理器111用于执行本实施例中的数据搜索方法的至少一个步骤。处理器111和存储器112可以通过总线或者其他方式连接,图11中以通过总线连接为例。存储器112作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。处理器111通过运行存储在存储器112中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明实施例的数据搜索方法。存储器112可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器112可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器112可选包括相对于处理器111远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。存储器112存储有一个或者多个单元,当一个或者多个单元被处理器111执行时,执行上述任意方法实施方式中的数据搜索方法。本发明的另一个实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1