用于处理大量字符的高效排序元素结构的制作方法

文档序号:6357179阅读:343来源:国知局
专利名称:用于处理大量字符的高效排序元素结构的制作方法
技术领域
本发明涉及对数据库系统中的数据进行索引和分类的处理。更具体地说,本发明涉及一种可提供一种高效排序元素结构从而对大量字符的分类权值进行编码的方法和设备。
背景技术
在开发数据库系统的过程中所面临的一个挑战就是要支持不同语言的分类。例如,一些数据库允许日本客户将分类方法指定为“日语”,而法国客户将分类方法指定为“法语”。然而,随着互联网技术的全球应用,对于公司而言,为其软件提供多种语言能力以便拓展其全球性的业务变得越来越重要。
因为存储在数据库中的数据越来越多语言化,因此数据库用户对使用一种适用于大多数语言的分类法越来越感兴趣。
不幸的是,在多种语言的分类中存在成千上万的不同字符,这导致了在执行多种语言的分类过程中所涉及的数据结构耗用大量的内存。此外,在不降低性能的情况下很难压缩这些数据结构。
通常通过将字符串转换成相应的排序元素串(这些串也被称为分类关键字)、然后比较这些排序元素串以执行分类操作从而实现了多种语言的分类。该转换处理通常是通过查找排序加权表中的字符而完成的,该排序加权表包含有每个字符的相应排序加权值。
统一码学术学会(Unicode Consortium)发布的第10号统一码技术报告(Unicode Technical Report No.10)规定了排序元素结构,该结构包括16位第一加权值以及其后的8位第二加权值及8位第三加权值。第一加权值标识一字符,同时第二加权值规定了该字符的重音,而第三加权值规定了该字符的格信息(并且可能与标点有关)。例如,第一加权值可能规定一字符是“a”,同时第二加权值规定该字符具有一重音“”,而第三加权值规定该字符是大写字母“”。
值得注意的是比较功能通常是首先对第一加权值进行比较。如果第一加权值匹配,那么比较功能比较第二加权值。如果第一和第二加权值均匹配,则比较功能比较第三加权值。
值得注意的是第10号统一码技术报告所规定的16位第一加权值仅可编码65,536个不同字符。然而,提供65,536个以上字符已变得必要。这可以通过将第一加权值的大小增加到32位(4字节)而实现。然而,将第一加权值的大小从16位增加到32位有下述几个缺点(1)需要更多的内存来建立语言索引以支持32位的第一加权值;(2)对语言索引的访问时间增加了;(3)需要更多的内存来存储排序元素串;以及(4)需要更多的计算操作来对分类关键字进行比较。
需要有这样一种方法和设备,其运用可对大量字符进行处理的高效排序元素结构,而不会存在上述问题。

发明内容
本发明的一个实施例提出了一个便于运用可支持大量字符的排序元素的系统。该系统通过接收排序元素并从排序元素内的第一加权字段中读取第一加权值而工作。如果第一加权值属于一组预定值,则该系统从排序元素内的第二加权字段和第三加权字段中读取第一加权值的附加部分。另一方面,如果第一加权值不在该组预定值内,那么该系统从第二加权字段中读取第二加权值,并且从第三加权字段内读取第三加权值。
在本发明的一个实施例中,如果第一加权值属于一组预定值,那么系统将第二加权值设置为第二缺省值,并且将第三加权值设置为第三缺省值。
在本发明的一个实施例中,排序元素遵守统一的字符编码标准。
在本发明的一个实施例中,第一加权值标识一字符。另外,第二加权值规定该字符的重音,并且第三加权值规定该字符的格信息。
在本发明的一个实施例中,除非第一加权字段内的值属于预定的一组值,在此情况下第一加权字段占据了排序元素的所有4个字节,否则的话,排序元素的大小是4个字节,其中第一加权字段是2个字节,第二加权字段是1个字节且第三加权字段是1个字节。
在本发明的一个实施例中,第一加权值的该组预定值包括16进制值0xFFF0-0xFFFF。
在本发明的一个实施例中,排序元素取自一排序加权表,该表用于将字符映射到排序加权值以便建立字符串间的次序。
在该实施例的一种变化形式中,所述系统通过读取字符串中的每个字符并从排序加权表中查找每个字符的相应排序元素而为一字符串另外构造了一分类关键字。该系统随后将每个字符的相应排序元素添加到该分类关键字上。值得注意的是如果该分类关键字与一个数据库中的某一记录相关,那么该分类关键字可以用于构造该数据库的语言索引。


图1给出了根据本发明一实施例的具有一数据库的计算机系统;图2给出了根据本发明一实施例的排序元素的可选结构;图3A说明如何根据本发明一实施例来生成分类关键字;图3B是一个流程图,说明根据本发明一实施例来生成分类关键字的过程;图4是一个流程图,说明根据本发明一实施例来读取一排序元素的过程。
具体实施例方式
下述说明可使任何本领域技术人员制作并使用本发明,并在这方面提供了一种特定应用及其要求。对于本领域技术人员来说对于所公开的实施例做出各种修改将显而易见,并且在不脱离本发明精神和范围的情况下,这里所说明的一般原理适用于其他实施例和应用。因此,本发明将并不局限于所示实施例,而是适合与这里所公开的原理及特征相一致的最宽范围。
在下述说明中所描述的数据结构和代码通常存储在计算机可读介质中,该计算机可读介质可以是任一种计算机系统所使用的可存储代码和/或数据的设备或介质。这包括但是并不局限于诸如磁盘驱动器、磁带、CDs(高密度磁盘)及DVDs(数字化视频光盘)以及包含在传输介质中的计算机指令信号(利用或未利用载波来对信号进行调制)。例如,传输介质可以包括诸如互联网这样的通信网。
计算机系统图1给出了根据本发明一实施例的计算机系统102,其具有数据库104。计算机系统102通常可包括任一类型的计算机系统,此任一类型的计算机系统包括但是并不局限于基于微处理器的计算机系统、大型机、数字信号处理器、便携式计算机、个人管理器、设备控制器、以及设备内的计算引擎。
数据库104可包括将数据存储在非易失性存储器中的任一类系统。这又包括但不局限于基于磁、光、及磁光存储装置的系统以及基于闪速存储器和/或后备电池存储器的存储装置。数据库104包括一个由记录集的集合所组成的数据文件106,该记录集是按照插入顺序存储的。数据文件106可通过诸如索引108的一个或多个索引加以引用,该索引108规定了记录在数据文件106中的顺序。这种顺序通常是通过对数据文件106中的相关目标栏进行分类而确定的。为使该分类满足某一特定的语言分类次序,首先通过查找排序加权表110中的字符而将该目标栏中的每个字符串转换成分类关键字。值得注意的是,排序加权表110仅仅是包含有每个可能字符的排序元素的一个数组。
排序元素的结构图2给出了根据本发明一实施例的排序元素204的可选结构。如图2所示,排序元素204通过查找排序加权表110而产生。
在所示的实施例中,排序元素204占用了数据的4个字节,并且可具有两种格式中的一种。在第一种格式中,排序元素204的头两个字节包含第一加权字段206,同时第三字节包含第二加权字段208并且第四字节包含第三加权字段210。
在第二种格式中,排序元素204的头两个字节包含范围为0xFFF0-0xFFFF的预定值。该预定值表明排序元素204的第三和第四字节包含第一加权字段的扩展部分而不是第二和第三加权值。在这种情况下,将第二和第三加权值设置为缺省值。
值得注意的是第二种格式支持超过1,000,000个不同的字符,这是因为在排序元素204的第一和第二字节中,16个可能的数值0xFFF0-0xFFF中的每一个均与排序元素204的第三和第四字节中的16位或者说65,536个可能数值相对应。
还应该注意的是可将第二和第三加权值设置为缺省值,这是因为标识符大于65,536的新字符是中日韩(CJK)字符,主要是Han和HangulJamo字符,而在Han/Hangul Jamo字符之间不存在重音和格的差异。此外,即使在亚洲远东地区,人们也总是将基于拉丁语系的字母和数字符号排列在CJK字符之前。
生成分类关键字图3A图示了怎样根据本发明一实施例来生成分类关键字。在图3A中,通过在排序加权表110中查找单个字符而逐字符地将字符串302转换成包括由分类关键字304构成的排序元素(加权)串。
图3B给出了根据本发明一实施例来生成分类关键字304的处理流程图。对于字符串302中的每个字符202而言,系统读取字符202(步骤306),并在排序加权表中查找字符202的排序元素204(步骤308)。此后系统将排序元素204添加到分类关键字304上(步骤310)。
读取排序元素图4给出了根据本发明一实施例来读取一排序元素的处理流程图。在分类处理或需要在分类关键字之间进行比较的某种其他操作过程中,该系统开始接收排序元素204(步骤402)。接下来,系统确定排序元素204的头两个(较高序位)字节是否包含一个大于或等于0xFFF0的预定值(步骤404)。如果是,系统即使第一加权值占用排序元素204的所有四个字节,并且将第二和第三加权值设置为缺省值(步骤406)。
如果排序元素204的头两个字节不包含预定值,则系统将第一加权值设定为排序元素204的第一和第二字节。这是通过将排序元素204向右移动16位并随后将留存的两个字节作为第一加权值而实现的。接下来,将排序元素204的第三字节(次于最低序位)取作第二加权值。这是通过将排序元素204向右移动8位并将留存字的最低序位字节作为第二加权值而实现的。最后,将排序元素204的第四字节(最低序位)取作第三加权值(步骤408)。
对本发明实施例的以上描述仅仅是为了说明和描述的目的。它们并不是详尽的或是要将本发明局限于这里所公开的形式。因此,本领域熟练技术人员很显然可做出多种修改和变化。此外,上述所公开的内容并不仅限于本发明。本发明的范围是由所附权利要求来确定的。
权利要求
1.一种便于使用而支持大量字符的排序元素的方法,所述方法包括接收所述排序元素;从所述排序元素内的第一加权字段中读取第一加权值;如果第一加权值属于预定的一组值,那么从所述排序元素内的第二加权字段和第三加权字段中读取第一加权值的附加部分;并且如果第一加权值不在所述预定的一组值内,那么从所述排序元素内的第二加权字段中读取第二加权值,并且从所述排序元素内的第三加权字段中读取第三加权值。
2.根据权利要求1的方法,其中如果第一加权值属于预定的一组值,那么所述方法还包括将第二加权值设置为第二缺省值;并且将第三加权值设置为第三缺省值。
3.根据权利要求1的方法,其中所述排序元素遵守第10号统一码技术报告中所规定的一种结构。
4.根据权利要求1的方法,其中第一加权值标识一字符;其中第二加权值可规定该字符的重音;而且其中第三加权值可规定该字符的格信息。
5.根据权利要求1的方法,其中除非第一加权字段内的值属于所述预定的一组值,在此情况下第一加权字段占据所述排序元素的所有4个字节,否则的话,所述排序元素的大小是4个字节,其中第一加权字段是2个字节,第二加权字段是1个字节而且第三加权字段是1个字节。
6.根据权利要求5的方法,其中对于第一加权值,所述预定的一组值包括16进位数值0xFFF0-0xFFFF。
7.根据权利要求1的方法,其中所述排序元素取自一排序加权表,该表用于将字符映射到排序加权值以便建立字符串间的次序。
8.根据权利要求7的方法,其进一步包括通过下列步骤来为一字符串构造一分类关键字读取该字符串中的每个字符;从所述排序加权表中查找每个字符的相应排序元素;并且将所述每个字符的相应排序元素添加到所述分类关键字上。
9.根据权利要求8的方法,其中所述分类关键字与一数据库中的记录相关;并且其中所述分类关键字被用于构造所述数据库的语言索引。
10.一种存储指令的计算机可读存储介质,当一计算机执行上述指令时使得该计算机执行一种便于使用而支持大量字符的排序元素的方法,所述方法包括接收所述排序元素;从所述排序元素内的第一加权字段中读取第一加权值;如果第一加权值属于预定的一组值,那么从所述排序元素内的第二加权字段和第三加权字段中读取第一加权值的附加部分;并且如果第一加权值不在所述预定的一组值内,那么从所述排序元素内的第二加权字段中读取第二加权值,并且从所述排序元素内的第三加权字段中读取第三加权值。
11.根据权利要求10的计算机可读存储介质,其中如果第一加权值属于预定的一组值,那么所述方法还包括将第二加权值设置为第二缺省值;并且将第三加权值设置为第三缺省值。
12.根据权利要求10的计算机可读存储介质,其中所述排序元素遵守第10号统一码编码标准报告中所规定的一种结构。
13.根据权利要求10的计算机可读存储介质,其中第一加权值标识一字符;其中第二加权值可规定该字符的重音;其中第三加权值可规定该字符的格信息。
14.根据权利要求10的计算机可读存储介质,其中除非第一加权字段内的值属于所述预定的一组值,在此情况下第一加权字段占据所述排序元素的所有4个字节,否则的话,所述排序元素的大小是4个字节,其中第一加权字段是2个字节,第二加权字段是1个字节而且第三加权字段是1个字节。
15.根据权利要求14的计算机可读存储介质,其中对于第一加权值,所述预定的一组值包括16进位数值0xFFF0-0xFFFF。
16.根据权利要求10的计算机可读存储介质,其中所述排序元素取自一排序加权表,该表用于将字符映射到排序加权值以便建立字符串间的次序。
17.根据权利要求16的计算机可读存储介质,其进一步包括通过下列步骤来为一字符串构造一分类关键字读取该字符串中的每个字符;从所述排序加权表中查找每个字符的相应排序元素;并且将所述每个字符的相应排序元素添加到所述分类关键字上。
18.根据权利要求17的计算机可读存储介质,其中所述分类关键字与一数据库中的记录相关;并且其中所述分类关键字被用于构造所述数据库的语言索引。
19.一种便于使用而支持大量字符的排序元素的设备,所述设备包括一分配装置,用于从所述排序元素内的第一加权字段中读取第一加权值;其中如果第一加权值属于预定的一组值,那么所述分配装置被设定为从所述排序元素内的第二加权字段和第三加权字段中读取第一加权值的附加部分;并且其中如果第一加权值不在所述预定的一组值内,那么所述分配装置被设定为从所述排序元素内的第二加权字段中读取第二加权值,并且从所述排序元素内的第三加权字段中读取第三加权值。
20.根据权利要求19的设备,其中如果第一加权值属于所述预定的一组值,那么所述分配装置被设定为将第二加权值设置为第二缺省值;并且将第三加权值设置为第三缺省值。
21.根据权利要求19的设备,其中所述排序元素遵守第10号统一码技术报告中所规定的一种结构。
22.根据权利要求19的设备,其中第一加权值标识一字符;其中第二加权值可规定该字符的重音;其中第三加权值可规定该字符的格信息。
23.根据权利要求19的设备,其中除非第一加权字段内的值属于所述预定的一组值,在此情况下第一加权字段占据所述排序元素的所有4个字节,否则的话,所述排序元素的大小是4个字节,其中第一加权字段是2个字节,第二加权字段是1个字节而且第三加权字段是1个字节。
24.根据权利要求23的设备,其中对于第一加权值,所述一组预定值包括16进位数值0xFFF0-0xFFFF。
25.根据权利要求24的设备,其中所述排序元素取自一排序加权表,该表用于将字符映射到排序加权值以便建立字符串间的顺序。
26.根据权利要求25的设备,其进一步包括一关键字构造装置,用以为一字符串构造一分类关键字,其中该关键字构造装置被设定为读取该字符串中的每个字符;从所述排序加权表中查找每个字符的相应排序元素;并且将所述每个字符的相应排序元素添加到所述分类关键字上。
27.根据权利要求26的设备,其中所述分类关键字与一数据库中的记录相关;并且其中所述分类关键字被用于构造所述数据库的语言索引。
全文摘要
本发明的一个实施例提供了一个便于使用可支持大量字符的排序元素的系统。该系统接收排序元素并且从排序元素内的第一加权字段中读取第一加权值。如果第一加权值属于预定的一组值,那么系统从排序元素内的第二加权字段和第三加权字段中读取第一加权值的附加部分。另一方面,如果第一加权值不在预定的一组值内,那么系统从第二加权字段中读取第二加权值,并且从第三加权字段中读取第三加权值。
文档编号G06F17/22GK1531692SQ02809865
公开日2004年9月22日 申请日期2002年5月22日 优先权日2001年5月31日
发明者C-L·何, C-L 何, J·杨 申请人:欧里科国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1