CN109344226A - 一种索引数据更新方法及装置 - Google Patents
一种索引数据更新方法及装置 Download PDFInfo
- Publication number
- CN109344226A CN109344226A CN201811183952.6A CN201811183952A CN109344226A CN 109344226 A CN109344226 A CN 109344226A CN 201811183952 A CN201811183952 A CN 201811183952A CN 109344226 A CN109344226 A CN 109344226A
- Authority
- CN
- China
- Prior art keywords
- index data
- index
- keyword
- data base
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种索引数据更新方法及装置,当服务器接收到索引数据更新消息时,其中,更新消息中包含需要更新的索引数据;则根据该索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线实时、更新。可见,本申请是根据索引数据更新消息,对服务器中相应节点的索引数据库中的需要更新的索引数据进行在线、实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗,从而解决了现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
Description
技术领域
本申请涉及互联网技术领域,具体涉及一种索引数据更新方法及装置。
背景技术
随着互联网技术的日益发展,搜索功能已成为各个网站的一个不可获取的功能,目前很多分布式搜索引擎主要是通过倒排索引的方式从索引数据库中获取与用户输入的查询语句相对应的搜索结果,从而实现搜索功能。
传统的很多分布式搜索引擎采取每天计算全量索引的方法进行索引数据的更新,或者采用N天全量和M天增量的方法(N>M)进行索引数据的更新。这样都要涉及到对全量数据的计算,而大量长尾和非热门数据,在一次次的全量计算中频繁消耗资源和带宽,随着大数据时代的到来,传统的对索引数据的更新方式将造成更多资源和带宽的浪费。
因此,如何升级索引数据的更新方式,实现对索引数据的在线实时更新已成为亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供一种索引数据更新方法及装置,以解决现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
为解决上述问题,本申请实施例提供的技术方案如下:
第一方面,本申请提供了一种索引数据更新方法,所述方法包括:
接收索引数据更新消息,所述更新消息中包含需要更新的索引数据;
根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
在一种可选的实现方式中,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与所述第一关键词之间具有索引关系;
所述根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新,包括:
如果所述线上相应节点的索引数据库中不存在第一文档标识与所述第一关键词,则在所述索引数据库中增加所述第一文档标识、所述第一关键词以及所述第一文档标识与所述第一关键词之间的索引关系;
或者,
如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,但所述索引数据库中并没有存储所述第一文档标识与所述第一关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系;
或者,
如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,且所述索引数据库中存储有所述第一文档标识与第二关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系,并在所述索引数据库中删除所述第一文档标识与所述第二关键词之间的索引关系,所述第二关键词与所述第一关键词为不同的关键词。
在一种可选的实现方式中,所述索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值;
所述方法还包括:
如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中不包含所述第一特征,则在所述索引数据库中增加所述第一文档标识对应的文档的所述第一特征以及所述第一特征的第一值;
或者,
如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中包含所述第一特征以及所述第一特征的第二值,则利用所述第一特征的第一值替换所述第一特征的第二值,所述第一特征的第一值与所述第一特征的第二值不同。
在一种可选的实现方式中,所述方法还包括:
当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
将更新后的索引数据以及所述时间戳持久化至硬盘。
在一种可选的实现方式中,所述方法还包括:
当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
第二方面,本申请提供了一种索引数据更新装置,所述装置包括:
接收单元,用于接收索引数据更新消息,所述更新消息中包含需要更新的索引数据;
更新单元,用于根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
在一种可选的实现方式中,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与所述第一关键词之间具有索引关系;
所述更新单元具体包括:
第一更新子单元,用于如果所述线上相应节点的索引数据库中不存在第一文档标识与所述第一关键词,则在所述索引数据库中增加所述第一文档标识、所述第一关键词以及所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第二更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,但所述索引数据库中并没有存储所述第一文档标识与所述第一关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第三更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,且所述索引数据库中存储有所述第一文档标识与第二关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系,并在所述索引数据库中删除所述第一文档标识与所述第二关键词之间的索引关系,所述第二关键词与所述第一关键词为不同的关键词。
在一种可选的实现方式中,所述索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值;
所述装置还包括:
增加单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中不包含所述第一特征,则在所述索引数据库中增加所述第一文档标识对应的文档的所述第一特征以及所述第一特征的第一值;
或者,
替换单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中包含所述第一特征以及所述第一特征的第二值,则利用所述第一特征的第一值替换所述第一特征的第二值,所述第一特征的第一值与所述第一特征的第二值不同。
在一种可选的实现方式中,所述装置还包括:
记录单元,用于当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
持久化单元,用于将更新后的索引数据以及所述时间戳持久化至硬盘。
在一种可选的实现方式中,所述装置还包括:
获取单元,用于当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
由此可见,本申请实施例具有如下有益效果:
在本申请提供的索引数据更新方法中,当接收到索引数据更新消息时,其中,更新消息中包含需要更新的索引数据;则根据该索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。可见,本申请实施例是根据索引数据更新消息,对服务器中相应节点的索引数据库中需要更新的索引数据进行在线、实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗,从而解决了现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的示例性应用场景的框架示意图;
图2为本申请实施例提供的一种索引数据更新方法的流程图;
图3为本申请实施例提供的倒排索引列表的示意图;
图4为本申请实施例提供的一种索引数据更新装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的研究背景进行简单说明。
近年来,随着互联网技术的蓬勃发展,搜索引擎的搜索功能已成为各个网站的不可或缺的功能,随着大数据时代的到来,需要通过搜索引擎所处理的数据量越来越多,索引数据量也在大幅度增大,所以索引数据的更新量也越来越多。但是,传统的很多分布式搜索引擎采取每天计算全量索引的方法进行索引数据的更新,或者采用N天全量和M天增量的方法(N>M)进行索引数据的更新,都要涉及到对全量索引数据的计算,而大量长尾和非热门数据以及一些未发生变化的索引数据,在一次次的全量计算中频繁消耗资源和带宽,随着大数据技术快速发展,传统的对索引数据的更新方式将造成更多资源和带宽的浪费。
基于此,本申请提出了一种索引数据更新方法及装置,根据索引数据更新消息,对服务器中相应节点的索引数据库中的需要更新的索引数据进行在线实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗。
为了便于解释,下面先对本申请在实际中的应用场景进行介绍。
参见图1,其示出了本申请在实际应用中的场景示例图,如图1所示,本申请提供的索引数据更新方法可以应用于包括终端101和服务器102的应用场景中;其中,本申请中的终端101指的是网站工作人员操作的,用来向服务器102发送信息或者指令的硬件设备,可以是现有的、正在研发的或将来研发的、能够通过任何形式的有线和/或无线连接(例如,Wi-Fi、LAN、蜂窝、同轴电缆等)实现与服务器102交互的任何硬件设备,包括但不限于:现有的、正在研发的或将来研发的智能手机、非智能手机、平板电脑、膝上型个人计算机、桌面型个人计算机、小型计算机、中型计算机、大型计算机等;服务器102可以是现有的、正在研发的或将来研发的、具有存储功能和通信功能的、能够向用户提供搜索数据并更新存储数据的设备的一个示例,在实际部署时,服务器102可以采用独立的设备,也可以采用集群服务器来实现。
如图1所示,在实际应用中,网站的技术工作人员可以通过操作终端101上的信息发送控件,将索引数据更新消息发送给服务器102,其中,该索引数据更新消息中包含了技术工作人员需要服务器102进行更新的索引数据变动信息,当服务器102接收到该索引数据更新消息后,将根据该索引数据更新消息,在线上相对应的节点的索引数据库中,对需要更新的索引数据进行在线、实时更新。可见,本申请是根据索引数据更新消息,对服务器中相应节点的索引数据库中的需要更新的索引数据进行在线、实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗,从而解决了现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
基于以上应用场景,本申请实施例提供了一种索引数据更新方法,以下将结合附图对该方法进行详细说明。
参见图2,其示出了本申请实施例提供的一种索引数据更新方法的流程图,如图2所示,该方法包括:
步骤201:接收索引数据更新消息,该更新消息中包含需要更新的索引数据。
在实际应用中,任何网站的网页内容都不是一成不变的,会随着用户的需求以及网站自身的运营需求而改变,例如对于视频网站来说,对于每天更新的电视剧集,需要在网页上每天上线并显示出当天更新的剧集,以便于用户通过网站页面上的搜索功能,输入相关内容后,可以对应索引到相应的剧集。因此,对于网站服务器来说随时都会有不同的文档、视频等内容需要及时更新,实现网站页面上相应文档、视频等内容的上下线功能,并且生成索引目录,以便于用户通过网站的搜索功能可以索引到相关数据。
对此,在具体实现过程中,首先,需要网站的技术工作人员将索引数据更新消息发送至服务器,其中,索引数据更新消息指的是利用kafka集群传递的索引数据的变动信息,包含了文档数据的新增和修改、删除。而索引数据指的就是文档数据和与该文档数据具有索引关系的分词数据以及二者之间的索引关系。例如,文档数据可以是一部电视剧名称,而与该电视剧的剧名相关的分词可以成为与其具有索引关系的分词数据,所以索引数据更新消息中包含需要更新的索引数据,也就是包含了新增、修改或删除文档数据和与该文档数据具有索引关系的分词数据以及这二者之间的索引关系。服务器在接收索引数据更新消息后,将继续执行步骤202。
步骤202:根据该索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
在实际应用中,服务器的各个节点对应的索引数据库指的是存储各个节点对应的索引数据的数据库,其中,索引数据的存储形式为倒排索引。例如,参见图3,其示出了本申请实施例提供的倒排索引列表的示意图,倒排索引指的是实现“分词-文档矩阵”的一种具体的存储形式,从图3可以看出,在索引数据库中,与分词A(term_A)具有索引关系的文档可以为文档A(doc_A)和文档B(doc_B),如果用户的输入的搜索请求中包含了分词A(term_A),则用户可以索引到的数据为文档A(doc_A)和文档B(doc_B),而索引数据更新消息可能为更改文档A(doc_A)及与其具有索引关系的分词,即,将与文档A(doc_A)具有索引关系的分词,由分词A(term_A)更新为分词E(term_E)、分词F(term_F)、分词B(term_B),也就是将文档A(doc_A)重新进行分词,如图3所示,将文档A(doc_A)由原来的分词结果(Term_A+Term_B+Term_C)更新为DOC_A(Term_E+Term_F+Term_B),并分别建立了文档A(doc_A)与分词E(term_E)、分词F(term_F)、分词B(term_B)之间的索引关系。
举例说明:若文档A(doc_A)为“南京市长江大桥”,则原来的分词结果(Term_A+Term_B+Term_C)可以为(南京市+长江+大桥),重新分词后的结果(Term_E+Term_F)可以为(南京市长+江大桥),即索引数据更新消息可能为更改了文档A(doc_A)及与其具有索引关系的分词,则服务器将根据该索引数据更新消息,对索引数据库中的索引数据进行在线实时更新,即将“南京市长江大桥”及与其具有索引关系的分词进行在线实时修改。
在具体实现过程中,通过步骤201,服务器接收到索引数据更新消息后,可以根据索引数据更新消息,对线上相对应节点的索引数据库中的需要更新的索引数据进行在线、实时更新,也就是说,本申请不再对索引数据库中所有索引数据进行全量更新,而是将全量计算分散划归到服务器的每个节点上,采用线上分布式计算的方式,每个节点只针对有需要更新的索引数据进行更新,其他不需要更新的索引数据不进行计算。
在本申请实施例一些可能的实现方式中,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与第一关键词之间具有索引关系;
则上述步骤202的实现过程具体包括:
如果线上相应节点的索引数据库中不存在第一文档标识与第一关键词,则在索引数据库中增加第一文档标识、第一关键词以及第一文档标识与第一关键词之间的索引关系。
在实际应用中,索引数据更新消息包括第一文档标识和第一关键词,以及第一文档标识与第一关键词之间具有索引关系;其中,第一文档标识指的是能唯一标识出文档的数据,如文档的编号、ID等,例如,若文档为视频资源,则第一文档标识可以是该视频的名字、视频的编号或者是视频的ID等;第一关键词指的与第一文档标识具有索引关系的词,比如,若第一文档标识为一部电视剧的名称,则第一关键词指的是该电视剧名称的分词,比如,假设第一文档标识为电视剧名称“人民的名义”,则第一关键词可以是剧名“人民的名义”的分词(如“人民”、“名义”等)。
在具体实现过程中,如果索引数据库中不存在索引数据更新消息包括的第一文档标识与第一关键词,则根据该索引数据更新消息,服务器将指示对应的节点在索引数据库中添加该第一文档标识、第一关键词以及第一文档标识与第一关键词的索引关系,并将该索引关系添加到索引数据库的索引目录中。
举例说明:若索引数据更新消息包括的第一文档标识为电视剧名“人民的名义”,则与第一文档标识具有索引关系的第一关键词可以为“人民的名义”的分词,例如可以是“名义”,如果对应节点的索引数据库中不存在“人民的名义”这个视频名称,也不存在“名义”这个关键词,则根据该索引数据更新消息,服务器将对线上的相应节点发送指令,指示节点将“人民的名义”和“名义”添加到索引数据库中,并建立二者之间的索引关系,进而将该索引关系添加到索引数据库的索引目录中,以便于当用户输入包含“名义”的搜索请求后,可以索引到电视剧“人民的名义”。
或者,在本申请实施例一些可能的实现方式中,所述索引数据更新消息仍包括第一文档标识和第一关键词,所述第一文档标识与第一关键词之间具有索引关系;
则上述步骤202的实现过程具体包括:
如果线上相应节点的索引数据库中存在第一文档标识与第一关键词,但该索引数据库中并未存储第一文档标识与第一关键词之间的索引关系,则在索引数据库中增加第一文档标识与第一关键词之间的索引关系。
在实际应用中,如果索引数据库中存在第一文档标识与第一关键词,但并未存储有第一文档标识与第一关键词之间的索引关系,例如,该第一文档标识可以与其他关键词具有索引关系,而第一关键词也可能与其他的文档标识具有索引关系,则根据该索引数据更新消息,服务器将指示对应的节点在索引数据库中建立第一文档标识与第一关键词之间的索引关系,并将该索引关系添加到索引数据库的索引目录中。
举例说明:若索引数据更新消息包括的第一文档标识为电视剧名“人民的名义”,则与第一文档标识具有索引关系的第一关键词可以为“人民的名义”的分词,例如可以是“名义”,如果索引数据库中存在“人民的名义”这个视频名称,也存在“名义”这个关键词,但目前索引数据库中并未存储有二者之间的索引关系,则根据该索引数据更新消息,服务器将指示节点在索引数据库中建立视频“人民的名义”和关键词“名义”二者之间的索引关系,并将该索引关系添加到索引数据库的索引目录中,以便于当用户输入包含“名义”的搜索请求后,可以索引到电视剧“人民的名义”。
或者,在本申请实施例一些可能的实现方式中,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与第一关键词之间具有索引关系;
则上述步骤202的实现过程具体包括:
如果线上相应节点的索引数据库中存在文档标识与第一关键词,且存储有文档标识与第二关键词之间具有索引关系,则需要在索引数据库中增加第一文档标识与第一关键词之间的索引关系,并在索引数据库中删除第一文档标识与第二关键词之间的索引关系,第二关键词与所述第一关键词为不同的关键词。
在实际应用中,如果索引数据库中存在第一文档标识与第一关键词,但并未存储第一文档标识与第一关键词之间的索引关系,而是存储了第一文档标识与第二关键词之间的索引关系,其中,第二关键词与第一关键词是不同的,则根据该索引数据更新消息,服务器将指示对应的节点在索引数据库中建立该第一文档标识与第一关键词之间的索引关系,并将该索引关系添加到索引数据库的索引目录中,同时,在索引数据库中删除原来存储的第一文档标识与第二关键词之间的索引关系。
举例说明:若索引数据更新消息包括的第一文档标识为电视剧名“人民的名义”,则与第一文档标识具有索引关系的第一关键词可以为“人民的名义”的分词,例如仍可以是“名义”,如果索引数据库中存在“人民的名义”这个视频名称,也存在“名义”这个关键词,但目前并未存储二者之间的索引关系,存储的是第一文档标识“人民的名义”与第二关键词“人民”之间的索引关系,则根据该索引数据更新消息,服务器将指示节点在索引数据库中建立“人民的名义”和“名义”二者之间的索引关系,并将该索引关系添加到索引数据库的索引目录中,以便于当用户输入包含“名义”的搜索请求后,可以索引到电视剧“人民的名义”。
需要说明的是,第二关键词可以为一个或多个,也就是说,索引数据库中可能存储了第一文档标识与多个关键词(不同于第一关键词)之间的索引关系,则根据索引数据更新消息,服务器可以指示对应的节点在索引数据库中建立该第一文档标识与第一关键词之间的索引关系,并将该索引关系添加到索引数据库的索引目录中,同时,在索引数据库中删除原来存储的第一文档标识与其他一个或者多个关键词之间的索引关系。
此外,在本申请实施例一些可能的实现方式中,索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值,则本申请的方法还包括:
步骤A:如果线上相应节点的索引数据库中第一文档标识对应的文档具有的特征中不包含第一特征,则在索引数据库中增加第一文档标识对应的文档的第一特征以及该第一特征的第一值;
或者,步骤B:如果线上相应节点的索引数据库中第一文档标识对应的文档具有的特征中包含第一特征以及第一特征的第二值,则利用第一特征的第一值替换第一特征的第二值,其中,第一特征的第一值与第一特征的第二值不同。
在本实现方式中,索引数据更新消息不仅可以包括第一文档标识以及与其具有索引关系的第一关键词,还可以包括第一文档标识对应的文档具有的第一特征以及该第一特征的第一值。其中,第一特征指的是文档标识对应的文档包含的特征,第一特征的第一值指的是第一特征的值,例如,如果第一文档标识为某电视剧名称,则第一特征可以指的是该电视剧的一些特征,例如该电视剧每集视频的上线时间、时长、播放次数、更新时间等,进而第一特征的第一值可以为对应第一特征的值,如可以是该电视剧每集视频的时长为45分钟,播放次数为585次等。
则在步骤A中,如果将索引数据更新到索引数据库后,服务器进一步判断出索引数据库中第一文档标识对应的文档具有的特征中不包含第一特征,则根据该索引数据更新消息,服务器将指示相应节点在索引数据库中增加第一文档标识对应的文档的第一特征以及该第一特征的第一值。
举例说明:若索引数据更新消息包括的第一文档标识为电影名“疯狂动物城”,该电影对应的第一特征可以为“影片时长”,相应的第一特征的第一值为“104分钟”,如果将“疯狂动物城”更新到索引数据库后,服务器进一步判断出索引数据库中“疯狂动物城”对应的特征中不包含第一特征,即“时长”,则根据该索引数据更新消息,服务器将指示节点在索引数据库中增加“疯狂动物城”对应的第一特征“时长”,以及“时长”的第一值,即“104分钟”。
或者,在步骤B的具体实现过程中,如果在将索引数据更新到索引数据库后,服务器进一步判断出索引数据库中第一文档标识对应的文档的特征中包含第一特征,但第一特征的值为第二值,而第二值与第一值是不同的,则根据该索引数据更新消息,服务器将指示节点在索引数据库中,利用第一特征的第一值替换第一特征的第二值。
举例说明:若索引数据更新消息包括的第一文档标识仍为电影名“疯狂动物城”,该电影对应的第一特征也仍为“影片时长”,相应的第一特征的第一值为“104分钟”,如果将“疯狂动物城”更新到索引数据库后,服务器进一步判断出索引数据库中“疯狂动物城”对应的特征中包含该第一特征,即“时长”,但“时长”对应的特征值为“95分钟”,则根据该索引数据更新消息,服务器将指示相应节点在索引数据库中,利用第一特征的第一值替换第一特征的第二值,即将“时长”的值由“95分钟”替换为“104分钟”。
通过步骤201及步骤202完成索引数据更新时,在本申请实施例一些可能的实现方式中,本申请还包括:
步骤C:当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
步骤D:将更新后的索引数据以及所述时间戳持久化至硬盘。
在实际应用中,通过步骤201及步骤202完成索引数据更新时,当服务器确认索引数据更新消息中包含的所有需要更新的索引数据全部更新完成后,可以记录这些索引数据完成更新时的时间戳。
进而服务器可以定时利用现有或未来出现的持久化方式,将索引数据库中更新后的索引数据以及记录的时间戳持久化至硬盘,比如,可以利用快照(Snapshotting)、缩写(Append-only file,简称aof)、虚拟内存(desprecated)或传统的B树(B-tree)等方式,将更新后的索引数据以及对应的时间戳持久化至硬盘,以便在服务器发生异常时,可以进行异常快速恢复,避免造成索引数据的丢失。
另外,在本申请实施例其他一些可能的实现方式中,本申请还包括:
当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
在实际应用中,本申请中的服务器的所有节点均只对需要更新的索引数据进行更新,而未对其他不需要进行更新的索引数据进行计算。当服务器出现冷启动时,内存中的数据将全部丢失,需要重新检测硬件,进入CMOS(Complementary MetalOxideSemiconductor),再次启动操作系统,此时,基于上述本申请中索引数据更新的更新方式,为了保证服务器中所有节点均能实现对其对应的需要更新的索引数据进行更新,可以通过拷贝相邻节点的索引数据库中的索引数据以及索引数据的时间戳,进行索引数据的加载和数据拉取,获取到当前节点的索引数据库中的索引数据,从而确保了服务器中所有节点对应的需要更新的索引数据的均被完整更新。
这样,在本申请提供的索引数据更新方法中,当接收到索引数据更新消息时,其中,更新消息中包含需要更新的索引数据;则根据该索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。可见,本申请实施例是根据索引数据更新消息,对服务器中相应节点的索引数据库中的需要更新的索引数据进行在线、实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗,从而解决了现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
上述实施例详细叙述了本申请方法的技术方案,相应地,本申请还提供了索引数据更新装置,下面对该装置进行介绍。
参见图4,图4是本申请实施例提供的一种索引数据更新装置的结构示意图,如图4所示,该装置包括:
接收单元401,用于接收索引数据更新消息,所述更新消息中包含需要更新的索引数据;
更新单元402,用于根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
可选地,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与所述第一关键词之间具有索引关系;
所述更新单元402具体包括:
第一更新子单元,用于如果所述线上相应节点的索引数据库中不存在第一文档标识与所述第一关键词,则在所述索引数据库中增加所述第一文档标识、所述第一关键词以及所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第二更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,但所述索引数据库中并没有存储所述第一文档标识与所述第一关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第三更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,且所述索引数据库中存储有所述第一文档标识与第二关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系,并在所述索引数据库中删除所述第一文档标识与所述第二关键词之间的索引关系,所述第二关键词与所述第一关键词为不同的关键词。
可选地,所述索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值;
所述装置还包括:
增加单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中不包含所述第一特征,则在所述索引数据库中增加所述第一文档标识对应的文档的所述第一特征以及所述第一特征的第一值;
或者,
替换单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中包含所述第一特征以及所述第一特征的第二值,则利用所述第一特征的第一值替换所述第一特征的第二值,所述第一特征的第一值与所述第一特征的第二值不同。
可选地,所述装置还包括:
记录单元,用于当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
持久化单元,用于将更新后的索引数据以及所述时间戳持久化至硬盘。
可选地,所述装置还包括:
获取单元,用于当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
这样,在本申请提供的索引数据更新装置中,当接收到索引数据更新消息时,其中,更新消息中包含需要更新的索引数据;则根据该索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。可见,本申请实施例是根据索引数据更新消息,对服务器中相应节点的索引数据库中的需要更新的索引数据进行在线、实时更新,而不再对所有索引数据进行全量更新,减少了内存及带宽的消耗,从而解决了现有技术中对索引数据进行全量更新计算时频繁消耗资源和带宽的技术问题。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种索引数据更新方法,其特征在于,所述方法包括:
接收索引数据更新消息,所述更新消息中包含需要更新的索引数据;
根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
2.根据权利要求1所述的方法,其特征在于,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与所述第一关键词之间具有索引关系;
所述根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新,包括:
如果所述线上相应节点的索引数据库中不存在第一文档标识与所述第一关键词,则在所述索引数据库中增加所述第一文档标识、所述第一关键词以及所述第一文档标识与所述第一关键词之间的索引关系;
或者,
如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,但所述索引数据库中并没有存储所述第一文档标识与所述第一关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系;
或者,
如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,且所述索引数据库中存储有所述第一文档标识与第二关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系,并在所述索引数据库中删除所述第一文档标识与所述第二关键词之间的索引关系,所述第二关键词与所述第一关键词为不同的关键词。
3.根据权利要求2所述的方法,其特征在于,所述索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值;
所述方法还包括:
如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中不包含所述第一特征,则在所述索引数据库中增加所述第一文档标识对应的文档的所述第一特征以及所述第一特征的第一值;
或者,
如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中包含所述第一特征以及所述第一特征的第二值,则利用所述第一特征的第一值替换所述第一特征的第二值,所述第一特征的第一值与所述第一特征的第二值不同。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
将更新后的索引数据以及所述时间戳持久化至硬盘。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
6.一种索引数据更新装置,其特征在于,所述装置包括:
接收单元,用于接收索引数据更新消息,所述更新消息中包含需要更新的索引数据;
更新单元,用于根据所述索引数据更新消息,对线上相应节点的索引数据库中的索引数据进行在线、实时更新。
7.根据权利要求6所述的装置,其特征在于,所述索引数据更新消息包括第一文档标识和第一关键词,所述第一文档标识与所述第一关键词之间具有索引关系;
所述更新单元具体包括:
第一更新子单元,用于如果所述线上相应节点的索引数据库中不存在第一文档标识与所述第一关键词,则在所述索引数据库中增加所述第一文档标识、所述第一关键词以及所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第二更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,但所述索引数据库中并没有存储所述第一文档标识与所述第一关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系;
或者,
第三更新子单元,用于如果所述线上相应节点的索引数据库中存在所述第一文档标识与所述第一关键词,且所述索引数据库中存储有所述第一文档标识与第二关键词之间的索引关系,则在所述索引数据库中增加所述第一文档标识与所述第一关键词之间的索引关系,并在所述索引数据库中删除所述第一文档标识与所述第二关键词之间的索引关系,所述第二关键词与所述第一关键词为不同的关键词。
8.根据权利要求7所述的装置,其特征在于,所述索引数据更新消息还包括所述第一文档标识对应的文档具有的第一特征以及所述第一特征的第一值;
所述装置还包括:
增加单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中不包含所述第一特征,则在所述索引数据库中增加所述第一文档标识对应的文档的所述第一特征以及所述第一特征的第一值;
或者,
替换单元,用于如果所述线上相应节点的索引数据库中所述第一文档标识对应的文档具有的特征中包含所述第一特征以及所述第一特征的第二值,则利用所述第一特征的第一值替换所述第一特征的第二值,所述第一特征的第一值与所述第一特征的第二值不同。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
记录单元,用于当所述需要更新的索引数据更新完成后,记录所述索引数据完成更新时的时间戳;
持久化单元,用于将更新后的索引数据以及所述时间戳持久化至硬盘。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
获取单元,用于当冷启动时,通过拷贝相邻节点的索引数据库中的索引数据以及所述索引数据的时间戳,获取当前节点的索引数据库中的更新的索引数据,以保证所有节点对应的索引数据库中更新的索引数据的完整性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811183952.6A CN109344226A (zh) | 2018-10-11 | 2018-10-11 | 一种索引数据更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811183952.6A CN109344226A (zh) | 2018-10-11 | 2018-10-11 | 一种索引数据更新方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109344226A true CN109344226A (zh) | 2019-02-15 |
Family
ID=65309344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811183952.6A Pending CN109344226A (zh) | 2018-10-11 | 2018-10-11 | 一种索引数据更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109344226A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196868A (zh) * | 2019-06-06 | 2019-09-03 | 四川新网银行股份有限公司 | 基于分布式的工单流程监控方法 |
CN113343043A (zh) * | 2021-06-29 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 索引的构建方法、检索方法及相应的装置、终端、介质 |
CN113535730A (zh) * | 2021-07-21 | 2021-10-22 | 挂号网(杭州)科技有限公司 | 搜索引擎的索引更新方法及系统、电子设备、存储介质 |
CN113672616A (zh) * | 2021-07-22 | 2021-11-19 | 北京奇艺世纪科技有限公司 | 一种数据索引方法、装置、终端及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750773A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 基于重构与更新比较的索引维护 |
CN105677865A (zh) * | 2016-01-08 | 2016-06-15 | 天津车之家科技有限公司 | 一种索引数据更新方法、系统及搜索引擎 |
-
2018
- 2018-10-11 CN CN201811183952.6A patent/CN109344226A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750773A (zh) * | 2013-12-31 | 2015-07-01 | 国际商业机器公司 | 基于重构与更新比较的索引维护 |
CN105677865A (zh) * | 2016-01-08 | 2016-06-15 | 天津车之家科技有限公司 | 一种索引数据更新方法、系统及搜索引擎 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196868A (zh) * | 2019-06-06 | 2019-09-03 | 四川新网银行股份有限公司 | 基于分布式的工单流程监控方法 |
CN113343043A (zh) * | 2021-06-29 | 2021-09-03 | 北京奇艺世纪科技有限公司 | 索引的构建方法、检索方法及相应的装置、终端、介质 |
CN113343043B (zh) * | 2021-06-29 | 2023-06-23 | 北京奇艺世纪科技有限公司 | 索引的构建方法、检索方法及相应的装置、终端、介质 |
CN113535730A (zh) * | 2021-07-21 | 2021-10-22 | 挂号网(杭州)科技有限公司 | 搜索引擎的索引更新方法及系统、电子设备、存储介质 |
CN113672616A (zh) * | 2021-07-22 | 2021-11-19 | 北京奇艺世纪科技有限公司 | 一种数据索引方法、装置、终端及存储介质 |
CN113672616B (zh) * | 2021-07-22 | 2023-08-15 | 北京奇艺世纪科技有限公司 | 一种数据索引方法、装置、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Congosto et al. | T-Hoarder: A framework to process Twitter data streams | |
Pomerantz | Metadata | |
CN109344226A (zh) | 一种索引数据更新方法及装置 | |
Jagadish et al. | Big data and its technical challenges | |
US9069800B2 (en) | Parallel database backup and restore | |
US20090094189A1 (en) | Methods, systems, and computer program products for managing tags added by users engaged in social tagging of content | |
CN110119473A (zh) | 一种目标文件知识图谱的构建方法及装置 | |
CN113051347B (zh) | 异构数据库之间数据同步方法、系统、设备及存储介质 | |
CN110275962B (zh) | 用于输出信息的方法和装置 | |
CN104598550B (zh) | 一种网络视频索引的更新方法和装置 | |
CN111886608A (zh) | 以用户为中心的人工智能知识库 | |
CN115858513A (zh) | 数据治理方法、装置、计算机设备和存储介质 | |
Xiong et al. | Data vitalization's perspective towards smart city: a reference model for data service oriented architecture | |
Rehman et al. | Building socially-enabled event-enriched maps | |
Groth | The origin of data: Enabling the determination of provenance in multi-institutional scientific systems through the documentation of processes | |
CN103809915B (zh) | 一种磁盘文件的读写方法和装置 | |
Lee et al. | LifeLogOn: A practical lifelog system for building and exploiting lifelog ontology | |
Karypidis et al. | Automated context aggregation and file annotation for PAN-based computing | |
Flahive et al. | Large scale ontology tailoring and simulation in the semantic grid environment | |
US11373230B1 (en) | Probabilistic determination of compatible content | |
Riasetiawan et al. | 360Degree Data Analysis and Visualization for COVID-19 Mitigation in Indonesia | |
US20200142625A1 (en) | Data Management System for Storage Tiers | |
Owens et al. | The invention and dissemination of the spacer gif: Implications for the future of access and use of web archives | |
Zschorn et al. | Microservice api design to support c2 semantic integration | |
Jarke et al. | Reflective community information systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190215 |
|
RJ01 | Rejection of invention patent application after publication |