CN104361009B - 一种基于倒排索引的实时索引方法 - Google Patents
一种基于倒排索引的实时索引方法 Download PDFInfo
- Publication number
- CN104361009B CN104361009B CN201410536018.3A CN201410536018A CN104361009B CN 104361009 B CN104361009 B CN 104361009B CN 201410536018 A CN201410536018 A CN 201410536018A CN 104361009 B CN104361009 B CN 104361009B
- Authority
- CN
- China
- Prior art keywords
- data
- index database
- index
- internal memory
- disk
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000015572 biosynthetic process Effects 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 3
- 230000003247 decreasing effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001347978 Major minor Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于倒排索引的实时索引方法,包括以下步骤:对数据进行预处理;更新内存索引库;更新磁盘索引库。本发明提供的基于倒排索引的实时索引方法,在保持尽量不影响检索性能的前提下,消减用于更新的索引库数量,同时去除内存库对数据量的限制,针对性的对多路处理器进行优化,更好的支持多路并发多线程的数据更新,提供更灵活的数据更新方式以及高效的数据更新效率,增强数据的及时性,给用户以良好的检索体验。
Description
技术领域
本发明涉及一种索引方法,具体涉及一种基于倒排索引的实时索引方法。
背景技术
对于文本索引领域,在不影响当前系统正常运行的情况下对新数据以及更新
数据的实时快速索引一直都是需要公关的课题,其实时数据更新速度尤其对于资讯类的服务非常重要,直接影响到用户体验以及推送信息的及时性。目前检索系统的实时更新方式形式多样,但都是根据索引结构进行更新优化,以尽量加快更新速度。按照索引更新方式基本都可以归结为两大类:
(1)主索引库+辅助索引库
主索引库包含绝大部分数据,辅助索引库包含近期的索引数据以及需要更新的主索引库中的数据;辅助索引库中的数据可以使用时间作为边界,例如:辅助索引库中只装入当天的数据,外加主索引库中的更新数据;另外,在合适的时间对主索引库和辅助索引库进行合并操作,生成新的主索引库,同时清空辅助索引库,为下一个时间段的数据加载及更新预留出空间;在检索期间,会同时检索主辅两个索引库,并对检索结果进行合并,生成最终的检索结果。
(2)多个磁盘索引库+单个内存索引库
主要数据存储于多个独立的磁盘索引库中,每一批的新数据以及历史数据的更新都会加入到唯一的内存索引库中,每当内存索引库中的数据达到设定的阈值,就会将内存索引库中的数据,刷入一个全新的磁盘索引库,同时清空内存索引库,为下一批数据预留索引空间;对于多个磁盘索引库,会在合适的时机,按照一定的算法,进行分步合并,以尽量减少磁盘索引库的数量;在检索期间,会同时检索多个磁盘索引库以及内存索引库,并对检索结果进行合并,生产最终的检索结果。
基于主索引库+辅助索引库的方式,由于为了提高更新新能,缩短更新时间,辅助索引库需要全部放入内存中,随着单一时间段内数据量的增加,会导致辅助索引库对内存的大量消耗,必须对单一时间内的更新数据量加以限制,这就极大的限制了这种技术的应用场合;
基于多个磁盘索引库+独立内存索引库的方案,在内存索引库容量达到一定程度后,会将内存库刷入磁盘,这样避免了内存索引可的容量限制,但由于多个磁盘索引库的存在,且不能及时的合并,会导致在检索期间需要去查询多个独立的索引库(多个磁盘库+内存库),使检索性能下降,影响用户体验。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于倒排索引的实时索引方法,在保持尽量不影响检索性能的前提下,消减用于更新的索引库数量,同时去除内存库对数据量的限制,针对性的对多路处理器进行优化,更好的支持多路并发多线程的数据更新,提供更灵活的数据更新方式以及高效的数据更新效率,增强数据的及时性,给用户以良好的检索体验。
为了实现上述发明目的,本发明采取如下技术方案:
本发明提供一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤:
步骤1:对数据进行预处理;
步骤2:更新内存索引库;
步骤3:更新磁盘索引库。
所述步骤1包括以下步骤:
步骤1-1:对更新数据或新数据进行解析;
步骤1-2:对解析后的数据进行分词;
步骤1-3:将分词后的数据进行预排序。
所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析。
所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置。
所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序。
所述步骤2包括以下步骤:
步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆;
步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列n堆的数据,形成临时索引库;
步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库;
步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用;
步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新。
所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中,
所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度。
所述步骤3包括以下步骤:
步骤3-1:内存索引库状态切换;
步骤3-2:磁盘索引库分堆合并;
步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成;
步骤3-4:取消临时索引库在检索逻辑控制器注册;
步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用。
所述步骤3-1包括以下步骤:
步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态;
步骤3-1-2:清空临时索引库,并将临时索引库初始化;
步骤3-1-3:将内存索引库与临时索引库进行交换;
步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索;
步骤3-1-5:释放并清空内存索引库使用的资源;
步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态。
所述步骤3-2包括以下步骤:
步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并;
步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换;
步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
与现有技术相比,本发明的有益效果在于:
1.本发明采用并发多线程更新及临时库替换策略,对于更新效率以及减少多库查询导致的检索效率下降都有明显的改善;
2.同时可以尽量最大化的利用系统资源对更新性能的提升提供更强有力的支持,提升用户体验,;
3.从内存索引库和磁盘索引库的更新流程上,考虑多线程并发更新的策略,充分利用现代计算机多路多核CPU的优势,充分利用CPU资源,提高索引更新性能,缩短更新时间;
4.对比以往更新索引方式,本发明极大的减少了更新期间的索引库数量,避免了检索期间对多个索引库的检索,提高了检索性能;
5.避免了内存索引库对数据量的限制性,适用范围更为广泛。
附图说明
图1是本发明实施例中内存索引库更新流程图;
图2是本发明实施例中磁盘索引库更新流程图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
本发明提供一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤:
步骤1:对数据进行预处理;
步骤2:更新内存索引库;
步骤3:更新磁盘索引库。
所述步骤1包括以下步骤:
步骤1-1:对更新数据或新数据进行解析;
步骤1-2:对解析后的数据进行分词;
步骤1-3:将分词后的数据进行预排序。
所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析。
所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置。
所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序。
如图1,所述步骤2包括以下步骤:
步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆;
步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列n堆的数据,形成临时索引库;
步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库;
步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用;
步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新。
所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中,
所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度。
如图2,所述步骤3包括以下步骤:
步骤3-1:内存索引库状态切换;
步骤3-2:磁盘索引库分堆合并;
步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成;
步骤3-4:取消临时索引库在检索逻辑控制器注册;
步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用。
所述步骤3-1包括以下步骤:
步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态;
步骤3-1-2:清空临时索引库,并将临时索引库初始化;
步骤3-1-3:将内存索引库与临时索引库进行交换;
步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索;
步骤3-1-5:释放并清空内存索引库使用的资源;
步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态。
所述步骤3-2包括以下步骤:
步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并;
步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换;
步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
Claims (1)
1.一种基于倒排索引的实时索引方法,其特征在于:所述方法包括以下步骤:
步骤1:对数据进行预处理;
步骤2:更新内存索引库;
步骤3:更新磁盘索引库;
所述步骤1包括以下步骤:
步骤1-1:对更新数据或新数据进行解析;
步骤1-2:对解析后的数据进行分词;
步骤1-3:将分词后的数据进行预排序;
所述步骤1-1中,先根据索引配置文件挑选需要进行索引的数据,后对挑选出的数据进行去噪处理,采用去除无用符号对数据进行去噪处理,即完成对更新数据或新数据进行解析;
所述步骤1-2中,先根据需要对待处理数据进行分词,后对分词后的数据标记词语所在文档的ID,字段号及位置;
所述步骤1-3中,先根据已标记好词语的分词数据进行统计,统计相同词语出现的次数及位置,并对统计后的数据进行预排序;
所述步骤2包括以下步骤:
步骤2-1:将经过预排序的数据按照索引库逻辑拆分规则进行分堆;
步骤2-2:对分堆后的数据进行倒序排列,同时倒需排列n堆的数据,形成临时索引库;
步骤2-3:按照索引库逻辑拆分规则,同时对现有内存索引库与形成的临时索引库进行索引数据合并,形成新的内存索引库;
步骤2-4:使用新形成的内存索引库,替换在线的内存索引库,同时将新形成的内存索引库保存到本地磁盘,以备系统重启恢复时使用;
步骤2-5:释放被替换的内存索引库资源,完成本轮内存索引库更新;
所述步骤2-2中,根据系统负载及CPU使用情况启动多个线程并发执行,对分堆后的数据进行倒序排序过程中;
所述步骤2-3中,根据当前系统负载决定并发合并的数量,对现有内存索引库与形成的临时索引库引进行索引数据合并,以加快索引数据合并速度;
所述步骤3包括以下步骤:
步骤3-1:内存索引库状态切换;
步骤3-2:磁盘索引库分堆合并;
步骤3-3:等待磁盘索引库与临时索引库所有分组索引数据合并完成;
步骤3-4:取消临时索引库在检索逻辑控制器注册;
步骤3-5:保存磁盘索引库信息到磁盘,以备恢复使用;
所述步骤3-1包括以下步骤:
步骤3-1-1:在检索逻辑控制器中对磁盘索引库更新状态标记进行修改,改为正在更新状态;
步骤3-1-2:清空临时索引库,并将临时索引库初始化;
步骤3-1-3:将内存索引库与临时索引库进行交换;
步骤3-1-4:注册临时索引库到检索逻辑控制器,使检索过程中将对临时索引库进行检索;
步骤3-1-5:释放并清空内存索引库使用的资源;
步骤3-1-6:在检索逻辑控制器中修改磁盘索引库更新状态标记,改为未更新状态;
所述步骤3-2包括以下步骤:
步骤3-2-1:按照索引库逻辑拆分规则,对磁盘索引库和临时索引库进行索引数据合并;
步骤3-2-2:索引数据合并完成后,删除磁盘索引库中对应堆的磁盘索引数据,并将使用新生成的对应堆索引数据进行替换;
步骤3-2-3:对索引数据合并过程进行监控,根据系统负载及CPU使用情况,增加或减小线程并发数量,以提高系统资源的利用率,加磁盘索引库快的索引数据合并速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410536018.3A CN104361009B (zh) | 2014-10-11 | 2014-10-11 | 一种基于倒排索引的实时索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410536018.3A CN104361009B (zh) | 2014-10-11 | 2014-10-11 | 一种基于倒排索引的实时索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104361009A CN104361009A (zh) | 2015-02-18 |
CN104361009B true CN104361009B (zh) | 2017-10-31 |
Family
ID=52528271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410536018.3A Expired - Fee Related CN104361009B (zh) | 2014-10-11 | 2014-10-11 | 一种基于倒排索引的实时索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361009B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804477A (zh) * | 2017-05-05 | 2018-11-13 | 广东神马搜索科技有限公司 | 动态截断方法、装置及服务器 |
CN110019980B (zh) * | 2017-11-27 | 2022-10-25 | 腾讯科技(深圳)有限公司 | 索引处理方法、装置、存储介质和计算机设备 |
CN108573063A (zh) * | 2018-04-27 | 2018-09-25 | 宁波银行股份有限公司 | 一种数据查询方法及系统 |
US11429676B2 (en) | 2019-10-18 | 2022-08-30 | International Business Machines Corporation | Document flagging based on multi-generational complemental secondary data |
CN112835867A (zh) * | 2021-01-11 | 2021-05-25 | 中国农业银行股份有限公司 | 一种数据预处理方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0981096A1 (en) * | 1998-08-17 | 2000-02-23 | Solar Information Co. Ltd. | Searching system for searching files stored in a hard disc of a personal computer |
CN101136016A (zh) * | 2006-09-01 | 2008-03-05 | 北大方正集团有限公司 | 一种全文检索系统的索引在线更新方法 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN102939581A (zh) * | 2010-05-27 | 2013-02-20 | 微软公司 | 多个线程对文档的并发利用 |
CN103473229A (zh) * | 2012-06-06 | 2013-12-25 | 深圳市世纪光速信息技术有限公司 | 一种内存检索系统和方法、以及实时检索系统和方法 |
CN103823799A (zh) * | 2012-11-16 | 2014-05-28 | 镇江诺尼基智能技术有限公司 | 新一代行业知识全文检索方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290243A1 (en) * | 2012-04-26 | 2013-10-31 | Cloudtree, Inc. | Method and system for transaction representation in append-only datastores |
US9104560B2 (en) * | 2012-06-13 | 2015-08-11 | Caringo, Inc. | Two level addressing in storage clusters |
-
2014
- 2014-10-11 CN CN201410536018.3A patent/CN104361009B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0981096A1 (en) * | 1998-08-17 | 2000-02-23 | Solar Information Co. Ltd. | Searching system for searching files stored in a hard disc of a personal computer |
CN101136016A (zh) * | 2006-09-01 | 2008-03-05 | 北大方正集团有限公司 | 一种全文检索系统的索引在线更新方法 |
CN102939581A (zh) * | 2010-05-27 | 2013-02-20 | 微软公司 | 多个线程对文档的并发利用 |
CN102169507A (zh) * | 2011-05-26 | 2011-08-31 | 厦门雅迅网络股份有限公司 | 一种分布式实时搜索引擎 |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN103473229A (zh) * | 2012-06-06 | 2013-12-25 | 深圳市世纪光速信息技术有限公司 | 一种内存检索系统和方法、以及实时检索系统和方法 |
CN103823799A (zh) * | 2012-11-16 | 2014-05-28 | 镇江诺尼基智能技术有限公司 | 新一代行业知识全文检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104361009A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104361009B (zh) | 一种基于倒排索引的实时索引方法 | |
JP6014925B2 (ja) | メモリ回収方法および装置 | |
CN103425663B (zh) | 嵌入式系统数据库创建表、存记录、删记录的方法和装置 | |
CN104809237B (zh) | LSM-tree索引的优化方法和装置 | |
CN105573660B (zh) | 用于改善分簇磁盘阵列的性能的方法和装置 | |
US7454420B2 (en) | Data sorting method and system | |
CN105095287B (zh) | Lsm数据合并排序方法和装置 | |
US10706034B2 (en) | Query access optimizations for tiered index architecture | |
CN106339324B (zh) | 一种选择垃圾回收块的方法及装置 | |
CN103995855B (zh) | 存储数据的方法和装置 | |
CN103885728A (zh) | 一种基于固态盘的磁盘缓存系统 | |
CN104335175A (zh) | 基于系统性能度量在系统节点之间标识和迁移线程的方法和系统 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
CN103246696A (zh) | 高并发数据库的访问方法及应用于多服务器系统的方法 | |
CN106383666B (zh) | 一种数据存储方法及装置 | |
CN103488684A (zh) | 基于缓存数据多线程处理的电力可靠性指标快速计算方法 | |
CN103164490A (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN108984130A (zh) | 一种分布式存储的缓存读取方法及其装置 | |
CN103020255A (zh) | 分级存储方法和装置 | |
CN104808952A (zh) | 数据缓存方法及装置 | |
CN103345451A (zh) | 一种在多核处理器中缓冲数据的方法 | |
WO2018236429A1 (en) | METADATA LOAD DISTRIBUTION MANAGEMENT | |
CN109508144A (zh) | 一种日志处理方法及相关装置 | |
CN103543901B (zh) | 生成菜单的方法和装置 | |
US8954646B2 (en) | Method for managing a plurality of blocks of a flash memory, and associated memory device and controller thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171031 |