CN100498794C - 索引压缩的方法和装置 - Google Patents

索引压缩的方法和装置 Download PDF

Info

Publication number
CN100498794C
CN100498794C CNB2007101108507A CN200710110850A CN100498794C CN 100498794 C CN100498794 C CN 100498794C CN B2007101108507 A CNB2007101108507 A CN B2007101108507A CN 200710110850 A CN200710110850 A CN 200710110850A CN 100498794 C CN100498794 C CN 100498794C
Authority
CN
China
Prior art keywords
index
interval
position data
mark
numerical value
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
CNB2007101108507A
Other languages
English (en)
Other versions
CN101075261A (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.)
Shenzhen Tencent Computer Systems Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CNB2007101108507A priority Critical patent/CN100498794C/zh
Publication of CN101075261A publication Critical patent/CN101075261A/zh
Application granted granted Critical
Publication of CN100498794C publication Critical patent/CN100498794C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了索引压缩的方法和装置,包括索引标识压缩的方法、装置和索引位置数据压缩的方法、装置。索引标识压缩的方法包括:读取第一索引标识,判断所述第一索引标识的数值的所属范围,通过所述判断出的所属范围确定出标记和长度单位;用所述确定出的长度单位表示的第一索引标识数值作为第二索引标识;使用所述第二索引标识、及确定出的标记共同替换所述第一索引标识。通过本发明的索引压缩的方法和装置,在压缩索引数据时,能产生较高的压缩比。能够有效降低索引数据所占用的磁盘空间和内存,减少磁盘与内存间的输入/输出读写量;提高查询响应速度。

Description

索引压缩的方法和装置
技术领域
本发明涉及搜索技术领域,特别是指索引的压缩方法和装置。
背景技术
在计算机技术领域中,互联网技术得到快速发展。随着网络资源越来越多,搜索引擎技术得到快速发展。在搜索引擎技术中,后台索引技术是最为核心的技术,后台索引技术的性能直接关系到检索的速度、结果。
在后台索引技术中,传统的文件索引主要是用倒排文件来实现。倒排文件的结构是保存每个检索的关键词和包含关键词的文档信息。检索的过程是对特定的检索串,在较短的时间内找出所有包含该检索串的文档集合。
其中,检索串是用户进行检索需要输入的检索表达式,它可以包含一个或者多个关键词,中间用空格隔开。在互联网搜索中,关键词之间空格表示其前后的关键词将进行逻辑与检索操作。这里所提到的关键词,是用一个或者多个语素组成的字符串。关键词通过分词系统,可以被继续切分。如果切分为两个语素,则又称成该关键词为2元复合语素;如果切分出3个语素,则成为3元复合语素。语素是最小能够表达独立语义的语言单位,它是不可再分的。在中文中,它为分词系统中切分出了的中文词;在英文中,它是基本的英文单词或者字母。
检索出的文档集合通常用文档编号、即索引标识(ID)列表来表示。文档ID是对被检索的文档集合进行唯一编号,保证每个文档对对应一个唯一的ID,帮助定位该文档。如图1所示,其中,t表示一个被检索的关键词,包含该t的所有文档构成一个集合,di表示该t的一系列文档ID,Wdi,t表示关键词t在文档di中的权值,loci表示t在文档d中出现的位置偏移(offset)。倒排索引文件就是由N个如图1所示的数据项组成,N的数量等于整个文档集合在进行检索的过程中得到所有不同的关键词总和。
为增加压缩效果,一般在进行压缩前先改写倒排文件的索引内容,索引内容是指倒排文件中各个索引数值,如di,loci等。将索引数值按照大小排序,然后用差值而非实际值表示(d-gap)。如d1,d2,d3,d4=(1,5,7,9),用差值表示后为d1,d2,d3,d4=(1,4,2,2)。每个di等于自身位置的值与前面值的和,如d3=d1+d2+d3=7。在进行差值表示之后,将索引数值进行压缩。目前的压缩方法可以分为固定长度的和变长压缩。对于目前的压缩方法,主要有UNARY(一元编码)压缩方法、Elias压缩方法和Golomb压缩方法,采用这些压缩方法进行压缩时,由于其压缩算法自身的限制,压缩率只能达到10%左右,因此,目前采用这些压缩方法在对索引压缩的效果并不理想。
发明内容
有鉴于此,本发明在于提供索引压缩的方法和装置,以解决上述压缩方法对索引数据的压缩效果差的问题。
为解决上述问题,本发明提供一种索引标识压缩的方法,
读取第一索引标识,判断所述第一索引标识的数值的所属范围是属于相应的数值区间还是属于非确定性数值区间,如果判断出第一索引标识数值属于相应的数值区间,则获取相应的数值区间唯一对应的固定标记和固定长度单位,将获取的固定标记和固定长度单位作为确定出的标记和长度单位;如果判断出第一索引标识数值属于非确定性数值区间,则先将第一索引标识的数值所属字节占用的比特位数,按照数值区间中的最大数值区间所占的比特位数划分出比特段,获取最后一个不可再划分的比特段中的比特序列的值,通过判断该比特序列的值所对应的数值区间,得到唯一对应的固定标记和固定长度单位,将所述划分出的比特段所对应的循环标记、所述最后一个不可再划分的比特段唯一对应的固定标记共同作为确定出的标记,将所述所属字节占用的比特位数作为可变长度单位,将可变长度单位作为确定出的长度单位;
用所述确定出的长度单位表示的第一索引标识数值作为第二索引标识;
使用所述第二索引标识及确定出的标记共同替换所述第一索引标识;
所述第一索引标识、第二索引标识和标记为二进制比特序列。
其中,当所述第一索引标识的数值的所属范围属于相应的数值区间时,所述共同替换所述第一索引标识包括:
在第二索引标识前添加所述确定出的标记,将添加所述确定出的标记后的第二索引标识作为所述第一索引标识。
其中,当所述第一索引标识的数值的所属范围属于非确定性数值区间时,所述共同替换所述第一索引标识包括:
将所述第二索引标识,按照数值区间中的最大数值区间所占的比特位数划分出比特段,在划分出比特段前添加循环标记,在最后一个不可划分的比特段前添加固定标记,将添加完固定标记和循环标记的第二索引标识替换所述第一索引标识。
本发明提供一种索引标识压缩的装置,包括:
读取单元,用于读取第一索引标识;
判断单元,用于判断所述第一索引标识的数值所属范围是属于相应的数值区间还是属于非确定性数值区间;
运算单元,用于在所述判断出的第一索引标识数值属于相应的数值区间时,获取相应的数值区间唯一对应的固定标记和固定长度单位,将获取的固定标记和固定长度单位作为确定出的标记和长度单位;在判断出第一索引标识数值属于非确定性数值区间时,将第一索引标识的数值所属字节占用的比特位数,按照数值区间中的最大数值区间所占的比特位数划分出比特段,获取最后一个不可再划分的比特段中的比特序列的值,通过判断该比特序列的值所对应的数值区间,得到唯一对应的固定标记和固定长度单位,将所述划分出的比特段所对应的循环标记、所述最后一个不可再划分的比特段唯一对应的固定标记共同作为确定出的标记,将所述所属字节占用的比特位数作为可变长度单位,将可变长度单位作为确定出的长度单位;
转换单元,用于将所述确定出的长度单位表示的第一索引标识的数值作为第二索引标识;
替换单元,用于使用所述第二索引标识、及所述确定出的标记共同替换所述第一索引标识;
所述第一索引标识、第二索引标识和标记为二进制比特序列。
本发明提供一种索引位置数据压缩的方法,包括:
将文档划分为预定数量的区段,在所述预定数量的区段中检索字符,并标识每个区段中是否存在所述字符,将检索后得到的所述标识作为第一索引位置数据;
通过第一索引位置数据获得存在所述字符的区段数量,判断获得的区段数量所属的数量范围是属于相应的数量区间还是属于非确定性数量区间,当判断出所述获得的区段数量属于相应的数量区间时,则获取所述数量区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为确定出的标记和长度单位;当判断出所述获得的区段数量属于非确定性数量区间时,将所述预定数量的区段分组,记录各组中是否存在所述字符的组标记,将所述非确定性数量区间唯一对应的固定标记和所述组标记共同作为确定出的标记,将存在所述字符的区段所在组占用比特位作为确定出的长度单位;
按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
使用所述第二索引位置数据及确定出的标记共同替换所述第一索引位置数据;
所述第一索引位置数据、第二索引位置数据和标记为二进制比特序列。
其中,当所述获得的区段数量所属的数量范围属于相应的数量区间时,所述共同替换所述第一索引位置数据的过程包括:
在所述第二索引位置数据前添加固定标记,将添加固定标记的第二索引位置数据替换第一索引位置数据。
其中,当所述获得的区段数量所属的数量范围属于非确定性数量区间时,所述共同替换所述第一索引位置数据的过程包括:
在所述第二索引位置数据前添加组标记,在组标记前添加所述固定标记,将添加组标记、固定标记的第二索引位置数据替换第一索引位置数据。
本发明还提供一种索引位置数据压缩的装置,包括:
第一索引位置数据单元,用于将文档划分为预定数量的区段,在所述预定数量的区段中检索字符,并标识每个区段中是否存在所述字符,将检索后得到的所述标识作为第一索引位置数据;
判断单元,用于通过第一索引位置数据获得存在所述字符的区段数量,判断获得的区段数量所属的数量范围是属于相应的数量区间还是非确定性数量区间;
运算单元,用于在判断出所获得的区段数量属于相应的数量区间时,获取所述数量区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为确定出的标记和长度单位;在判断出所述获得的区段数量属于非确定性数量区间时,将所述预定数量的区段分组,记录各组中是否存在所述字符的组标记,将所述非确定性数量区间唯一对应的固定标记和所述组标记共同作为确定出的标记,将存在所述字符的区段所在组占用比特位作为确定出的长度单位;
第二索引位置数据单元,用于按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
替换单元,用于使用所述第二索引位置数据及确定出的标记共同替换所述第一索引位置数据;
所述第一索引位置数据、第二索引位置数据和标记为二进制比特序列。
通过本发明的索引压缩的方法和装置,在压缩索引数据时,对于索引标识和索引位置数据,能产生较高的压缩率,一般达到10%—15%左右,相对于现有技术的索引压缩,压缩率提高5%。由于将索引数据压缩后存储在磁盘空间上,因此能够有效降低索引数据所占用的磁盘空间。在进行检索的过程中,从磁盘上读取压缩数据到内存中,解压缩后查询包含关键词索引数据,由于索引数据压缩后,索引数据量降低。因此利用本发明进行检索时,能够减少磁盘与内存间的输入/输出读写量,减少读取时间,从而提高查询响应速度。
附图说明
图1是数据项的结构图;
图2是本发明实施例一的流程图;
图3是本发明实施例二的流程图;
图4是本发明实施例三的装置结构图;
图5是本发明实施例四的装置结构图。
具体实施方式
本发明在对索引数据进行压缩时,能够达到很好的技术效果。目前的索引数据都是32bit位,如索引标识、索引位置等索引数据。索引标识、索引位置等索引数据可存放在一个文件中,也可将索引标识单独存放在一个文件中,将索引位置存放在另一个文件中。但这些并不影响本发明的实现。
下面结合附图对本发明的各个实施例进行详细说明。首先阐述索引标识的压缩过程。索引标识是用于定位包含关键词文档的数据,当采用32bit位来表示索引标识时,可表示2的32次幂个不同的数字序列,这些序列用来表示索引标识时,占用的空间可想而知是非常大的。对于这类索引标识,通过下面的实施例一进行说明压缩的过程。参见图2,
步骤S201:读取第一索引标识;
首先,应读取所要压缩的索引标识,为便于后续的叙述,将所要进行压缩的索引标识定义为第一索引标识,将压缩过程结束后得到的索引标识定义为第二索引标识。在实施例一中,第一索引标识是一个32位的bit序列。
步骤S202:判断所述第一索引标识的数值的所属范围,通过所述判断出的所属范围确定出标记和长度单位;
实现压缩的过程,是去除没有意义的bit位或将bit序列用更短的bit序列来表示。因此,在实施例一中,根据索引标识的数值划分出多个不同的范围。
 
标记域(2bit) 含义描述 示例
01 代表后面有1组2bit单元 “0100”代表整数“0”;“0101”代表整数“1”;由此类推,可以编码“0”(0100)-“3”(0111)之间的4个整数              
10 代表后面有2组2bit单元 “100100”代表整数“4”;“100101”代表整数“15”;由此类推,可以编码“4”(100100)-“15”(101111)之间的12个整数            
11 代表后面有3组2bit单元 “11010000”代表整数“16”;“11111111”代表整数“63”;由此类推,可以编码“16”(100100)-“63”(11111111)之间的48个整数              
00 代表后面有3组2bit单元后,还继续跟新的标记 “000100000100”代表整数“64”;“000100000101”代表整数“65”;由此类推,对应整数“63”以上的数,通过多段编码来实现              
表1
结合上述表1,对于第一索引标识的数值的所属范围,给出四种范围。其中,表1中的前三种范围有固定的数值区间,即第一种“0-3”、第二种“4-15”、第三种“16-63”,对于大于数值63时,属于第四种范围,第四种范围称为非确定性数值区间。先判断第一索引标识数值,判断出第一索引标识数值所属的范围,是属于相应的数值区间,还是属于非确定性数值区间。通过判断出的所属范围从而确定出标记和长度单位。
下面举两个例子分别描述两个不同的情况。
第一个例子是属于判断出第一索引标识数值有相应的数值区间的情况。如果第一索引标识表示的二进制序列是高28位为0bit,低4位为1100,所表示的数值是十进制数值12。通过判断,能够得出第一索引标识所属的数值区间是4-15之间,从而能够得出第一索引标识所对应的固定标记是标记域中的10,表示第一索引标识的数值所需要的固定长度单位是4个bit位。从而将固定标记作为确定出的标记,将固定长度单位作为确定出的长度单位。
第二个例子是属于判断出第一索引标识数值有非确定性数值区间的情况。如果第一索引标识表示的二进制序列是高25位为0bit,低7位为1000001,所表示的数值是十进制数值65。通过判断,能够得出第一索引标识所属的数值大于63,属于非确定性数值区间,确定标记和长度单位时,先将第一索引标识的数值所属字节占用的bit位数,按照数值区间中的最大数值区间所占的bit位数划分出bit段;获取最后一个不可再划分的bit段中bit序列的值,通过判断该值所对应的数值区间,得到唯一对应的固定标记和固定长度单位;将所述划分出的bit段所对应的循环标记、所述最后一个bit段的固定标记共同作为所述确定出的标记,将所述所属字节占用的bit位数作为可变长度单位,将可变长度单位作为所述确定出的长度单位。
具体过程为,数值65在表示为二进制序列时属于两个字节,共占用8个bit位,数值区间中最大的数值区间是第三种范围,所占用的bit位是6个bit位。将8个bit位从高位按照6个bit位进行划分,能够划分出一个bit段,即100000,对于划分出的bit段,对应于循环标记,即标记域中的00,循环标记00表示6个bit位之后,紧接是循环标记或固定标记。对于最后一个bit段,共有0、1两个bit,对应于十进制中的数值1,需要判断该值所对应的数值区间,能够得出该数值1所属的数值区间是0-3,因此,最后一个bit段所对应的固定标记是01。将循环标记00和固定标记01共同作为确定出的标记,将第一索引标识的数值所属字节占用的8个bit位数作为可变长度单位,将该可变长度单位作为确定出的长度单位。
步骤S203:用所述确定出的长度单位表示的第一索引标识数值作为第二索引标识;
通过在步骤S202中确定出的长度单位表示的第一索引标识数值作为第二索引标识,具体为,将第一个例子中的确定出的长度单位4个bit位表示的第一索引标识数值1100作为第二索引标识;对于第二个例子,将确定出的长度单位8个bit位表示的第一索引标识数值010000001作为第二索引标识。
步骤S204:使用所述第二索引标识、及确定出的标记共同替换所述第一索引标识。
在上述的步骤中,已经确定出第二索引标识和标记,在本步骤中,替换第一索引标识。对于上面描述的第一个例子,替换时,在第二索引标识前添加确定出的标记,将添加标记后的第二索引标识作为第一索引标识。即将确定出的标记10添加到第二索引标识1100前,得到序列101100,用该序列替换第一索引标识后,能够压缩掉26个bit。
对于上面描述的第二个例子,替换时,将所述第二索引标识,按照数值区间中的最大数值区间所占的bit位数划分出bit段,在划分出bit段前添加循环标记,在最后一个不可划分的bit段前添加确定出的固定标记,将添加完固定标记和循环标记的第二索引标识替换所述第一索引标识。第二个例子的具体替换过程将第二索引标识01000001按照数值区间中最大数值区间所占的6bit位划分bit段,划分出一个bit段010000,和最后一个bit段01,对于划分出的bit段前添加所确定的循环标记00,对于最后一个bit段,添加固定标记10,得到最后替换出的第二索引标识000100001001。用该序列替换第一索引标识后能够压缩掉20个bit。
至此,索引标识数据压缩的过程结束。通过上面实施例一的压缩过程,能够得出对于32bit位的第一索引标识,当第一索引标识的数值范围在0-3之间的整数,只需要4bit来编码,节约28bit;当第一索引标识的数值范围在4-15之间的整数,只需要6bit来编码,节约26bit;当第一索引标识的数值范围在16-63之间的整数,只需要8bit来编码,节约24bit;当第一索引标识的数值范围在63-2的24次幂之间的整数,可以用不大于32bit来编码。当然,上述实施例中采用所划分的各个具体数值区间和采用32bit位的索引标识等只是一个例子,并不局限于这些具体的数据值。上述的压缩索引标识过程对于索引标识的数值是小整数时的压缩效果要远好于大整数的压缩效果。在压缩前可将大整数的索引标识转换成小整数的差值。例如,被压缩的数是16,可将16转换为2、4、4、6通过本发明的方法分别进行压缩,恢复时,在将解压后的数进行相加,从而得到压缩前的数16,由于转换成小整数后,能够得到较大的压缩比,从而提高压缩的效果。
对于索引数据,不只是索引标识这一种,还有索引位置数据,对于索引位置数据,表现的形式不止一种。本发明中的索引位置数据,是将文档划分为预定数量的区段,如32个区段,在预定数量的区段中检索关键词,即检索字符,并标识每个区段中是否存有所要检索的字符,将检索后得到的标识作为索引位置数据。下面通过实施例二说明本发明压缩索引位置数据的过程。
在本发明的实施例中,以预定数量的区段为32个区段进行说明,在各个区段检索的过程中,如果该区段中出现有要检索的字符或语素,出现的字符或语素的个数可在3-20之间或其它预定值,则将该区段对应的标识设置为1;如果该区段中没有出现,则将该区段对应的标识设置为0。由此可以得到一个标识序列,即索引位置数据。将所要进行压缩的索引位置数据定义为第一索引位置数据,将压缩后的索引位置数据定义为第二索引位置数据。对于具体的压缩过程,参见图3,
步骤S301:通过第一索引位置数据获得存在所述字符的区段数量;
在获得第一索引位置数据后,通过第一索引位置数据中的标识可以得到存在所要检索字符的区段数量。
步骤S302:判断所述获得的区段数量所属的数量范围,通过判断出的所述数量范围确定出标记和长度单位;
实现压缩的过程,是去除没有意义的bit位或将bit序列用更短的bit序列来表示。因此,在实施例二中,根据区段数量划分出多个不同的范围。将在步骤S301中获得的区段数量通过下面的表2进行判断。
 
编码方式 含义描述 示例
“0”+5bit 用1个bit(0)来代表当该语素只在32个区段中某1个区段中出现,用5个bit来存储出现在具体的区段号             编码“000010”表示,该语素只出现在区段2中出现
“10”+10bit 用2个bit(10)来代表当该语素只在32个区段中某2个区段中出现,用两个5bit组来存储该语素具体出现在哪两个区段号                     编码“100001000001”表示,该语素只出现在区段2和区段1中出现            
“11”+4bit+{8bit元组}*N   当该语素只在32个区段中多于2个区段中出现。 编码“11100010010100”表示该语素出现在第一大区段中的第1,4,6小区段中出现          
表2
结合上述表2,将获得的区段数量所属范围分为二种情况,第一种情况是只获得一个区段或两个区段,第二种情况是获得多于两个区段的情况。将第一种情况定义为是所属范围中的数量区间,第二种情况是所属范围中的非确定性数量区间。通过判断获得区段数量的所属范围,通过所属范围从而确定出标记和长度单位。
在该实施例中,对于上面的所属范围的两种情况,分别通过两个例子进行分别说明确定出标记和长度单位的过程。第一例子是属于第一种情况,如得到的第一索引位置数据是高30位为0,低2位为10,则可获得存在一个区段,属于所属范围中的一个区段的数量区间,通过表2能够得出,一个区段所对应的编码方式中是0+5bit,其中,0是一个固定标记,5bit是固定长度单位,则可将固定标记作为确定出的标记,将固定长度单位作为确定出的长度单位。
第二个例子是属于第二种情况,如得到的第一索引位置数据是高8位为10010100,低24位为0,则可获得存在3个区段,即第1、4、6区段,大于两个区段,属于所属范围中非确定性数量区段。此时,需要将预定数量的区段分组,记录各组区段中是否存在被检索字符的组标记,如果存在,则组标记记录为1;如果不存在,则组标记记录为0。在该例子中,将32个区段从高位向低位顺序(低位向高位也可)均分为4组,这样,高8位属于第一组,从而得到相应的组标记为1000,由于区段数量属于非确定性数量区间,该非确定性数量区间唯一对应的固定标记为11。将非确定性数量区间唯一对应的固定标记和得到的组标记共同作为确定出的标记;即将固定标记11和组标记1000作为确定出的标记。再将存在检索字符区段的所在组占用的bit位作为确定出的长度单位。在该例子中,由于只有一个具有包含被检索字符区段的组。因此,最后得到的N*{8bit元组}中,N的个数为1,表示只有一个8bit元组,将该组所占的8个bit位(8bit元组)作为确定出的长度单位。
步骤S303:按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
在上个步骤中,第一个例子是用得到的长度单位5个bit位来表示存在字符的区段,由于是第二个区段,因此,表示的结果是00010,将该结果作为第二索引位置数据。第二个例子是用8个bit位作为长度单位。因此,表示的结果是10010100,将该结果作为第二索引位置数据。
步骤S304:使用所述第二索引位置数据、及确定出的标记共同替换所述第一索引位置数据。
通过前面步骤中确定出的标记和第二索引位置数据,替换第一索引位置数据。对于第一个例子,替换是在第二索引位置数据前添加所确定的固定标记,将添加固定标记的第二索引位置数据替换第一索引位置数据。即在第二索引位置数据00010前添加确定出的标记0,从而得到序列000010,将该序列替换第一索引位置数据后,压缩掉26bit。对于第二个例子,替换是将第二索引位置数据前添加确定出的组标记,在组标记前添加确定的固定标记,将添加组标记、固定标记的第二索引位置数据替换第一索引位置数据。即在第二索引标识10010100前添加组标记1000、固定标记11,从而得到序列11100010010100,将该序列替换第一索引位置数据后,压缩掉18bit。
至此,索引位置数据压缩完成。通过上面的压缩过程,如果字符只命中1个区段,则原来32bit的索引位置数据,将被压缩成6bit。如果字符只命中2个区段,则原来32bit的索引位置数据,将被压缩成12bit。对于字符命中多于2个区段,则原来32bit的索引位置数据,将被压缩成6+8*n个bit。最差的情况,当字符在32个区段都出现,则被压缩成38bit。当然,上述实施例中采用所划分的各个具体数量区间和采用32bit位的索引位置数据等只是一个例子,并不局限于这些具体的数据值。
本发明还提供一种索引标识压缩的装置,下面通过实施例三说明,参见图4,包括:
读取单元401,用于读取第一索引标识;
判断单元402,用于判断所述第一索引标识的数值所属范围;
运算单元403,用于通过所述判断出的所属范围确定出标记和长度单位;
转换单元404,用于将所述确定出的长度单位表示的第一索引标识的数值作为第二索引标识;
替换单元405,用于使用所述第二索引标识、及所述确定出的标记共同替换所述第一索引标识。
其中,所述判断单元402判断所述第一索引标识的数值的所属范围的过程包括:
按照第一索引标识的bit序列的数值进行判断,判断所述第一索引标识的数值属于相应的数值区间或非确定性数值区间。
其中,所述运算单元403包括第一运算子单元406,第二运算子单元407,
当判断单元402如果判断出所述第一索引标识的数值属于相应的数值区间,则运算单元403通过所述判断出的所属范围确定出标记和长度单位的过程由第一运算子单元406完成;
第一运算子单元406,获取所述数值区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为所述确定出的标记和长度单位。
如果判断单元402判断所述第一索引标识的数值属于非确定性数值区间,则运算单元403通过所述判断出的所属范围确定出标记和长度单位的过程由第二运算子单元407完成;第二运算子单元407,包括划分模块408,收发模块409,合并模块410;
划分模块408,用于将所述第一索引标识的数值所属字节占用的bit位数,按照数值区间中的最大数值区间所占的bit位数划分出bit段;
收发模块409,用于获取最后一个不可再划分的bit段中bit序列的值,通过第一运算子单元判断该值所对应的数值区间,得到唯一对应的固定标记和固定长度单位;
合并模块410,用于将所述划分出的bit段所对应的循环标记、所述最后一个bit段的固定标记共同作为所述确定出的标记,将所述所属字节占用的bit位数作为可变长度单位,将可变长度单位作为所述确定出的长度单位。
替换单元405,包括第一替换模块411,第二替换模块412。对于转换单元404通过第一运算单元406转换出的第二索引标识,替换单元405使用所述第二索引标识、及第一运算子单元406确定出的标记共同替换所述第一索引标识时,通过第一替换模块411实现。
第一替换模块411,用于在第二索引标识前添加所述确定出的标记,将所述添加标记后的第二索引标识作为所述第一索引标识。
对于转换单元404通过第二运算单元407转换出的第二索引标识,替换单元405使用所述第二索引标识、及第二运算子单元407确定出的标记共同替换所述第一索引标识时通过第二替换模块412实现。
第二替换模块412,用于将所述第二索引标识,按照数值区间中的最大数值区间所占的bit位数划分出bit段,在划分出bit段前添加循环标记,在最后一个不可划分的bit段前添加确定出的固定标记,将添加完固定标记和循环标记的第二索引标识替换所述第一索引标识。
本发明还提供一种索引位置数据压缩的装置,下面通过实施例四说明,参见图5,包括:
第一索引位置数据单元501,用于将文档划分为预定数量的区段,在所述预定数量的区段中检索字符,并标识每个区段中是否存在所述字符,将检索后得到的所述标识作为第一索引位置数据;
判断单元502,用于通过第一索引位置数据获得存在所述字符的区段数量,判断所述获得的区段数量所属的数量范围;
运算单元503,用于通过判断出的所述数量范围确定出标记和长度单位;
第二索引位置数据单元504,用于按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
替换单元505,用于使用所述第二索引位置数据、及确定出的标记共同替换所述第一索引位置数据。
其中,所述判断单元502判断所述获得的区段数量所属数量范围的过程包括:
判断所述获得的区段数量属于相应的数量区间或非确定性数量区间。
其中,运算单元503,包括第一运算子单元506,第二运算子单元507,
当判断单元502如果判断出所述获得的区段数量属于相应的数量区间,则运算单元503通过判断出的所述数量范围确定出标记和长度单位的过程通过第一运算子单元506完成。
第一运算子单元506,用于获取所述数量区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为所述确定出的标记和长度单位。
当判断单元502如果判断出所述获得的区段数量属于非确定性数量区间,则运算单元503通过判断出的所述数量范围确定出标记和长度单位的过程通过第二运算子单元507完成。
第二运算子单元507,包括分组模块508,合并模块509,
分组模块508,用于将所述预定数量的区段分组,记录各组中是否存在所述字符的组标记;
合并模块509,用于将所述非确定性数量区间唯一对应的固定标记和所述组标记共同作为所述确定出的标记;将存在所述字符的区段所在组占用bit位作为所述确定出的长度单位。
其中,替换单元505,包括第一替换模块510,第二替换模块511,
对于第二索引位置数据单元504通过第一运算子单元506得到的第二索引位置数据,替换单元505在实现替换第一索引位置数据的过程由第一替换模块510完成,
第一替换模块510,用于在所述第二索引位置数据前添加第一运算子单元506所确定的固定标记,将添加固定标记的第二索引位置数据替换第一索引位置数据。
对于第二索引位置数据单元504通过第二运算子单元507得到的第二索引位置数据,替换单元505在实现替换第一索引位置数据的过程由第二替换模块511完成,
第二替换模块511,用于在所述第二索引位置数据前添加第二运算子单元507所确定的组标记,在组标记前添加所述确定的固定标记,将添加组标记、固定标记的第二索引位置数据替换第一索引位置数据。
对于本发明各个实施例中所阐述的方法和装置,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1、一种索引标识压缩的方法,其特征在于,包括:
读取第一索引标识,判断所述第一索引标识的数值的所属范围是属于相应的数值区间还是属于非确定性数值区间,如果判断出第一索引标识数值属于相应的数值区间,则获取相应的数值区间唯一对应的固定标记和固定长度单位,将获取的固定标记和固定长度单位作为确定出的标记和长度单位;如果判断出第一索引标识数值属于非确定性数值区间,则先将第一索引标识的数值所属字节占用的比特位数,按照数值区间中的最大数值区间所占的比特位数划分出比特段,获取最后一个不可再划分的比特段中的比特序列的值,通过判断该比特序列的值所对应的数值区间,得到唯一对应的固定标记和固定长度单位,将所述划分出的比特段所对应的循环标记、所述最后一个不可再划分的比特段唯一对应的固定标记共同作为确定出的标记,将所述所属字节占用的比特位数作为可变长度单位,将可变长度单位作为确定出的长度单位;
用所述确定出的长度单位表示的第一索引标识数值作为第二索引标识;
使用所述第二索引标识及确定出的标记共同替换所述第一索引标识,所述第一索引标识、第二索引标识和标记为二进制比特序列。
2、根据权利要求1所述的一种索引标识压缩的方法,其特征在于,当所述第一索引标识的数值的所属范围属于相应的数值区间时,所述共同替换所述第一索引标识包括:
在第二索引标识前添加所述确定出的标记,将添加所述确定出的标记后的第二索引标识作为所述第一索引标识。
3、根据权利要求1所述的一种索引标识压缩的方法,其特征在于,当所述第一索引标识的数值的所属范围属于非确定性数值区间时,所述共同替换所述第一索引标识包括:
将所述第二索引标识,按照数值区间中的最大数值区间所占的比特位数划分出比特段,在划分出比特段前添加循环标记,在最后一个不可划分的比特段前添加固定标记,将添加完固定标记和循环标记的第二索引标识替换所述第一索引标识。
4、一种索引标识压缩的装置,其特征在于,包括:
读取单元,用于读取第一索引标识;
判断单元,用于判断所述第一索引标识的数值所属范围是属于相应的数值区间还是属于非确定性数值区间;
运算单元,用于在所述判断出第一索引标识数值属于相应的数值区间时,获取相应的数值区间唯一对应的固定标记和固定长度单位,将获取的固定标记和固定长度单位作为确定出的标记和长度单位;在判断出第一索引标识数值属于非确定性数值区间时,将第一索引标识的数值所属字节占用的比特位数,按照数值区间中的最大数值区间所占的比特位数划分出比特段,获取最后一个不可再划分的比特段中的比特序列的值,通过判断该比特序列的值所对应的数值区间,得到唯一对应的固定标记和固定长度单位,将所述划分出的比特段所对应的循环标记、所述最后一个不可再划分的比特段唯一对应的固定标记共同作为确定出的标记,将所述所属字节占用的比特位数作为可变长度单位,将可变长度单位作为确定出的长度单位;
转换单元,用于将所述确定出的长度单位表示的第一索引标识的数值作为第二索引标识;
替换单元,用于使用所述第二索引标识及所述确定出的标记共同替换所述第一索引标识,所述第一索引标识、第二索引标识和标记为二进制比特序列。
5、一种索引位置数据压缩的方法,其特征在于,包括:
将文档划分为预定数量的区段,在所述预定数量的区段中检索字符,并标识每个区段中是否存在所述字符,将检索后得到的所述标识作为第一索引位置数据;
通过第一索引位置数据获得存在所述字符的区段数量,判断获得的区段数量所属的数量范围是属于相应的数量区间还是属于非确定性数量区间,当判断出所述获得的区段数量属于相应的数量区间时,则获取所述数量区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为确定出的标记和长度单位;当判断出所述获得的区段数量属于非确定性数量区间时,将所述预定数量的区段分组,记录各组中是否存在所述字符的组标记,将所述非确定性数量区间唯一对应的固定标记和所述组标记共同作为确定出的标记,将存在所述字符的区段所在组占用比特位作为确定出的长度单位;
按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
使用所述第二索引位置数据及确定出的标记共同替换所述第一索引位置数据,所述第一索引位置数据、第二索引位置数据和标记为二进制比特序列。
6、根据权利要求5所述的一种索引位置数据压缩的方法,其特征在于,当所述获得的区段数量所属的数量范围属于相应的数量区间时,所述共同替换所述第一索引位置数据的过程包括:
在所述第二索引位置数据前添加固定标记,将添加固定标记的第二索引位置数据替换第一索引位置数据。
7、根据权利要求5所述的一种索引位置数据压缩的方法,其特征在于,当所述获得的区段数量所属的数量范围属于非确定性数量区间时,所述共同替换所述第一索引位置数据的过程包括:
在所述第二索引位置数据前添加组标记,在组标记前添加所述固定标记,将添加组标记、固定标记的第二索引位置数据替换第一索引位置数据。
8、一种索引位置数据压缩的装置,其特征在于,包括:
第一索引位置数据单元,用于将文档划分为预定数量的区段,在所述预定数量的区段中检索字符,并标识每个区段中是否存在所述字符,将检索后得到的所述标识作为第一索引位置数据;
判断单元,用于通过第一索引位置数据获得存在所述字符的区段数量,判断获得的区段数量所属的数量范围是属于相应的数量区间还是非确定性数量区间;
运算单元,用于在判断出所获得的区段数量属于相应的数量区间时,获取所述数量区间唯一对应的固定标记和固定长度单位,将获取的所述唯一对应的固定标记和固定长度单位作为确定出的标记和长度单位;在判断出所述获得的区段数量属于非确定性数量区间时,将所述预定数量的区段分组,记录各组中是否存在所述字符的组标记,将所述非确定性数量区间唯一对应的固定标记和所述组标记共同作为确定出的标记,将存在所述字符的区段所在组占用比特位作为确定出的长度单位;
第二索引位置数据单元,用于按照所述确定出的长度单位表示第一索引位置数据中存在所述字符的区段,将表示后的结果作为第二索引位置数据;
替换单元,用于使用所述第二索引位置数据及确定出的标记共同替换所述第一索引位置数据,所述第一索引位置数据、第二索引位置数据和标记为二进制比特序列。
CNB2007101108507A 2007-06-12 2007-06-12 索引压缩的方法和装置 Active CN100498794C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101108507A CN100498794C (zh) 2007-06-12 2007-06-12 索引压缩的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101108507A CN100498794C (zh) 2007-06-12 2007-06-12 索引压缩的方法和装置

Publications (2)

Publication Number Publication Date
CN101075261A CN101075261A (zh) 2007-11-21
CN100498794C true CN100498794C (zh) 2009-06-10

Family

ID=38976312

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101108507A Active CN100498794C (zh) 2007-06-12 2007-06-12 索引压缩的方法和装置

Country Status (1)

Country Link
CN (1) CN100498794C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105138528B (zh) * 2014-06-09 2020-03-17 腾讯科技(深圳)有限公司 一种多值数据存储、读取的方法和装置及其存取的系统
CN104579358B (zh) * 2015-01-20 2018-09-25 华北电力大学 一种故障录波数据压缩方法
CN106156169B (zh) * 2015-04-16 2019-12-06 深圳市腾讯计算机系统有限公司 离散数据的处理方法和装置
CN107846224A (zh) * 2016-09-20 2018-03-27 天脉聚源(北京)科技有限公司 一种对id标识进行压缩编码的方法和系统
CN108932738B (zh) * 2018-07-03 2022-08-16 南开大学 一种基于字典的位片索引压缩方法
CN110266571B (zh) * 2019-06-17 2020-11-03 珠海格力电器股份有限公司 提高can总线数据传输可靠性的方法、装置和计算机设备

Also Published As

Publication number Publication date
CN101075261A (zh) 2007-11-21

Similar Documents

Publication Publication Date Title
US8914380B2 (en) Search index format optimizations
CN102708187B (zh) 基于Hbase数据库的倒排索引混合压缩及解压方法
US9619565B1 (en) Generating content snippets using a tokenspace repository
Williams et al. Compressing integers for fast file access
Bassiouni Data compression in scientific and statistical databases
KR101157693B1 (ko) 토큰스페이스 저장소와 함께 사용하기 위한 멀티-스테이지질의 처리 시스템 및 방법
US8321485B2 (en) Device and method for constructing inverted indexes
CN100498794C (zh) 索引压缩的方法和装置
CN102024047B (zh) 数据检索方法及装置
US20030074183A1 (en) Method and system for encoding and accessing linguistic frequency data
Pibiri et al. Efficient data structures for massive n-gram datasets
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
CN101145155A (zh) 一种电子词典数据存储格式及其检索方法
US8392433B2 (en) Self-indexer and self indexing system
CN112434085B (zh) 基于Roaring Bitmap的用户数据统计方法
US8463759B2 (en) Method and system for compressing data
US5915041A (en) Method and apparatus for efficiently decoding variable length encoded data
CN112506876B (zh) 一种支持sql查询的无损压缩查询方法
CN112527949B (zh) 数据存储与检索方法、装置、计算机设备及存储介质
US20090292699A1 (en) Nucleotide and amino acid sequence compression
Zobel et al. Compact in-memory models for compression of large text databases
Chen et al. Using d-gap patterns for index compression
CN116909995A (zh) 一种基于人群的位运算实现方法及相关设备
Pibiri et al. E icient Data Structures for Massive N-Gram Datasets
Guthrie et al. Minimal perfect hash rank: compact storage of large n-gram language models

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151218

Address after: The South Road in Guangdong province Shenzhen city Fiyta building 518057 floor 5-10 Nanshan District high tech Zone

Patentee after: Shenzhen Tencent Computer System Co., Ltd.

Address before: 2, 518044, East 410 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.