專利名稱:用于處理大量字符的高效排序元素結構的制作方法
技術領域:
本發明涉及對數據庫系統中的數據進行索引和分類的處理。更具體地說,本發明涉及一種可提供一種高效排序元素結構從而對大量字符的分類權值進行編碼的方法和設備。
背景技術:
在開發數據庫系統的過程中所面臨的一個挑戰就是要支持不同語言的分類。例如,一些數據庫允許日本客戶將分類方法指定為“日語”,而法國客戶將分類方法指定為“法語”。然而,隨著互聯網技術的全球應用,對于公司而言,為其軟件提供多種語言能力以便拓展其全球性的業務變得越來越重要。
因為存儲在數據庫中的數據越來越多語言化,因此數據庫用戶對使用一種適用于大多數語言的分類法越來越感興趣。
不幸的是,在多種語言的分類中存在成千上萬的不同字符,這導致了在執行多種語言的分類過程中所涉及的數據結構耗用大量的內存。此外,在不降低性能的情況下很難壓縮這些數據結構。
通常通過將字符串轉換成相應的排序元素串(這些串也被稱為分類關鍵字)、然后比較這些排序元素串以執行分類操作從而實現了多種語言的分類。該轉換處理通常是通過查找排序加權表中的字符而完成的,該排序加權表包含有每個字符的相應排序加權值。
統一碼學術學會(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·楊 申請人:歐里科國際公司