动态截断方法、装置及服务器与流程

文档序号:15932083发布日期:2018-11-14 01:48阅读:181来源:国知局

本发明涉及检索技术领域,具体而言,涉及一种基于实时搜索系统的动态截断方法、装置及服务器。

背景技术

在检索的很多场景中,都需要使用实时检索来进行检索最新的数据。一般来讲,实时检索往往会保存最近几个小时,甚至是最近几天之内的数据,导致检索量很大,检索效率很低。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种动态截断方法、装置及服务器。

本发明实施例提供的一种动态截断方法,应用于提供实时搜索服务的服务器,该方法包括:

对新存入内存的新入文档进行识别,获取所述新入文档的关键字;

获取所述关键字对应的索引链,将所述内存中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。

本发明实施例还提供一种动态截断装置,应用于提供实时搜索服务的服务器,该装置包括:

关键字获取模块,用于对新存入内存的新入文档进行识别,获取所述新入文档的关键字;

截断链生成模块,用于获取所述关键字对应的索引链,将所述内存中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。

本发明实施例还提供一种服务器,包括:

包括:

存储器;

处理器;

安装/存储于所述存储器并由所述处理器执行的动态截断装置,该装置包括:

关键字获取模块,用于对新存入内存的新入文档进行识别,获取所述新入文档的关键字;

截断链生成模块,用于获取所述关键字对应的索引链,将所述内存中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。

与现有技术相比,本发明的动态截断方法及装置,通过在内存建立一个辅助的截断链,可以达到减少内存的使用和提高实时索引检索的检索效率。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明较佳实施例提供的服务器的方框示意图。

图2为本发明较佳实施例提供的动态截断装置的功能模块示意图

图3为本发明第一较佳实施例提供的动态截断方法的流程图。

图4为本发明第二较佳实施例提供的动态截断方法的流程图。

图5为本发明第三较佳实施例提供的动态截断方法的流程图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

如图1所示,为本发明较佳实施例提供的服务器100的方框示意图。所述服务器100包括存储器102、处理器104及网络模块106。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对服务器100的结构造成限定。例如,服务器100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。本实施例中,所述服务器100可以是用于提供实时检索功能的检索服务器,例如,其可以是google、baidu等提供检索服务的后台服务器。

存储器102可用于存储软件程序以及模块,处理器104通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器102可进一步包括相对于处理器104远程设置的存储器,这些远程存储器可以通过网络连接至服务器100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述处理器104可能是一种集成电路芯片,具有信号的处理能力。上述的处理器104可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述网络模块106用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。在一个实例中,上述网络信号为有线网络信号。此时,网络模块106可包括处理器、随机存储器、转换器、晶体振荡器等元件。

上述的软件程序以及模块包括:操作系统108及动态截断装置110。其中操作系统108例如可为linux,unix,windows等操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。所述动态截断装置110运行在操作系统108的基础上,用于实现服务器100提供的实时检索功能在内存中的文档处理等各种任务,之后将对此进行详细说明。

如图2所示,图2为本发明较佳实施例提供的动态截断装置110的功能模块示意图,所述动态截断装置110包括:关键字获取模块1101、截断链生成模块1102、堆建立模块1103、键值比较模块1104、堆重排序模块1105、内存数据判断模块1106、数据转存模块1107、截断链判断模块1108、截断链合并模块1109及检索链合成模块1110。

以下动态截断方法的三个实施例将结合图3至图5的流程图的描述对上述所述动态截断装置110包括的各功能模块进行详细描述。

第一实施例

请参阅图3,是本发明一较佳实施例提供的应用于图1所示的服务器100的动态截断方法的流程图。下面将对图3所示的具体流程进行详细阐述。

步骤s101,对新存入内存的新入文档进行识别,获取所述新入文档的关键字。一较佳实施例中,所述步骤s101所描述的过程可由所述关键字获取模块1101执行并实现。

本实施例中,所述关键字可以是能够表示所述新入文档主要内容或思想的字、词或者语句。在一个实例中,所述新入文档可以是实时存入的最新资讯相关文件,用于提供给所述服务器100根据用户的实时搜索请求,提供搜索服务。

步骤s102,获取所述关键字对应的索引链,将所述内存中的文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。一较佳实施例中,所述步骤s102所描述的过程可由所述截断链生成模块1102执行并实现。

本实施例中,所述新入文档中可以包括多个关键字,所述关键字可以表示所述新入文档所要表现的内容。例如,所述新入文档可以是关于名人a的最新新闻,则所述关键字可以是所述名人a的名字,也可以是所述名人a相关事件的简称。所述关键字还可以是多个词语的组合,例如,所述名人a的名字和所述最新新闻发生的日期。

在一种实施方式中,所述索引链中每个节点分别存储对应文档的存储地址。也就是说,所述索引链可以由多个文档的存储地址形成。在另一种实施例中,所述索引链可以是由多个文档对应的名称形成的索引链。

本实施例中,所述设定规则可以是按照文档和所述关键字之间的相关度进行排序。所述相关度可以是所述新入文档产生的时间与所述关键字形成的相隔时间的长短,例如,所述关键字与所述新入文档生成时间相隔越近则所述相关度越高,再例如,所述关键字与所述新入文档生成时间相隔越远则所述相关度越高,也就是说文档产生时间离当前时间越近则所述相关度越高。所述相关度还可以是文档中出现所述关键字的频率的高低,例如,文档中出现所述关键字的频率越高,则相关度越高。当然,所述设定规则还可以是其它规则,本领域的技术人员可以根据需求设定规则。

本实施例中,所述索引链根据内存中的文档与所述关键字的相关度的高低进行排序之后形成。在一种实施方式中,所述索引链中越靠前的节点对应的文档与所述关键字的相关度越高。所述截断链为所述索引链的一部分。本实施例中,所述截断链由所述索引链中排序靠前的指定数量的节点组成。例如,所述索引链前一百个节点组成所述截断链。

所述服务器100接收到检索请求后,则可优先根据所述截断链生成检索结果并返回。若所述服务器100接收到更多的检索请求,还可以将所述索引链除所述截断链之外的节点对应的内容生成进一步地检索结果。

根据本实施例中的方法,通过在所述内存中形成截断链,使得所述服务器100在接收到检索请求时,对满足截断索引的查询条件,通过所述截断链能够快速获取与所述截断链对应的文档,提高实时索引检索的效率。

第二实施例

本实施例提供一种动态截断方法,本实施例中的方法与第一实施例类似,其不同之处在于,如图4所示,本实施例中的方法包括:

步骤s201,对新存入内存的新入文档进行识别,获取所述新入文档的关键字。

步骤s202,获取所述关键字对应的索引链,将所述内存中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。

步骤s203,在所述内存建立一个用于存储所述截断链对应的文档的堆。一较佳实施例中,所述步骤s203所描述的过程可由所述堆建立模块1103执行并实现。

本实施例中,所述用于存储所述截断链对应的文档的堆为最小堆。所述最小堆是一种经过排序的完全二叉树,其任一非终端节点的键值均不大于其左孩子和右孩子节点的键值。也就是,所述最小堆的堆顶的键值最小。本实施例中,所述键值可以为所述堆的节点对应的文档与所述关键字的相关度的相关分数。例如,某一节点的文档与所述关键字的相关度越高,则所述文档的相关分数越高,则该节点的键值就越大。

在一个实例中,所述服务器100接收到检索请求后,则可优先根据所述截断链生成检索结果,所述检索结果中包括所述堆中的文档。

步骤s204,将所述新入文档的键值与所述堆的堆顶文档的键值进行比较。一当所述新入文档的键值比所述堆的堆顶文档的键值大时,执行步骤s205。若述所述新入文档的键值比所述堆的堆顶文档的键值小,则流程结束。较佳实施例中,所述步骤s204所描述的过程可由所述键值比较模块1104执行并实现。本实施例中,所述新入文档的键值为其与所述关键字的相关度的分数。详细地,所述新入文档的键值也可以作为所述新入文档替换所述堆的堆顶文档后,存入所述堆中后形成该堆中的某一节点的键值。

步骤s205,用所述新入文档替换所述堆顶文档,然后对该堆中的文档进行重新排序。一较佳实施例中,所述步骤s205所描述的过程可由所述堆重排序模块1105执行并实现。

本实施例中,当所述新入文档的键值比所述堆的堆顶文档的键值大,可首先将所述堆的堆顶删除,然后将所述新入文档存储至所述堆的堆顶,以替换原始的堆顶文档。本实施例中,将包括所述新入文档的堆进行重新排序形成一个新的最小堆。详细地,通过重新排序的堆为最小堆,所述服务器100中每次添加了新的文档时,只需要与堆顶文档进行对比,即可保证所述截断链对应的排序在最前面的预设数量(如,top100)的文档在该堆中。

本实施例中的步骤s201-s202与第一实施例中的步骤s101-s102类似,关于步骤s201-s202详细描述可以进一步地参考第一实施例,在此不再赘述。

根据本实施例中的方法,通过将所述截断链中的文档存储至一个最小堆中,能够在检索时能够快速查找到所述截断链中的文档,提高检索效率。另外,将所述截断链中的文档存储为最小堆,使新入文档直接跟所述最小堆的堆顶文档进行比较,就能得到所述新入文档是否比所述最小堆里面的所有文档的完成键值大小的比较,进而保证所述截断链对应的排序在最前面的预设数量(如,top100)的文档在该堆中,以方便后续的索引检索。

第三实施例

本实施例提供一种动态截断方法,本实施例与第一实施例类似,其不同之处在于,如图5所示,本实施例中的方法包括:

步骤s301,对新存入内存的新入文档进行识别,获取所述新入文档的关键字。

步骤s302,获取所述关键字对应的索引链,将所述内存中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成内存的截断链。

步骤s303,判断所述内存存储的数据是否达到阈值。一较佳实施例中,所述步骤s303所描述的过程可由所述内存数据判断模块1106执行并实现。

若所述内存存储的数据已经到达阈值,则执行步骤s304;若所述内存存储的数据未到达阈值,则执行步骤s307,或流程结束。

本实施例中,所述阈值可以是所述服务器100的内存的容量,也可以是所述服务器100内存容量的一定比例,例如,所述内存容量的百分之九十。所述阈值还可以是所述内存能存储的上限。

步骤s304,将所述内存中的数据作为一个数据片段(segment)转存至磁盘中。所述数据片段包括所述内存中存储的文档、索引链及截断链。一较佳实施例中,所述步骤s304所描述的过程可由所述数据转存模块1107执行并实现。

步骤s305,判断所述磁盘中是否存在磁盘截断链。一较佳实施例中,所述步骤s305所描述的过程可由所述截断链判断模块1108执行并实现。

若所述磁盘中存在所述磁盘截断链,则执行步骤s306,若所述磁盘中不存在所述磁盘截断链,则执行步骤s307,或流程结束。

本实施例中,所述磁盘截断链包括所述磁盘中预设数量文档对应的索引。例如,所述预设数量的索引可以是将所述磁盘中的所有文档按照设定规则的排序结果形成的索引链中排序靠前的预设数量的索引。例如,可以是将所述磁盘中的所有文档按照设定规则进行排序,根据排序结果选择所述索引链中预设数量的索引形成磁盘截断链。在一种实施方式中,所述磁盘截断链包括所述磁盘中的预设数量的文档对应的索引。例如,所述磁盘截断链可以是与所述关键字的相关度的相关分数排序前一百的文档形成的索引链。在其它实施方式中,所述磁盘截断链也可以不是根据所述相关分数进行排序形成的索引链,本领域的技术人员可以根据需求设定规则在所述磁盘中形成的所述磁盘截断链。

步骤s306,将新存储至所述磁盘中的截断链与所述磁盘截断链进行合并,生成新的磁盘截断链以替换原始的磁盘截断链。一较佳实施例中,所述步骤s306所描述的过程可由所述截断链合并模块1109执行并实现。

在一种实施方式中,所述索引链以文档与所述关键字的相关度的相关分数进行排序,若所述磁盘中有所述磁盘截断链,则将新存储至所述磁盘中的截断链与磁盘截断链中的各个节点中的相关分数进行比较排序,将排序靠前的指定数量的节点作为新的磁盘截断链,实现截断链的合并。若所述磁盘中没有所述磁盘截断链,则将新存储至所述磁盘中的截断链作为磁盘截断链存储在所述磁盘中。在其它实施方式中,所述索引链也可以为根据其它设定规则对文档进行排序形成的索引链。所述将新存储至所述磁盘中的截断链与所述磁盘截断链进行合并也可以是根据所述设定规则对所述截断链及磁盘截断链中的节点进行排序后形成索引链,然后根据排序结果选择该索引链中预设数量的索引形成所述磁盘截断链。

步骤s307,当所述实时搜索系统接收到检索指令进行检索时,从所述磁盘中加载所述磁盘截断链到内存与该内存中存储的截断链进行合并,得到全局截断链。一较佳实施例中,所述步骤s307所描述的过程可由所述检索链合成模块1110执行并实现。

在一种实施方式中,若所述截断链是以文档与所述关键字的相关度的相关分数进行排序形成的索引链,则内存中的截断链与所述磁盘截断链中的各个节点的相关分数进行排序,将排序在前指定数量的节点形成所述全局截断链。在其它实施方式中,可以将所述截断链与所述磁盘截断链中的节点根据预设规则进行排序形成索引链,然后根据排序结果选择该索引链中预设数量的索引形成所述全局截断链。

步骤s308,所述服务器100的实时搜索系统根据所述全局截断链进行检索得到检索结果。

在一个实例中,所述服务器100可以将所述全局截断链对应的文档的链接返回给发送检索请求的终端进行显示。在其它实例中,所述检索结果还可以是所述全局截断链对应的所有文档。

本实施例中的步骤s301-s302与第一实施例中的步骤s101-s102类似,关于步骤s301-s302详细描述可以进一步地参考第一实施例,在此不再赘述。

进一步地,本实施例中的方法还可以包括第二实施例中的步骤s203-s205。本实施例中的步骤s203-s205在步骤s302之后执行。关于步骤s203-s205的详细描述可进一步地参考第二实施例,在此不再赘述。

现有的一些实时检索方案中,在具体实现实时检索的时候,既要考虑检索量的因素,又要考虑内存性能的问题,往往很难做到内存性能和检索效率兼顾的最优化方案。相反,根据上述实施例中的方法,在所述内存中存储量已经达到阈值时,可以将所述内存中的数据转存至所述磁盘中,在所述服务器100接收到检索请求时,再将所述磁盘截断链加载到内存中,可以使最后的检索结果是磁盘中的文档及内存中的文档的合并结果,以使检索结果能够更接近用户的需求,而且内存的需求量也不会很大,减小内存的使用量,在提高检索效率的同时还能提升内存性能,实现了内存性能和检索效率兼顾的效果。

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

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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