一种基于倒排索引的实时索引方法

文档序号:6629938阅读:154来源:国知局
一种基于倒排索引的实时索引方法
【专利摘要】本发明提供一种基于倒排索引的实时索引方法,包括以下步骤:对数据进行预处理;更新内存索引库;更新磁盘索引库。本发明提供的基于倒排索引的实时索引方法,在保持尽量不影响检索性能的前提下,消减用于更新的索引库数量,同时去除内存库对数据量的限制,针对性的对多路处理器进行优化,更好的支持多路并发多线程的数据更新,提供更灵活的数据更新方式以及高效的数据更新效率,增强数据的及时性,给用户以良好的检索体验。
【专利说明】一种基于倒排索引的实时索引方法

【技术领域】
[0001]本发明涉及一种索引方法,具体涉及一种基于倒排索引的实时索引方法。

【背景技术】
[0002]对于文本索引领域,在不影响当前系统正常运行的情况下对新数据以及更新
[0003]数据的实时快速索引一直都是需要公关的课题,其实时数据更新速度尤其对于资讯类的服务非常重要,直接影响到用户体验以及推送信息的及时性。目前检索系统的实时更新方式形式多样,但都是根据索引结构进行更新优化,以尽量加快更新速度。按照索引更新方式基本都可以归结为两大类:
[0004](I)主索引库+辅助索引库
[0005]主索引库包含绝大部分数据,辅助索引库包含近期的索引数据以及需要更新的主索引库中的数据;辅助索引库中的数据可以使用时间作为边界,例如:辅助索引库中只装入当天的数据,外加主索引库中的更新数据;另外,在合适的时间对主索引库和辅助索引库进行合并操作,生成新的主索引库,同时清空辅助索引库,为下一个时间段的数据加载及更新预留出空间;在检索期间,会同时检索主辅两个索引库,并对检索结果进行合并,生成最终的检索结果。
[0006](2)多个磁盘索引库+单个内存索引库
[0007]主要数据存储于多个独立的磁盘索引库中,每一批的新数据以及历史数据的更新都会加入到唯一的内存索引库中,每当内存索引库中的数据达到设定的阈值,就会将内存索引库中的数据,刷入一个全新的磁盘索引库,同时清空内存索引库,为下一批数据预留索引空间;对于多个磁盘索引库,会在合适的时机,按照一定的算法,进行分步合并,以尽量减少磁盘索引库的数量;在检索期间,会同时检索多个磁盘索引库以及内存索引库,并对检索结果进行合并,生产最终的检索结果。
[0008]基于主索引库+辅助索引库的方式,由于为了提高更新新能,缩短更新时间,辅助索引库需要全部放入内存中,随着单一时间段内数据量的增加,会导致辅助索引库对内存的大量消耗,必须对单一时间内的更新数据量加以限制,这就极大的限制了这种技术的应用场合;
[0009]基于多个磁盘索引库+独立内存索引库的方案,在内存索引库容量达到一定程度后,会将内存库刷入磁盘,这样避免了内存索引可的容量限制,但由于多个磁盘索引库的存在,且不能及时的合并,会导致在检索期间需要去查询多个独立的索引库(多个磁盘库+内存库),使检索性能下降,影响用户体验。


【发明内容】

[0010]为了克服上述现有技术的不足,本发明提供一种基于倒排索引的实时索引方法,在保持尽量不影响检索性能的前提下,消减用于更新的索引库数量,同时去除内存库对数据量的限制,针对性的对多路处理器进行优化,更好的支持多路并发多线程的数据更新,提供更灵活的数据更新方式以及高效的数据更新效率,增强数据的及时性,给用户以良好的检索体验。
[0011]为了实现上述发明目的,本发明采取如下技术方案:
[0012]本发明提供一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤:
[0013]步骤1:对数据进行预处理;
[0014]步骤2:更新内存索引库;
[0015]步骤3:更新磁盘索引库。
[0016]所述步骤I包括以下步骤:
[0017]步骤1-1:对更新数据或新数据进行解析;
[0018]步骤1-2:对解析后的数据进行分词;
[0019]步骤1-3:将分词后的数据进行预排序。
[0020]所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析。
[0021]所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置。
[0022]所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序。
[0023]所述步骤2包括以下步骤:
[0024]步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆;
[0025]步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列η堆的数据,形成临时索引库;
[0026]步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库;
[0027]步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用;
[0028]步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新。
[0029]所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中,
[0030]所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度。
[0031]所述步骤3包括以下步骤:
[0032]步骤3-1:内存索引库状态切换;
[0033]步骤3-2:磁盘索引库分堆合并;
[0034]步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成;
[0035]步骤3-4:取消临时索引库在检索逻辑控制器注册;
[0036]步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用。
[0037]所述步骤3-1包括以下步骤:
[0038]步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态;
[0039]步骤3-1-2:清空临时索引库,并将临时索引库初始化;
[0040]步骤3-1-3:将内存索引库与临时索引库进行交换;
[0041]步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索;
[0042]步骤3-1-5:释放并清空内存索引库使用的资源;
[0043]步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态。
[0044]所述步骤3-2包括以下步骤:
[0045]步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并;
[0046]步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换;
[0047]步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
[0048]与现有技术相比,本发明的有益效果在于:
[0049]1.本发明采用并发多线程更新及临时库替换策略,对于更新效率以及减少多库查询导致的检索效率下降都有明显的改善;
[0050]2.同时可以尽量最大化的利用系统资源对更新性能的提升提供更强有力的支持,提升用户体验,;
[0051]3.从内存索引库和磁盘索引库的更新流程上,考虑多线程并发更新的策略,充分利用现代计算机多路多核CPU的优势,充分利用CPU资源,提高索引更新性能,缩短更新时间;
[0052]4.对比以往更新索引方式,本发明极大的减少了更新期间的索引库数量,避免了检索期间对多个索引库的检索,提高了检索性能;
[0053]5.避免了内存索引库对数据量的限制性,适用范围更为广泛。

【专利附图】

【附图说明】
[0054]图1是本发明实施例中内存索引库更新流程图;
[0055]图2是本发明实施例中磁盘索引库更新流程图。

【具体实施方式】
[0056]下面结合附图对本发明作进一步详细说明。
[0057]本发明提供一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤:
[0058]步骤1:对数据进行预处理;
[0059]步骤2:更新内存索引库;
[0060]步骤3:更新磁盘索引库。
[0061]所述步骤I包括以下步骤:
[0062]步骤1-1:对更新数据或新数据进行解析;
[0063]步骤1-2:对解析后的数据进行分词;
[0064]步骤1-3:将分词后的数据进行预排序。
[0065]所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析。
[0066]所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置。
[0067]所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序。
[0068]如图1,所述步骤2包括以下步骤:
[0069]步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆;
[0070]步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列η堆的数据,形成临时索引库;
[0071]步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库;
[0072]步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用;
[0073]步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新。
[0074]所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中,
[0075]所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度。
[0076]如图2,所述步骤3包括以下步骤:
[0077]步骤3-1:内存索引库状态切换;
[0078]步骤3-2:磁盘索引库分堆合并;
[0079]步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成;
[0080]步骤3-4:取消临时索引库在检索逻辑控制器注册;
[0081]步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用。
[0082]所述步骤3-1包括以下步骤:
[0083]步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态;
[0084]步骤3-1-2:清空临时索引库,并将临时索引库初始化;
[0085]步骤3-1-3:将内存索引库与临时索引库进行交换;
[0086]步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索;
[0087]步骤3-1-5:释放并清空内存索引库使用的资源;
[0088]步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态。
[0089]所述步骤3-2包括以下步骤:
[0090]步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并;
[0091]步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换;
[0092]步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
[0093]最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的【具体实施方式】进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
【权利要求】
1.一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤: 步骤1:对数据进行预处理; 步骤2:更新内存索引库; 步骤3:更新磁盘索引库。
2.根据权利要求1所述的基于倒排索引的实时索引方法,其特征在于:所述步骤I包括以下步骤: 步骤1-1:对更新数据或新数据进行解析; 步骤1-2:对解析后的数据进行分词; 步骤1-3:将分词后的数据进行预排序。
3.根据权利要求2所述的基于倒排索引的实时索引方法,其特征在于:所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析。
4.根据权利要求2所述的基于倒排索引的实时索引方法,其特征在于:所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置。
5.根据权利要求2所述的基于倒排索引的实时索引方法,其特征在于:所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序。
6.根据权利要求2所述的基于倒排索引的实时索引方法,其特征在于:所述步骤2包括以下步骤: 步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆; 步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列η堆的数据,形成临时索引库; 步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库; 步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用; 步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新。
7.根据权利要求6所述的基于倒排索引的实时索引方法,其特征在于:所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中, 所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度。
8.根据权利要求1所述的基于倒排索引的实时索引方法,其特征在于:所述步骤3包括以下步骤: 步骤3-1:内存索引库状态切换; 步骤3-2:磁盘索引库分堆合并; 步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成; 步骤3-4:取消临时索引库在检索逻辑控制器注册; 步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用。
9.根据权利要求8所述的基于倒排索引的实时索引方法,其特征在于:所述步骤3-1包括以下步骤: 步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态; 步骤3-1-2:清空临时索引库,并将临时索引库初始化; 步骤3-1-3:将内存索引库与临时索引库进行交换; 步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索; 步骤3-1-5:释放并清空内存索引库使用的资源; 步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态。
10.根据权利要求8所述的基于倒排索引的实时索引方法,其特征在于:所述步骤3-2包括以下步骤: 步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并; 步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换; 步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
【文档编号】G06F17/30GK104361009SQ201410536018
【公开日】2015年2月18日 申请日期:2014年10月11日 优先权日:2014年10月11日
【发明者】张宏利, 高勇, 秦飞, 樊云红, 郭永福 申请人:北京中搜网络技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1