全文检索中倒排索引及其追加数据的保存方法及存储装置制造方法及图纸

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

【技术实现步骤摘要】

本专利技术属于数据存储领域,尤其是涉及一种在全文检索中倒排索引及其追加数据的保存方法及存储装置
技术介绍
在关系数据库系统里,全文索引是检索文档数据最有效率的方式之一,在当前的网络环境下,信息量和用户量都成爆炸性的增长,全文索引成为信息检索系统的主要手段之一,倒排索引是全文检索系统的核心部分,其存储结构对全文检索系统性能也有很大的影响。倒排索引(英语Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。全文索引倒排文档数据是由Term ID对应的一组文档编号和在文档中的偏移组成,其表现形式为Term ID—> {〈doc ID, {offset}},其中Term ID是断词器划分的最小索引单元,在中文全文检索中一般为字、词、英文、数字串和几种形式的组合,具有以下特点1.不同Term对应倒排数据长度相差很大,常见的字如“的”、“地”等字符往往出现频率相当的高,也有仅出现一次的特殊字符串。2.全文索引中词汇量巨大,往往一个全文检索库会拥有千万个词汇,每一个词汇都作为一个检索单元,会占用大量的存储空间全文索引倒排数据的存储一般有两种一、采用经验数据把已知词典按词频划分为中、高、低几档的方式,每档词频采用不同的数据块大小存储,存储高频词的每块数据较大,反之最低频率块最小。这种方式的好处是磁盘浪费较少,读取效率有保障,缺点是一旦实际数据与经验数据不符或者出现新的词汇时,词频发生较大变化,则出现高频词空间浪费,低频词词链超长造成读取效率低。二、采用划分大数据单元的方式,如每IGB数据为一个单元,每个单元中所有倒排文档数据按词条编号、文档编号、偏移量(TermID、Doc ID、Offset)排序,在索引完成之前把所有的数据单元进行数据合并为一个最终单元。这种方式的优点是空间浪费为0,缺点是最终的数据排序需要一倍磁盘剩余空间,造成磁盘空间利用率为50%,合并的时间较长。
技术实现思路
本专利技术要解决的问题是提供一种在全文检索系统中的高效保存索引的方法,可以充分提高磁盘空间利用率。为解决上述技术问题,本专利技术采用的技术方案是一种在全文检索系统中的高效保存索引的方法,包括I)比较索引单元数据长度和预设的阀值K的大小关系;2)如果索引单元数据长度小于K,将索引单元数据全部存入B树中;3)如果索引单元数据长度等于K,将索引单元数据从开始部分至K的部分存入索引单元数据数据块;4)如果大于K,则比较索引单元数据长度和η*Κ (η=2, 3,……)的大小关系,并按照下列方式进行存储1.如果索引单元数据长度大于(η_1)*Κ且小于η*Κ,将索引单元数据从开始部分至η*Κ部分存入索引单元数据块,将剩余部分存入B树中;2.如果索引单元数据长度等于η*Κ,将所有索引单元数据按次序存入索引单元数 据块。进一步的,所述的B树可以存储至少两个长度小于K值或者长度大于K值存储在块设备之后的剩余数据的索引单元数据。进一步的,所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。根据本专利技术的另一方面,本专利技术还提供了一种高效保存索引方法的存储装置,包括存储数据块单元,用来存储固定长度的整数倍的索引单元数据;B树存储页单元,用来存储索引单元数据不足K的剩余部分。进一步的,所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。根据本专利技术所提供的一种高效保存索引方法的存储装置的追加全文索引数据的存储方法I)计算原B树中的索引单元数据与追加的索引单元数据之和;2)如果索引单元数据长度之和小于η*Κ且大于(η+1)*Κ(η=2,3……),将B树存储的部分取出并将索引单元数据从B树存储的部分至η*Κ的部分存入索引单元数据数据块,将剩余索引单元数据存入B树中;3)如果索引单元数据之和等于η*Κ,将B树存储的部分取出并将索引单元数据从B树存储部分至η*Κ的部分存入索引单元数据数据块;4)如果索引单元数据之和小于K,则将追加部分依次存入原B树存储部分。由于采用上述技术方案,能够有效的提高倒排文档的全文索引的存储效率,减少了磁盘空间的浪费,有效提高了数据读取速率;能够方便实现写时复制(Copy On Write)机制,进而提高了数据安全性和读取数据的并发指标。附图说明图1是本专利技术的高效保存索引方法及追加数据的保存方法流程示意2是本专利技术中一个实例的存储示意3是本专利技术实例中实现写时复制机制的示意图具体实施例方式在本专利技术的一个实施运用场景中,根据全文建立起相应的全文索引倒排文档数据,其表示形式为Term ID (词条编号)一> {〈doc ID (文档编号),{offset}(偏移量)},在本实例中采用B树结合块文件的方式来存储Key-Value数据,Key为词条编号,Value为倒排文档数据,是变长数据,当创建索引数据时,Value的数据不断追加,当长度超过预设的阈值n*K (n=l, 2, 3......)时,从开始部分提取Value的长度为n*K的数据存储到块单元,对于余下的小于k的索引数据,块单元采用定长数据保存对应TermId的倒排文档数据,每个数据块与B树中的相对应key值部分组成一个链。从而形成块文件数据保存倒排文档的成块部分,B树中保存倒排文档的碎块。这里的的阀值里K值的设定是参考存储倒排文档数据的存储器性能来确定,一般都采用计算机存储的最小单元,如32k,64k等,方便磁盘阵列存储数据。如图2所示,假设全文中共有断词器所划定的三个索引最小单元,分别编号为Term ID (I),Term ID (2)及Term ID (3),其中Term ID (I)是一个在全文中只出现过极少的次数的字符串,当将其倒排文档索引进行存储时,如图中21所示,Term ID (I)的倒排文档索引的数据长度并未超过K,即Term ID (I )-value〈k,将其索引数据存入到B树存储页中。Term ID (2)是另一个字符串,在全文中出现的次数较多,当将其倒排文档索引进行存储时,如图中22所示,Term ID (2)的倒排文档索引的数据长度等于预设的阀值K,即Term ID (I) -value=nk (n=l, 2, 3......),同样将其索引数据存入到存储块单元。Term ID (3)是在全文索引中的另一个字符串,在全文中经常出现,当将其倒排文档索引进行存储时,如图23所示,Term ID (2)的倒排文档索引的数据长度等于预设的阀值K,即(n+l)*k>Term ID (I )-value>n*k,从开始部分提取Value的长度为K的数据存储到存储块单元,剩余部分存入B树中,数据块与B树中的相对应key值部分组成一个链。在实际中,经常会有倒排文档数据追加的情况发生,根据倒排文档数据不同长度的情况,仍然有不同的对应存储方法,仍以上一实例中Term ID(1)、来举例说明,Term ID(I)有少量的追加数据,将Term ID (I)中B树存储页中的索引数本文档来自技高网
...

【技术保护点】
一种在全文检索系统中的高效保存倒排索引的方法,包括:1)比较索引单元数据长度和预设的阀值K的大小关系;如果索引单元数据长度小于K,将索引单元数据全部存入B树中;2)如果索引单元数据长度小于K,将索引单元数据全部存入B树中;3)如果索引单元数据长度等于K,将索引单元数据从开始部分至K的部分存入索引单元数据数据块;4)如果大于K,则比较索引单元数据长度和n*K(n=2,3,……)的大小关系,并按照下列方式进行存储:1.如果索引单元数据长度大于(n?1)*K且小于n*K,将索引单元数据从开始部分至n*K部分存入索引单元数据块,将剩余部分存入B树中;2.如果索引单元数据长度等于n*K,将所有索引单元数据按次序存入索引单元数据块。

【技术特征摘要】
1. 一种在全文检索系统中的高效保存倒排索引的方法,包括1)比较索引单元数据长度和预设的阀值K的大小关系;如果索引单元数据长度小于K, 将索引单元数据全部存入B树中;2)如果索引单元数据长度小于K,将索引单元数据全部存入B树中;3)如果索引单元数据长度等于K,将索引单元数据从开始部分至K的部分存入索引单元数据数据块;4)如果大于K,则比较索引单元数据长度和η*Κ(η=2, 3,……)的大小关系,并按照下列方式进行存储1.如果索引单元数据长度大于(η-1)*Κ且小于η*Κ,将索引单元数据从开始部分至 η*Κ部分存入索引单元数据块,将剩余部分存入B树中;2.如果索引单元数据长度等于η*Κ,将所有索引单元数据按次序存入索引单元数据块。2.根据权利要求1所述的高效保存索引的方法,其特征在于所述的B树为B+树的一种变形,所述的B+树的一种变形为去掉叶子节点中保存的指向兄弟节点的指针的B+树。3.一种根据权利要求1所述高效保存索引方法的存储装置,包括存储数据块单元,用来存储固定长度的整数倍的索...

【专利技术属性】
技术研发人员:张学范振勇崔维力武新赵伟
申请(专利权)人:天津南大通用数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1