CN103020299B - 全文检索中倒排索引及其追加数据的保存方法及存储装置 - Google Patents

全文检索中倒排索引及其追加数据的保存方法及存储装置 Download PDF

Info

Publication number
CN103020299B
CN103020299B CN201210591989.9A CN201210591989A CN103020299B CN 103020299 B CN103020299 B CN 103020299B CN 201210591989 A CN201210591989 A CN 201210591989A CN 103020299 B CN103020299 B CN 103020299B
Authority
CN
China
Prior art keywords
indexing units
units data
data
tree
stored
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.)
Active
Application number
CN201210591989.9A
Other languages
English (en)
Other versions
CN103020299A (zh
Inventor
范振勇
吴震
张学
崔维力
武新
赵伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin NanKai University General Data Technologies Co., Ltd.
National Computer Network and Information Security Management Center
Original Assignee
TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd
National Computer Network and Information Security Management Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd, National Computer Network and Information Security Management Center filed Critical TIANJIN NANKAI UNIVERSITY GENERAL DATA TECHNOLOGIES Co Ltd
Priority to CN201210591989.9A priority Critical patent/CN103020299B/zh
Publication of CN103020299A publication Critical patent/CN103020299A/zh
Application granted granted Critical
Publication of CN103020299B publication Critical patent/CN103020299B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种全文检索***中的高效保存倒排索引的方法,包括:检测索引单元数据长度是否大于阀值K;如果索引单元数据大于n*K且小于(n+1)*K(n为自然数),将索引单元数据从开始部分至n*K的部分存入索引单元数据数据块,将剩余索引单元数据存入B树中;如果索引单元数据等于n*K,将索引单元数据从开始部分至n*K的部分存入索引单元数据数据块;如果索引单元数据小于K,将索引单元数据全部存入B树中。本发明的有益效果是能够有效的提高倒排文档的全文索引的存储效率,提高了数据读取速率,能够方便实现写时复制(Copy?On?Write)机制,进而提高了数据安全性和读取数据的并发指标。

Description

全文检索中倒排索引及其追加数据的保存方法及存储装置
技术领域
本发明属于数据存储领域,尤其是涉及一种在全文检索中倒排索引及其追加数据的保存方法及存储装置
背景技术
在关系数据库***里,全文索引是检索文档数据最有效率的方式之一,在当前的网络环境下,信息量和用户量都成***性的增长,全文索引成为信息检索***的主要手段之一,倒排索引是全文检索***的核心部分,其存储结构对全文检索***性能也有很大的影响。
倒排索引(英语:Invertedindex),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索***中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。
全文索引倒排文档数据是由TermID对应的一组文档编号和在文档中的偏移组成,其表现形式为TermID-->{<docID,{offset}},其中TermID是断词器划分的最小索引单元,在中文全文检索中一般为字、词、英文、数字串和几种形式的组合,具有以下特点:
1.不同Term对应倒排数据长度相差很大,常见的字如“的”、“地”等字符往往出现频率相当的高,也有仅出现一次的特殊字符串。
2.全文索引中词汇量巨大,往往一个全文检索库会拥有千万个词汇,每一个词汇都作为一个检索单元,会占用大量的存储空间
全文索引倒排数据的存储一般有两种:一、采用经验数据把已知词典按词频划分为中、高、低几档的方式,每档词频采用不同的数据块大小存储,存储高频词的每块数据较大,反之最低频率块最小。这种方式的好处是磁盘浪费较少,读取效率有保障,缺点是一旦实际数据与经验数据不符或者出现新的词汇时,词频发生较大变化,则出现高频词空间浪费,低频词词链超长造成读取效率低。二、采用划分大数据单元的方式,如每1GB数据为一个单元,每个单元中所有倒排文档数据按词条编号、文档编号、偏移量(TermID、DocID、Offset)排序,在索引完成之前把所有的数据单元进行数据合并为一个最终单元。这种方式的优点是空间浪费为0,缺点是最终的数据排序需要一倍磁盘剩余空间,造成磁盘空间利用率为50%,合并的时间较长。
发明内容
本发明要解决的问题是提供一种在全文检索***中的高效保存索引的方法,可以充分提高磁盘空间利用率。
为解决上述技术问题,本发明采用的技术方案是:一种在全文检索***中的高效保存索引的方法,包括:
1)比较索引单元数据长度和预设的阀值K的大小关系;
2)如果索引单元数据长度小于K,将索引单元数据全部存入B树中;
3)如果索引单元数据长度等于K,将索引单元数据从开始部分至K的部分存入索引单元数据数据块;
4)如果大于K,则比较索引单元数据长度和n*K(n=2,3,……)的大小关系,并按照下列方式进行存储:
a.如果索引单元数据长度大于(n-1)*K且小于n*K,将索引单元数据从开始部分至(n-1)*K部分存入索引单元数据块,将剩余部分存入B树中;
b.如果索引单元数据长度等于n*K,将所有索引单元数据按次序存入索引单元数据块。
进一步的,所述的B树可以存储至少两个长度小于K值或者长度大于K值存储在块设备之后的剩余数据的索引单元数据。
进一步的,所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。
根据本发明的另一方面,本发明还提供了一种高效保存索引方法的存储装置,包括:
存储数据块单元,用来存储K的整数倍的索引单元数据;
B树存储页单元,用来存储索引单元数据不足K的剩余部分。
进一步的,所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。
根据本发明所提供的一种高效保存索引方法的存储装置的追加全文索引数据的存储方法:
1)计算原B树中的索引单元数据与追加的索引单元数据之和;
2)如果索引单元数据长度之和大于n*K且小于(n+1)*K(n=2,3……),将B树存储的部分取出并将索引单元数据从B树存储的部分至n*K的部分存入索引单元数据数据块,将剩余索引单元数据存入B树中;
3)如果索引单元数据之和等于n*K,将B树存储的部分取出并将索引单元数据从B树存储部分至n*K的部分存入索引单元数据块;
4)如果索引单元数据之和小于K,则将追加部分依次存入原B树存储部分。
由于采用上述技术方案,能够有效的提高倒排文档的全文索引的存储效率,减少了磁盘空间的浪费,有效提高了数据读取速率;能够方便实现写时复制(CopyOnWrite)机制,进而提高了数据安全性和读取数据的并发指标。
附图说明
图1是本发明的高效保存索引方法及追加数据的保存方法流程示意图
图2是本发明中一个实例的存储示意图
图3是本发明实例中实现写时复制机制的示意图
具体实施方式
在本发明的一个实施运用场景中,根据全文建立起相应的全文索引倒排文档数据,其表示形式为TermID(词条编号)-->{<docID(文档编号),{offset}(偏移量)},在本实例中采用B树结合块文件的方式来存储Key-Value数据,Key为词条编号,Value为倒排文档数据,是变长数据,当创建索引数据时,Value的数据不断追加,当长度超过预设的阈值n*K(n=1,2,3……)时,从开始部分提取Value的长度为n*K的数据存储到块单元,对于余下的小于k的索引数据,块单元采用定长数据保存对应TermId的倒排文档数据,每个数据块与B树中的相对应key值部分组成一个链。从而形成块文件数据保存倒排文档的成块部分,B树中保存倒排文档的碎块。
这里的的阀值里K值的设定是参考存储倒排文档数据的存储器性能来确定,一般都采用计算机存储的最小单元,如32k,64k等,方便磁盘阵列存储数据。
如图2所示,假设全文中共有断词器所划定的三个索引最小单元,分别编号为TermID(1)、TermID(2)及TermID(3),其中TermID(1)是一个在全文中只出现过极少的次数的字符串,当将其倒排文档索引进行存储时,如图中21所示,TermID(1)的倒排文档索引的数据长度并未超过K,即TermID(1)-value<k,将其索引数据存入到B树存储页中。
TermID(2)是另一个字符串,在全文中出现的次数较多,当将其倒排文档索引进行存储时,如图中22所示,TermID(2)的倒排文档索引的数据长度等于预设的阀值K,即TermID(1)-value=nk(n=1,2,3……),同样将其索引数据存入到存储块单元。
TermID(3)是在全文索引中的另一个字符串,在全文中经常出现,当将其倒排文档索引进行存储时,如图2中附图标记23所示,TermID(2)的倒排文档索引的数据长度等于预设的阀值K,即(n+1)*k>TermID(1)-value>n*k,从开始部分提取Value的长度为K的数据存储到存储块单元,剩余部分存入B树中,数据块与B树中的相对应key值部分组成一个链。
在实际中,经常会有倒排文档数据追加的情况发生,根据倒排文档数据不同长度的情况,仍然有不同的对应存储方法,仍以上一实例中TermID(1)、来举例说明,TermID(1)有少量的追加数据,将TermID(1)中B树存储页中的索引数据长度与追加数据长度相加,如果相加后的TermID(1)-value=nk,则将原B树存储页中的索引数据取出,从B树存储页中的索引数据的部和追加数据依次存入数据块,并删除B树键值为TermID的数据;如果相加后的(n+1)K(n=1,2,3……)>TermID(1)-value>nk(n=1,2,3……),则将原B树存储页中的索引数据取出,并将原B树存储页中的索引数据和追加数据中从开始部分到与原有索引数据相加到nk的部分按顺序存入存储块中,并将剩余的追加数据更新到B树中相同的TermID中;如果追加的索引单元数据与原有的B树存储的索引单元数据长度相加仍然小于K,则将追加数据依次存入B树存储页内。
根据大数据的长尾效应,全文检索中的倒排文档中大部分词条对应的数据非常少,不足以达到块文件单位大小,借助B树页保存Key-变长Value的机制,在一个页内可以保存多个Key的倒排文档的零星数据,而B树的缺省磁盘利用率为75%,则总的磁盘利用率为(B树文件大小×75%+块文件大小)/(B树文件大小+块文件大小);当块文件比较大时,总磁盘利用率趋向100%(在1000万新闻型文档测试数据为99.5%)。
B树索引的页面和块文件的块单元都是定长数据,方便进行直接定位和使用缓存算法,其中B树的页面大小=4×块单元大小。在实际项目中可以综合考虑可用于Cache的内存大小、磁盘读写效率和其他因素,最终确定B树的Page大小和块文件的每个块单元的大小。块文件可以利用***空闲时间进行整理,把同一Term的倒排数据放到连续的磁盘空间。
对于倒排数据小于一个块单元的词条,每次读取耗时就是读取B树的耗时,其读磁盘次数为B树深度L次,对于倒排数据超过一个块单元的词条,每次完整读取数据的成本是读取一次B树和读取一次块数据,考虑到全文索引中常用与或等逻辑运算,倒排数据一般是随机读取,则能充分利用块文件每块的定长特性,最终有效的提高数据读取效率。
全文索引实时创建索引时,产生倒排数据的追加需求,B树引起为层状数据特性,能够方便的实现写时复制机制,由于B树是一个树状结构,修改时B树每个页修改之前就先复制一份,对直接或者间接引用该页的存储页也创建一个复制,所有的修改在复制上进行修改,从而形成了修改前和修改后两个版本,在修改前版本上进行读操作,在修改后版本上进行写操作,两者互不影响,并提高了并发性能。块存储也是如此,数据仅在文件尾追加,访问时同样可以实现读写分离,互不影响,提高并发。在数据提交成功时,写版本转换为读版本,如果提交失败,则写版本放弃,从而保证了数据的完整性。如图3所示,读写双版本能够完成实时的追加数据并提高边建便搜的并发性能。为了方便实现COW机制,B树采用B+树的变形,其与B+树的区别在于去掉了叶子节点中保存的指向兄弟节点的指针,否则会出现发生修改时需要复制整个B树的现象。
以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。

Claims (6)

1.一种在全文检索***中的高效保存倒排索引的方法,包括:
1)比较索引单元数据长度和预设的阀值K的大小关系;
2)如果索引单元数据长度小于K,将索引单元数据全部存入B树中;
3)如果索引单元数据长度等于K,将索引单元数据从开始部分至K的部分存入索引单元数据块;
4)如果大于K,则比较索引单元数据长度和n*K(n=2,3,……)的大小关系,并按照下列方式进行存储:
a.如果索引单元数据长度大于(n-1)*K且小于n*K,将索引单元数据从开始部分至(n-1)*K部分存入索引单元数据块,将剩余部分存入B树中;
b.如果索引单元数据长度等于n*K,将所有索引单元数据按次序存入索引单元数据块。
2.根据权利要求1所述的在全文检索***中的高效保存倒排索引的方法,其特征在于:所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。
3.一种根据权利要求1所述的在全文检索***中的高效保存倒排索引的方法的存储装置,包括:
存储数据块单元,用来存储K的整数倍的索引单元数据;
B树存储页单元,用来存储索引单元数据不足K的剩余部分。
4.根据权利要求3所述的在全文检索***中的高效保存倒排索引的方法的存储装置,其特征在于:所述的B树存储页单元可用来存储至少两个长度小于K值或者长度大于K值存储在块设备之后的剩余数据的索引单元数据。
5.根据权利要求4所述的存储装置,其特征在于:所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。
6.一种如权利要求4所述的在全文检索***中的高效保存倒排索引的方法的存储装置的数据追加存储方法,包括:
1)计算原B树中的索引单元数据长度与追加的索引单元数据长度之和;
2)如果索引单元数据长度之和大于n*K且小于(n+1)*K(n=2,3……),将B树存储的部分取出并将索引单元数据从B树存储的部分至n*K的部分存入索引单元数据数据块,将剩余索引单元数据存入B树中;
3)如果索引单元数据之和等于n*K,将B树存储的部分取出并将索引单元数据从B树存储部分至n*K的部分存入索引单元数据数据块;
4)如果索引单元数据之和小于K,则将追加部分依次存入原B树存储部分。
CN201210591989.9A 2012-12-29 2012-12-29 全文检索中倒排索引及其追加数据的保存方法及存储装置 Active CN103020299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210591989.9A CN103020299B (zh) 2012-12-29 2012-12-29 全文检索中倒排索引及其追加数据的保存方法及存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210591989.9A CN103020299B (zh) 2012-12-29 2012-12-29 全文检索中倒排索引及其追加数据的保存方法及存储装置

Publications (2)

Publication Number Publication Date
CN103020299A CN103020299A (zh) 2013-04-03
CN103020299B true CN103020299B (zh) 2016-01-13

Family

ID=47968902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210591989.9A Active CN103020299B (zh) 2012-12-29 2012-12-29 全文检索中倒排索引及其追加数据的保存方法及存储装置

Country Status (1)

Country Link
CN (1) CN103020299B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679778B (zh) * 2013-11-29 2019-03-26 腾讯科技(深圳)有限公司 一种搜索结果的生成方法及装置
CN106227677B (zh) * 2016-07-20 2018-11-20 浪潮电子信息产业股份有限公司 一种变长缓存元数据管理的方法
CN106776746A (zh) * 2016-11-14 2017-05-31 天津南大通用数据技术股份有限公司 一种全文索引数据的创建方法及装置
CN107491523B (zh) * 2017-08-17 2020-05-05 三星(中国)半导体有限公司 存储数据对象的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536509A (zh) * 2003-04-11 2004-10-13 �Ҵ���˾ 倒排索引存储方法、倒排索引机制以及在线更新的方法
CN101226553A (zh) * 2008-02-03 2008-07-23 中兴通讯股份有限公司 一种嵌入式数据库变长字段存储的实现方法及装置
CN101944108A (zh) * 2010-09-07 2011-01-12 深圳市彩讯科技有限公司 一种索引文件及索引文件建立方法
CN102682086A (zh) * 2012-04-23 2012-09-19 华为技术有限公司 数据分块方法及设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4714127B2 (ja) * 2006-11-27 2011-06-29 株式会社日立製作所 記号列検索方法、プログラムおよび装置ならびにそのトライの生成方法、プログラムおよび装置
US7725437B2 (en) * 2007-07-31 2010-05-25 Hewlett-Packard Development Company, L.P. Providing an index for a data store

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536509A (zh) * 2003-04-11 2004-10-13 �Ҵ���˾ 倒排索引存储方法、倒排索引机制以及在线更新的方法
CN101226553A (zh) * 2008-02-03 2008-07-23 中兴通讯股份有限公司 一种嵌入式数据库变长字段存储的实现方法及装置
CN101944108A (zh) * 2010-09-07 2011-01-12 深圳市彩讯科技有限公司 一种索引文件及索引文件建立方法
CN102682086A (zh) * 2012-04-23 2012-09-19 华为技术有限公司 数据分块方法及设备

Also Published As

Publication number Publication date
CN103020299A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
US9047301B2 (en) Method for optimizing the memory usage and performance of data deduplication storage systems
US11899641B2 (en) Trie-based indices for databases
CN102831222B (zh) 一种基于重复数据删除的差量压缩方法
CN110188108B (zh) 数据存储方法、装置、***、计算机设备及存储介质
CN101777017B (zh) 一种连续数据保护***的快速恢复方法
CN105912687B (zh) 海量分布式数据库存储单元
CN107045531A (zh) 一种优化hdfs小文件存取的***及方法
CN104484471B (zh) 一种高性能数据存储引擎的实现方法
KR102310246B1 (ko) 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
WO2013152678A1 (zh) 元数据查询方法和装置
CN101963982A (zh) 基于位置敏感哈希的删冗存储***元数据管理方法
CN102364474A (zh) 用于机群文件***的元数据存储***和管理方法
CN103020299B (zh) 全文检索中倒排索引及其追加数据的保存方法及存储装置
JP2005267600A5 (zh)
CN102722449A (zh) 基于SSD的Key-Value型本地存储方法及***
CN102129458A (zh) 关系型数据库的存储方法及装置
US7783589B2 (en) Inverted index processing
CN116450656B (zh) 数据处理方法、装置、设备及存储介质
CN111026329A (zh) 基于主机管理瓦记录磁盘的键值存储***及数据处理方法
CN101526965A (zh) 一种磁盘文件的索引节点定位方法和装置
CN101482839B (zh) 电子文档增量存储处理方法
EP1955209A2 (en) An architecture and method for efficient bulk loading of a patricia trie
CN104391961A (zh) 千万级小文件数据的一种读写解决策略
CN102411632A (zh) 基于链表的内存数据库页式存储方法
US8156126B2 (en) Method for the allocation of data on physical media by a file system that eliminates duplicate data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: TIANJIN NANDA CONVENTIONAL DATA TECHNOLOGY CO., LT

Effective date: 20130807

Owner name: STATE COMPUTER NETWORK AND INFORMATION SAFETY MANA

Free format text: FORMER OWNER: TIANJIN NANDA GENERAL DATA TECHNOLOGY CO., LTD.

Effective date: 20130807

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Fan Zhenyong

Inventor after: Wu Zhen

Inventor after: Zhang Xue

Inventor after: Cui Weili

Inventor after: Wu Xin

Inventor after: Zhao Wei

Inventor before: Zhang Xue

Inventor before: Fan Zhenyong

Inventor before: Cui Weili

Inventor before: Wu Xin

Inventor before: Zhao Wei

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: ZHANG XUE FAN ZHENYONG CUI WEILI WU XIN ZHAO WEI TO: FAN ZHENYONG WU ZHEN ZHANG XUE CUI WEILI WU XIN ZHAO WEI

Free format text: CORRECT: ADDRESS; FROM: 300384 BINHAI NEW DISTRICT, TIANJIN TO: 100029 CHAOYANG, BEIJING

TA01 Transfer of patent application right

Effective date of registration: 20130807

Address after: 100029 Beijing city Chaoyang District Yumin Road No. 3

Applicant after: State Computer Network and Information Safety Management Center

Applicant after: Tianjin NanKai University General Data Technologies Co., Ltd.

Address before: Haitai 300384 in Tianjin Binhai high tech Zone Huayuan Industrial Zone Development six road No. 6 Haitai green industry base J

Applicant before: Tianjin Nanda General Data Technology Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant