專利名稱:?jiǎn)卧~表和其它文本的有效存儲(chǔ)和檢索的制作方法
單詞表和其它文本的有效存儲(chǔ)和檢索
版權(quán)聲明
本專利文獻(xiàn)公開內(nèi)容的一部分包含受到版權(quán)保護(hù)的內(nèi)容。該版權(quán)所有者不 反對(duì)因該專利文獻(xiàn)或?qū)@_出現(xiàn)在美國(guó)專利商標(biāo)局的專利文檔或記錄本中 而被任何人影印復(fù)制,但除此以外則保留全部版權(quán)權(quán)利。
背景技術(shù):
1、 發(fā)明領(lǐng)域
本發(fā)明涉及文本存儲(chǔ)和檢索系統(tǒng)。尤其是,本發(fā)明涉及在虛擬表格中的文 本存儲(chǔ),其采用新穎的設(shè)置來(lái)幫助加快檢索。本發(fā)明其它方面包括相關(guān)方法、 裝置、邏輯電路圖、計(jì)算機(jī)程序產(chǎn)品等等。
2、 相關(guān)技術(shù)的描述
在當(dāng)今數(shù)字時(shí)代,數(shù)字化存儲(chǔ)數(shù)據(jù)無(wú)所不在。數(shù)字?jǐn)?shù)據(jù)被保存在易失性和 非易失性設(shè)備里,例如硬盤、記憶棒、軟盤、集成電路、磁帶、光盤等。
隨著手持設(shè)備的廣泛流行,以緊湊格式儲(chǔ)存數(shù)據(jù)也變得日益重要。由于技 術(shù)進(jìn)歩的不斷出現(xiàn),物理設(shè)備本身在尺寸上年年縮小。并且,除了物理設(shè)備的 設(shè)計(jì)以外,已經(jīng)不斷出現(xiàn)了一系列提供不同類型數(shù)據(jù)壓縮的軟件算法。即使在 數(shù)據(jù)大小并不至關(guān)重要的應(yīng)用程序中,數(shù)據(jù)壓縮仍然提供了好處,因?yàn)橄嗤?小的存儲(chǔ)設(shè)備可以容納更多數(shù)據(jù)。
除存儲(chǔ)大小以外,消費(fèi)者還要求最大存儲(chǔ)速度。因此,數(shù)據(jù)存儲(chǔ)設(shè)備在它 們的運(yùn)行轉(zhuǎn)速方面一直定期的提高。并且,除了物理設(shè)備的設(shè)計(jì)以外,已經(jīng)有 許多設(shè)法采用有助于更快檢索和讀取的方式來(lái)更有效地定位被存儲(chǔ)的數(shù)據(jù)和 存儲(chǔ)該數(shù)據(jù)的軟件算法。
但消費(fèi)者仍然得不到滿足,而要求比以前更快和更緊湊的數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)。 盡管過(guò)去進(jìn)步顯著,并且某些產(chǎn)品在商業(yè)上獲得廣泛成功,但仍有持續(xù)不斷的 研究以改善數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)的大小和速度。從這方面來(lái)看,似乎總出現(xiàn)新的問(wèn)題,并且已知的數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)技術(shù)從不能完全適合所有消費(fèi)者的需要。 發(fā)明概述
本公開內(nèi)容的一個(gè)方面包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)實(shí)際包含被設(shè)置為幫助加快檢索的機(jī)器可讀數(shù)字?jǐn)?shù)據(jù)。該數(shù)據(jù)包括大量存放 在具有行和列的表格中的單詞,每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字 母占據(jù)那一行的不同列。在一列中每個(gè)連續(xù)出現(xiàn)的相同字母串形成一個(gè)間隔, 單詞被以相互之間最大化間隔的長(zhǎng)度來(lái)定位,和/或通過(guò)游程長(zhǎng)度編碼優(yōu)化壓 縮列的效率。
本公開內(nèi)容的教導(dǎo)可被落實(shí)為一種方法、裝置、邏輯電路、信號(hào)承載介質(zhì) 或這些的組合。這一公開提供許多其它優(yōu)點(diǎn)和益處,它們從下面的描述中可以 顯而易見。
圖1是文本存儲(chǔ)和檢索系統(tǒng)的組件和互連的方框圖。
圖2是數(shù)字?jǐn)?shù)據(jù)處理器的方框圖。
圖3示出示例性的信號(hào)承載介質(zhì)。
圖4是示例性邏輯電路的透視圖。
圖5是存儲(chǔ)單詞來(lái)幫助加快檢索的程序流程圖。
圖6是指導(dǎo)對(duì)按圖5所存儲(chǔ)的單詞加快檢索的程序流程圖。
圖7是單詞存儲(chǔ)表的例子。
圖8是壓縮的單詞存儲(chǔ)表的例子。
詳細(xì)說(shuō)明
結(jié)合附圖,考慮以下詳細(xì)說(shuō)明之后,本發(fā)明的本質(zhì),目的和優(yōu)點(diǎn)對(duì)本領(lǐng)域 技術(shù)人員將變得更顯而易見。
硬件組件和互連 整體結(jié)構(gòu)
本發(fā)明公開內(nèi)容的一方面涉及一個(gè)文本存儲(chǔ)和檢索系統(tǒng)。 一個(gè)例子是圖1的系統(tǒng)100。該系統(tǒng)IOO包括用戶界面102、管理器106、和數(shù)據(jù)存儲(chǔ)110。用 戶界面102包括把來(lái)自人類的生物統(tǒng)計(jì)的輸入轉(zhuǎn)換成機(jī)器可讀信號(hào)和反過(guò)來(lái) 將機(jī)器可讀信號(hào)轉(zhuǎn)換成人類的生物統(tǒng)計(jì)的輸入的裝置。對(duì)于用戶輸入,界面 102可包括完整或簡(jiǎn)化的按鍵鍵盤、軟鍵盤、數(shù)字化表面、指點(diǎn)設(shè)備、語(yǔ)音識(shí) 別系統(tǒng)、視線跟蹤系統(tǒng)等等。對(duì)于向用戶的機(jī)器輸出,界面102的一些例子包 括LCD視頻顯示、揚(yáng)聲器、LED矩陣、等離子體顯示,CRT等等。此外,界 面102可由任何適合于本文所述功能的技術(shù)來(lái)實(shí)現(xiàn)。
管理器106根據(jù)從界面102接收的用戶數(shù)據(jù)和命令執(zhí)行多種任務(wù)。下面更 詳細(xì)地描述管理器106的具體任務(wù)。管理器106可通過(guò)一個(gè)或多個(gè)硬件設(shè)備、 軟件模塊、或者兩者的組合等來(lái)實(shí)現(xiàn)。 一些具體的例子在下面結(jié)合圖2-4被論 述。
數(shù)據(jù)存儲(chǔ)IIO在管理器106的指導(dǎo)下儲(chǔ)存數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)110可通過(guò)諸如 在下面結(jié)合圖3-4所描述的那些硬件設(shè)備而實(shí)現(xiàn)。存儲(chǔ)110包含表格118,該 存儲(chǔ)IIO包含被設(shè)置為幫助加快檢索的機(jī)器可讀數(shù)字?jǐn)?shù)據(jù),如在下面更詳細(xì)地 說(shuō)明。如下面所論述,表格118將單詞存儲(chǔ)在多個(gè)行和列中。每個(gè)單詞占據(jù)不 同的行。單詞的每個(gè)字母占據(jù)那行的不同列。當(dāng)然,機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)存儲(chǔ) 的本質(zhì)是從不存在任何實(shí)際的"表格"。如在下面進(jìn)一步詳細(xì)論述,數(shù)據(jù)被按地 址存儲(chǔ)并且以映射為表格的邏輯結(jié)構(gòu)被設(shè)置,如下面更詳細(xì)地描述。為強(qiáng)調(diào)這 點(diǎn),表格118也可被稱作虛擬表格、虛擬矩陣、邏輯表、邏輯矩陣等等。
應(yīng)用程序120包括由管理器106執(zhí)行的軟件或固件程序。 一些例子包括字 處理、聯(lián)系簿、電子郵件、即時(shí)通信、用戶輸入文本的歧義消除、日程管理或 用戶希望的任何其它程序。作為一個(gè)具體例子,應(yīng)用程序120可以包括丁9@牌 單詞歧義消除技術(shù)。T9技術(shù)在多種專利中被描述,例如美國(guó)專利號(hào)5818437、 5953541和6011554。上述文獻(xiàn)通過(guò)引用整體引入本文?;蛘?,任何應(yīng)用程序 120可以電路或其它形式實(shí)現(xiàn),例如下面在圖2-4的上下文中論述的那些例子。
示例性數(shù)字?jǐn)?shù)據(jù)處理裝置
如上述,數(shù)據(jù)處理實(shí)體(例如管理器106)可以多種形式實(shí)現(xiàn)。 一些例子 包括通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編 程門陣列(FPGA)或其它可編程邏輯設(shè)備、分立門或晶體管邏輯、分立硬件組件,或它們被設(shè)計(jì)成執(zhí)行本文所述功能的任何組合。通用處理器可能是微處 理器,但是作為替換,處理器可能是任何傳統(tǒng)的處理器、控制器、微控制器或
狀態(tài)機(jī)。處理器也可以被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如DSP和微處理器的組 合、多個(gè)微處理器、 一個(gè)或多個(gè)微處理器結(jié)合DSP核心、或任何其它這種結(jié) 構(gòu)。
作為更具體的例子,圖2示出數(shù)字?jǐn)?shù)據(jù)處理裝置200。裝置200包括與存 儲(chǔ)器204相連的處理器202,例如微處理器、個(gè)人電腦、工作站、控制器、微 控制器、狀態(tài)機(jī)或其它處理器。在當(dāng)前例子中,存儲(chǔ)器204包括快速訪問(wèn)存儲(chǔ) 器206和非易失存儲(chǔ)器208。例如,該快速訪問(wèn)存儲(chǔ)器206可以被用于儲(chǔ)存由 處理器202執(zhí)行的編程指令。存儲(chǔ)器206和208可通過(guò)多種設(shè)備來(lái)實(shí)現(xiàn),例如 結(jié)合圖3和4更詳細(xì)地論述的那些。許多選擇是可能的。例如,組件206, 208 之一可以被除去;此外,存儲(chǔ)器204, 206和/或208可被設(shè)置在處理器202插 件板上,甚至設(shè)在裝置200的外部。
裝置200還包括輸入/輸出210,例如連接器、線、公共總線、電纜、緩 沖器、電磁鏈接、網(wǎng)絡(luò)、調(diào)制解調(diào)器、或用于處理器202與裝置200外部的其 它硬件交換數(shù)據(jù)的其它裝置。
信號(hào)承載介質(zhì)
如上述,多種數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)的情況可被使用,例如,以提供存儲(chǔ)100(圖 1),以包含存儲(chǔ)204和208 (圖2),等等。根據(jù)它的應(yīng)用,該數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)可 被用于多種功能,例如儲(chǔ)存數(shù)據(jù),或存儲(chǔ)機(jī)器可讀指令。這些指令本身可對(duì)執(zhí) 行多種處理功能給予幫助,或它們可服務(wù)于在計(jì)算機(jī)上安裝軟件程序,然后可 在該計(jì)算機(jī)中執(zhí)行這種軟件程序來(lái)進(jìn)行與本公開內(nèi)容相關(guān)的其它功能。
在任何情況下,信號(hào)承載介質(zhì)可通過(guò)幾乎任何機(jī)制來(lái)實(shí)現(xiàn)以數(shù)字式地存儲(chǔ) 機(jī)器可讀信號(hào)。其中一個(gè)例子是光存儲(chǔ)例如CD-ROM、 WORM、 DVD、數(shù)字 光帶、磁盤存儲(chǔ)器300 (圖3)或其它光存儲(chǔ)器。另一個(gè)例子是直接訪問(wèn)存儲(chǔ) 器,例如傳統(tǒng)的"硬盤驅(qū)動(dòng)"、廉價(jià)磁盤冗余陳列("RAID")、或另一直接訪問(wèn) 存儲(chǔ)器("DASD")。另一個(gè)例子是串行的訪問(wèn)存儲(chǔ),例如磁帶或光帶。數(shù)字 數(shù)據(jù)存儲(chǔ)的其它例子包括電子存儲(chǔ)器例如ROM、 EPROM、閃速PROM、 EEPROM、存儲(chǔ)寄存器、電池備份RAM等等。示例性存儲(chǔ)介質(zhì)與處理器相連,所以處理器可以從存儲(chǔ)介質(zhì)讀取信息和寫 入信息到存儲(chǔ)介質(zhì)。在備選方案中,存儲(chǔ)介質(zhì)可集成到處理器。在另一例子中,
處理器和存儲(chǔ)介質(zhì)可放在ASIC或其它集成電路中。 邏輯電路圖
相比于包含機(jī)器可執(zhí)行指令的信號(hào)承載介質(zhì)(如上所述), 一個(gè)不同的實(shí) 施方式使用邏輯電路圖來(lái)實(shí)現(xiàn)處理特征,例如管理器106。
根據(jù)在速度、費(fèi)用、加工成本等方面的應(yīng)用特定的需求,這個(gè)邏輯電路圖 可通過(guò)構(gòu)造具有數(shù)以千計(jì)的微小集成晶體管的專用集成電路(ASIC)來(lái)實(shí)現(xiàn)。這 樣一種AS1C可用CMOS、 TTL、 VLSI或其它合適的結(jié)構(gòu)來(lái)實(shí)現(xiàn)。其它的選擇 包括數(shù)字信號(hào)處理芯片(DSP)、離散電路圖(例如電阻器、電容器、二極管、 感應(yīng)器和晶體管)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、可編程邏輯陣列(PLA)、可編 程邏輯設(shè)備(PLD)等等。
圖4示出以集成電路400這種形式的邏輯電路圖的例子。
操作
描述過(guò)本公開內(nèi)容的結(jié)構(gòu)特征后,現(xiàn)在將被描述本公開內(nèi)容的操作方面。 結(jié)合本文所公開的實(shí)施方式而描述的任何方法、過(guò)程、或算法的步驟可直接體 現(xiàn)在硬件中、體現(xiàn)在通過(guò)硬件執(zhí)行的軟件模塊中,或體現(xiàn)在兩者的組合。
存儲(chǔ)單詞
圖5圖示本公開內(nèi)容在方法方面的一個(gè)例子。概括地說(shuō),程序500演示了 一個(gè)新過(guò)程,所述過(guò)程存儲(chǔ)被配置成幫助加快檢索的單詞表。為了便于說(shuō)明, 但是并不意味著任何限制,在圖1的系統(tǒng)100的特定上下文中討論程序500。
當(dāng)系統(tǒng)100被初始化、被安裝、被制造、被啟動(dòng)、被激活或其它適當(dāng)?shù)膱?chǎng) 合時(shí),可執(zhí)行程序500。在步驟502中,管理器106接收一組待輸入到表格118 里的單詞。這一單詞集合被稱作初始簿或一個(gè)"源列表"。該初始簿通過(guò)技術(shù) 人員的手工輸入、隨系統(tǒng)100安裝、從遠(yuǎn)程站點(diǎn)下載、從數(shù)據(jù)存儲(chǔ)110中存檔 的或備份(setup)設(shè)備中讀取等等到達(dá)管理器106。
在步驟503,管理器106建立表格118。該表格包含許多行和列。建成后,表格118將在不同的行存儲(chǔ)每個(gè)單詞并且該單詞的每個(gè)字母占據(jù)那一行的不 同列。當(dāng)然,機(jī)器可讀數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)的本質(zhì)是事實(shí)上不存在任何實(shí)際的表格。 相反,數(shù)據(jù)被按地址存儲(chǔ)并且以映射為表格的邏輯結(jié)構(gòu)被設(shè)置。盡管在步驟 503沒(méi)有任何單詞,但該表格被稱作"靶列表"或"靶單詞表"。
以下例子定義了每行一個(gè)單詞的例子。這里,步驟503將表格定義為包括 至少和源列表中的單詞數(shù)一樣多的行,以及至少和最長(zhǎng)單詞的字母數(shù)一樣多的 列。在一個(gè)更具體的例子中(未示出),為了在最長(zhǎng)的單詞之后指定一個(gè)"空" 字符,該表格可包括和最長(zhǎng)單詞的字母數(shù)加上1后一樣多的列。這在檢索該表 格時(shí)被使用,如在后面更更詳細(xì)地論述。
在步驟503之后,管理器106從源列表中一個(gè)接一個(gè)的輸入單詞到最初的 空表格118。也就是,在步驟504,該管理器106將源列表中的每個(gè)單詞與靶 列表(表格118)中底部的(最后的)單詞進(jìn)行比較。在步驟506,管理器106 將來(lái)自源列表的最大相似度的單詞(通過(guò)比較504找到)存儲(chǔ)到靶列表的底部, 并且可選擇地,從該源列表中除去這個(gè)單詞。步驟504和506不斷的重復(fù)使得 源列表中的所有單詞都被處理(506),或單詞被從源列表中一個(gè)接一個(gè)的除去, 直到步驟508發(fā)現(xiàn)在該源列表中不再有單詞剩余。
在一個(gè)具體的例子中,步驟504工作如下。當(dāng)比較兩個(gè)單詞時(shí),步驟504 做逐字母比較,對(duì)每個(gè)匹配的字母獎(jiǎng)勵(lì)一分。例如,比較"ptarmigan "和"search" 得到兩分。比較"caribou"和"cartoon"得到四分。比較"ptarmigan"和"ptarmigans" 得到九分。在步驟504比較在源列表中每個(gè)單詞和靶列表底部的單詞之后,步 驟506在表格的底部存儲(chǔ)最大相似度的源列表單詞。如果源列表的兩個(gè)單詞之 間存在聯(lián)系(與靶列表的最后一個(gè)單詞比較時(shí)都有相同的分?jǐn)?shù)),那么任務(wù)506 使用第一次出現(xiàn)在源列表中的單詞。如果步驟506發(fā)現(xiàn)當(dāng)前單詞已經(jīng)在表格 118中,那么當(dāng)前的單詞被丟棄。
然后,步驟504和506具有按照相似度順序來(lái)分選源列表的單詞的作用。 在這種意義上講,相似性被寬松地定義為在單詞中相同符號(hào)位置的數(shù)目。在步 驟506之后,步驟508詢問(wèn)是否存在任何來(lái)自源列表的剩余單詞需要處理并加 到表格118中。如果是,那么下一個(gè)單詞變成當(dāng)前的單詞,并且重復(fù)上面所論 述的步驟504, 506。
上述僅僅是一個(gè)例子。除了基于最佳匹配一個(gè)接一個(gè)地選取單詞,任務(wù)504-506可采用多種不同比較方案中的任何一個(gè)。它們中的許多對(duì)于本領(lǐng)域技 術(shù)人員來(lái)說(shuō)是顯而易見的,有利于本公開內(nèi)容。此外,該比較方案可包括特別 被設(shè)計(jì)為以最有助于被步驟510 (如下所述)壓縮的方式來(lái)指示(order)靶列
表中的單詞的其它特征。
可選擇地,當(dāng)步驟508發(fā)現(xiàn)來(lái)自初始簿的所有單詞已經(jīng)被處理,步驟510 壓縮表格118。在一個(gè)例子中,壓縮使用游程長(zhǎng)度編碼來(lái)分別地壓縮表格的每 列。下面描述一個(gè)詳細(xì)的例子。
在步驟512,管理器106分析已完成的(并且可選擇地被壓縮的)表格118, 并且格式化該表格。歩驟512可例如增加表頭信息和/或其它元數(shù)據(jù)。在一個(gè) 特定的例子中,步驟512計(jì)算已完成的表格的每列中的間隔數(shù)并且在表格元數(shù) 據(jù)中存儲(chǔ)該計(jì)數(shù)。此外,步驟512可根據(jù)它們包含多少間隔將列分級(jí),并且將 這一信息放在表格元數(shù)據(jù)中。另外,步驟512可分析該已完成的表格118以標(biāo) 識(shí)該表格中定位了某些長(zhǎng)度的單詞的最后一行。例如步驟512可準(zhǔn)備一個(gè)列 表,該列表的行包含最后的一個(gè)字母的單詞,最后的兩個(gè)字母的單詞,等等。 這個(gè)信息被存儲(chǔ)在表格元數(shù)據(jù)中。
修改
程序500可以多種方式修改,其中一些在下面論述。在當(dāng)前的例子中,表 格118—旦被構(gòu)建就是靜態(tài)的。也就是說(shuō),新單詞不能被加到表格118中。這 有助于保護(hù)處理成果,因?yàn)楫?dāng)增加一個(gè)新單詞時(shí),重復(fù)操作500是很費(fèi)時(shí)間的。 在這個(gè)例子中,操作500表示編輯表格118的一次動(dòng)作。在一個(gè)不同的例子中, 表格118允許隨時(shí)加入新單詞。例如,該新單詞可與表中存在的單詞對(duì)比,并 且最接近最大相似度單詞放置。
在一個(gè)完全不同的例子中,可修改程序500以結(jié)合頻繁使用的單詞的有限 子集。在這個(gè)例子中,在第一次進(jìn)行步驟504, 506之前,將最頻繁使用的單 詞的有序表從源列表移動(dòng)到靶列表。然后,正常地實(shí)施操作504-510。因?yàn)閷?duì) 來(lái)自源列表的新單詞進(jìn)行了比較并且將其加入到表的末尾,因此這在表格的頂 部保存頻繁使用的單詞的內(nèi)容和順序。這些單詞可以是在通常使用、用戶輸入 的單詞、被指定用戶最常用的單詞等等中最頻繁出現(xiàn)的單詞。在一個(gè)例子中, 這些最頻繁使用的單詞可包括表格118中的單詞的大約5%?;蛘撸芾砥?06可使用和表格118分離的物理或邏輯位置來(lái)分別維持一列a list of頻繁輸入的 單詞用戶輸入的單詞等等。
已完成的表格118
圖7示出已完成的表格118的例子700。該表格700的行通過(guò)字符的橫線 顯示,列由702-709示出。在這個(gè)例子中,表格700最長(zhǎng)容納九個(gè)字母的單詞。
雖然"字母"無(wú)疑可以指字母表的字母,但這個(gè)公開內(nèi)容不應(yīng)該被過(guò)度地局 限于這樣一個(gè)例子。字母還可包括那些用來(lái)一起形成可識(shí)別的字符組(例如單 詞)的標(biāo)點(diǎn)符號(hào)、數(shù)字、和其它符號(hào)。
因此,在表格118中的每個(gè)單詞占據(jù)不同的行。每個(gè)單詞的每個(gè)字母占據(jù) 那一行的不同列。每個(gè)單詞的第一字母出現(xiàn)在列702。在一列中的相同字母串 形成"間隔"。間隔的一個(gè)例子是712,該處中字母"t"連續(xù)出現(xiàn)了六次。另一個(gè) 間隔是716,該處中字母"h"連續(xù)出現(xiàn)了十三次。另一個(gè)間隔是718,該處中"i" 連續(xù)出現(xiàn)了四次。表格700還包含空白或"空"間隔,例如714和715??蛇x擇地,每行被指定一個(gè)行數(shù)或地址。行地址(721-737)通過(guò)718表 示。指定行地址幫助加速表格700的檢索,如在下面詳細(xì)地論述。
組織步驟504, 506自然結(jié)果是表格700中的單詞被設(shè)置成使間隔的長(zhǎng)度 最大化。如在下面所論述,較長(zhǎng)間隔加速了檢索表格700的過(guò)程。
壓縮表
如上所參考(步驟510),表格118可被壓縮。在這個(gè)例子中,壓縮使用 游程長(zhǎng)度編碼來(lái)分別編碼表格的每列。此外,可丟棄原始表700而使用壓縮表 800全部進(jìn)行將來(lái)的檢索。這在下面更詳細(xì)地論述。
圖8示出一個(gè)壓縮表800的例子。這里,表格800表示通過(guò)步驟510來(lái)壓 縮表格700的結(jié)果。尤其是,表格800表示一系列數(shù)據(jù)流802-809,每個(gè)對(duì)應(yīng) 于列702—709中的一個(gè)。在數(shù)據(jù)流802中,例如,編碼"2c 2w ls 6t 4c lg lb" 表示"c"出現(xiàn)2次,"W"出現(xiàn)2次,"S"出現(xiàn)1次,"t"出現(xiàn)6次,"c"出現(xiàn)4次, "g"出現(xiàn)1次和"b"出現(xiàn)1次。任何數(shù)字后沒(méi)有跟字母的數(shù)據(jù)流(例如在數(shù)據(jù)流 808中"3"),表示"空"出現(xiàn)的次數(shù)。
盡管未示出,但地址718也可被結(jié)合在表格802-809中。雖然在分別的行中顯示數(shù)據(jù)流802-809,但這僅僅是為了舉例。通過(guò)結(jié)合諸如812的結(jié)束標(biāo)志, 可將數(shù)據(jù)流802-809保存在一個(gè)連續(xù)流中。
擴(kuò)展最簡(jiǎn)化的例子800,附錄A示出表示表格700的壓縮表達(dá)式的更詳細(xì) 的數(shù)據(jù)流列表。在這個(gè)例子中,壓縮方案包括計(jì)算每對(duì)符號(hào)/長(zhǎng)度出現(xiàn)次數(shù)的 總數(shù),然后選取前255對(duì)用于一字節(jié)編碼。在這種情況下,這產(chǎn)生大約95% 的間隔覆蓋。其他的都使用最后一個(gè)字節(jié)值被編碼作為"換碼","換碼"后跟隨 更直接的信息編碼(導(dǎo)致間隔3字節(jié))??梢缘臅r(shí)候,將大量換碼間隔編碼為 兩個(gè)1字節(jié)間隔以節(jié)省空間。跳轉(zhuǎn)信息(在下面描述)在間隔數(shù)據(jù)流中也被編 碼為換碼數(shù)據(jù)。
接下來(lái)繼續(xù)解釋壓縮表800的具體的示例性實(shí)施。為了幫助優(yōu)化(使得數(shù) 據(jù)庫(kù)方案的字母表更獨(dú)立)在數(shù)據(jù)庫(kù)中發(fā)現(xiàn)的符號(hào),詞匯表被編碼作為單字節(jié) 碼。由一小組實(shí)體建立間隔數(shù)據(jù)流。數(shù)據(jù)流是這種實(shí)體的序列。 一字節(jié)間隔是 目前為止最常用的實(shí)體,而其余的使用換碼值加上內(nèi)容來(lái)編碼。255個(gè)最常用 的符號(hào)和長(zhǎng)度的組合/對(duì)被編碼為一字節(jié)碼。數(shù)據(jù)庫(kù)表頭包括將這些值解碼為 符號(hào)和長(zhǎng)度的表。當(dāng)可以用兩個(gè)1字節(jié)碼代替直接間隔時(shí),將這樣做以節(jié)省換 碼的空間??墒褂脫Q碼,符號(hào)碼和長(zhǎng)度以3字節(jié)直接編碼低頻率間隔。因此最 大間隔長(zhǎng)度是255。為了編碼較長(zhǎng)間隔,增加了擴(kuò)展(extension)。
在讀取直接間隔之后,必須檢查數(shù)據(jù)流以看看其后是否跟隨擴(kuò)展和被該擴(kuò) 展所修改。在下面的例子中,F(xiàn)F是換碼信息,IO是符號(hào)碼,而6是該間隔長(zhǎng) 度。FF-10-06表示INTERVAL codel6, chart, length 6。
一個(gè)直接間隔后面可以跟隨擴(kuò)展碼,該擴(kuò)展碼使用換碼、擴(kuò)展碼和長(zhǎng)度被 編碼為另一3字節(jié)。該長(zhǎng)度變成了前一間隔的較高位字節(jié)。由于這個(gè)擴(kuò)展,最 大間隔長(zhǎng)度變成65535。在下面的例子中,F(xiàn)F是換碼信息,0C是用于"擴(kuò)展" 的符號(hào)碼和33是被加入到前一間隔的長(zhǎng)度的高位字節(jié)長(zhǎng)度值。 FF-10-06INTERVAL codel6, chart, length 6 FF陽(yáng)0C陽(yáng)33EXTEND high byte length 33 , actual length 13062 。
使用換碼、跳轉(zhuǎn)碼、2字節(jié)相關(guān)的單詞位置和2字節(jié)相關(guān)的流位置,將跳 轉(zhuǎn)信息編碼為6字節(jié)。通過(guò)加上來(lái)自發(fā)現(xiàn)跳轉(zhuǎn)信息處的當(dāng)前的絕對(duì)值,使相對(duì) 值變成絕對(duì)值。在下面例子中,F(xiàn)F是換碼信息,OB是用于"跳轉(zhuǎn)"的符號(hào)碼, 00是用于位置的高位字節(jié),05是用于位置的低位字節(jié),OO是用于字節(jié)的高位字節(jié)和09是用于字節(jié)的低位字節(jié)。
FF-OB-00-05-00-09 JUMP5 relative positions, 9relative
bytes 。
使用換碼和結(jié)束碼將結(jié)束信息編碼為2字節(jié)。在下面例子中,F(xiàn)F是換碼 信息和0D是用于"結(jié)束"的符號(hào)碼。 FF - 0D END
跳轉(zhuǎn)碼
在數(shù)據(jù)流里的信息是不同長(zhǎng)度的"相對(duì)"間隔,因?yàn)樵诿總€(gè)間隔里找到的 信息是字符加長(zhǎng)度,而不是絕對(duì)位置。因此,在一個(gè)例子中,從一個(gè)給定間隔 開始,不可能知道從數(shù)據(jù)流中哪里查找單詞位置(即,表格行)或找到某一間 隔。因此,跳過(guò)向前的唯一方法是讀取并解釋數(shù)據(jù)流中的每個(gè)間隔,直到發(fā)現(xiàn) 包含靶地址的間隔。
因此,為了加快這個(gè)過(guò)程,壓縮表800還可包括許多"跳轉(zhuǎn)碼"。如下面 所論述的,這有助于加速對(duì)表格800的檢索。跳轉(zhuǎn)碼幫助表明由數(shù)據(jù)流所表示 的單詞位置(二表格行)和它們?cè)跀?shù)據(jù)流里的實(shí)際位置(=地址)之間的關(guān)系。 例如,跳轉(zhuǎn)碼可表示在數(shù)據(jù)流里必須跳過(guò)多少字節(jié)以便提高給定的單詞位置 數(shù)。作為一個(gè)特定的例子,在數(shù)據(jù)流802里立即出現(xiàn)的跳轉(zhuǎn)碼可表示為了跳過(guò) 開頭的4個(gè)單詞位置(即,在表格列里向下前進(jìn)的4個(gè)字母),需要改進(jìn)給定 的字節(jié)數(shù)。例如,這將有助于將指針從列702中的第一個(gè)"c"之前移動(dòng)到該 列中最后一個(gè)"W"之后,以便將該指針設(shè)置到第一個(gè)"S"。
跳轉(zhuǎn)信息可包括,例如,像這樣的信息在列表里向前走500個(gè)單詞位置, 走到數(shù)據(jù)流里這一特定位置(地址)。在一個(gè)例子里,跳轉(zhuǎn)碼位于在數(shù)據(jù)流里 某些已知位置并且實(shí)際上指向彼此,產(chǎn)生跳轉(zhuǎn)信息階梯。因?yàn)樘D(zhuǎn)信息在它能 被使用之前已經(jīng)存在于數(shù)據(jù)流中,它可在任何時(shí)間使用,直到遇到下一個(gè)跳轉(zhuǎn) 碼。因此,當(dāng)向前移動(dòng)時(shí),可以在任何時(shí)候使用已知信息。 一旦靶單詞位置到 達(dá)或者超過(guò)該已知位置,就不再需要仔細(xì)査看任何間隔。
在一個(gè)特定實(shí)施中,可按大約每100個(gè)間隔放置跳轉(zhuǎn)碼。根據(jù)間隔的實(shí)際 長(zhǎng)度,跳轉(zhuǎn)碼可以覆蓋不同的單詞位置的跨度。這有助于跳、過(guò)間隔,而不是在 絕對(duì)列表中跳轉(zhuǎn)某一距離。檢索
圖6顯示了本公開內(nèi)容的另一個(gè)方法方面的例子。廣義地,程序600演示 了一個(gè)通過(guò)表格118 (沒(méi)有壓縮的表格700或壓縮的表格800)進(jìn)行加速檢索 的新過(guò)程。因?yàn)樵撨^(guò)程使用游程長(zhǎng)度間隔來(lái)跳過(guò)那些已知不匹配的單詞,所以 對(duì)單詞的檢索被加速。只要游程長(zhǎng)度間隔不匹配,該間隔的整個(gè)長(zhǎng)度就可以被 跳過(guò)。
為了易于解釋,但并非旨在任何限定,在圖1的系統(tǒng)100,圖7-8的表格 700和800的特定上下文中討論程序600。在步驟602,管理器106接收輸入 單詞,或者"檢索單詞"。剩下的操作是在表格118中檢索該檢索單詞。如下 面所論述的,這些操作也可被執(zhí)行用來(lái)檢索多次出現(xiàn)的檢索單詞的一部分。接 下來(lái)的例子是以"churches"為檢索單詞。
許多理由可以導(dǎo)致步驟602發(fā)生。在一個(gè)例子中,應(yīng)用程序120之一是用 戶輸入消歧程序,例如前面提到的19@技術(shù)。繼續(xù)使用這個(gè)例子,當(dāng)用戶輸入 具有固有歧義的鍵盤組合,例如鍵盤數(shù)字"2-8"時(shí),接收到檢索單詞(602)。 由于字母"A-B-C"映射數(shù)字"2",而"T-U-V"映射鍵盤數(shù)字"8",這一用 戶輸入的鍵盤組合可表示下列組合中的任一個(gè)AT、 AU、 AB、 BT、 BU、 BV、 CT、 CU或CV。在這個(gè)例子中,T9應(yīng)用程序120將這些單詞單獨(dú)地傳送給另 一個(gè)應(yīng)用程序120(即,過(guò)程600)。當(dāng)每個(gè)這樣的單詞被接收時(shí),這就組成了 在這個(gè)例子中的步驟602。T9應(yīng)用程序通過(guò)程序600合并及處理匹配的單詞輸 出,并將他們作為一組用戶想要的可能候選者輸出給用戶。
當(dāng)然,除上述例子之外,也可有其它調(diào)用過(guò)程600的情形。例如,過(guò)程 600可以被用作拼寫檢査。
在步驟602之后,步驟603配置若干虛擬指針(未示出),其基本上包括 光標(biāo)、占位符、或用于保持追蹤經(jīng)由表格700的每列前進(jìn)的其它工具。在這例 子中,702-709每列都有一個(gè)指針。每個(gè)指針用于追蹤當(dāng)前表中對(duì)于那一列的 行。步驟603設(shè)置每個(gè)指針指向第一個(gè)行721的對(duì)應(yīng)字母。在表格700的例子 中,指針單獨(dú)地指向"chimney"的字母。
在設(shè)置步驟603之后,歩驟604考慮"第一"指針,將其作為考慮中的"當(dāng) 前"指針。在簡(jiǎn)單的情況下,第一指針是最左邊的指針,并通過(guò)每次向右移動(dòng)一個(gè)指針而比較隨后的字母(609)。和簡(jiǎn)單的情況相比,步驟604可仔細(xì)地選 擇指針前進(jìn)的順序來(lái)優(yōu)化檢索速度。這里,步驟603必須預(yù)先査看過(guò)表格元數(shù) 據(jù),這在前面結(jié)合歩驟512進(jìn)行了說(shuō)明。尤其是,步驟603考慮檢索單詞的長(zhǎng) 度(也就是所占據(jù)的列數(shù)),并且査看表格元數(shù)據(jù)來(lái)査找在該檢索單詞的每列 中中出現(xiàn)的間隔數(shù)。然后歩驟604按照從最小間隔的列移動(dòng)到最大間隔的列建 立指針前進(jìn)。
下面的例子使用簡(jiǎn)單的情況,其中指針從左至右移動(dòng)前進(jìn)。然后歩驟606 詢問(wèn)在第一指針的字母(也就是,第一個(gè)字母)是否匹配檢索單詞"churches" 的第一個(gè)字母。在這個(gè)情況下,回答是,所以步驟606前進(jìn)到步驟608。步驟 608詢問(wèn)歩驟606是否己經(jīng)循環(huán)得到全部指針的字母匹配檢索單詞。
在這個(gè)當(dāng)前例子中,步驟608的回答是"否",因?yàn)椴襟E606僅檢査了第 一個(gè)指針的字母。歩驟608采取特定的手段來(lái)保證檢索單詞精確匹配來(lái)自表格 的單詞。例如,防止"chimney"匹配"chimneys"。也就是說(shuō),即使全部指針 已經(jīng)顯示有匹配之后,步驟608也必須保持運(yùn)行以另外檢驗(yàn)在表格當(dāng)前行(以 前的字母匹配檢索單詞)中的下一個(gè)字母是空白,空的,或空。
在目前例子中,步驟608回答"否"并且繼續(xù)進(jìn)行步驟609。步驟609推 進(jìn)到第二個(gè)指針,使它為"當(dāng)前的"指針。如上所述,可使用除了從左到右以 外的多種其它不同的前進(jìn)。一個(gè)例子是其中指針前進(jìn)從具有最小間隔的列移動(dòng) 到具有最大間隔的列。
作為步驟609的一部分,現(xiàn)在當(dāng)前的指針必須被移動(dòng)到表格的當(dāng)前行。作 為替換,在較高處理成本下,當(dāng)進(jìn)行步驟604, 614,和/或617中適當(dāng)?shù)囊粋€(gè) 時(shí),全部指針可被移到當(dāng)前行。為了在步驟609中將當(dāng)前指針移動(dòng)到表格的當(dāng) 前行,指針被向下推進(jìn),直到其達(dá)到被使用的指針行在步驟606最后的回答 "是"。在一個(gè)例子中,步驟609包括逐行推進(jìn)當(dāng)前指針,適當(dāng)時(shí),跳過(guò)間隔。
在根據(jù)表格800或附錄A被壓縮了的表格700的例子中,可使用跳轉(zhuǎn)碼 來(lái)加速當(dāng)前指針在表格中向下的移動(dòng)?;旧希?dāng)前指針表示當(dāng)前的單詞位置 (=表格行);通過(guò)來(lái)自步驟606的上次最后運(yùn)行的指針位置可知目的表格行。 當(dāng)前的光標(biāo)可以通過(guò)相對(duì)跳轉(zhuǎn)被推進(jìn)而不是在表格800中逐行的推進(jìn),其中每 個(gè)跳轉(zhuǎn)碼表示在表格800中的相對(duì)的跳轉(zhuǎn)和得到的地址。因此,如果光標(biāo)必須 被推進(jìn)總共223行,這一操作可以使用兩個(gè)100步的跳轉(zhuǎn)碼后跟由間隔和/或單行的23個(gè)手工增量的組合。
在步驟609推進(jìn)到下一指針之后,步驟606詢問(wèn)該指針的字母是否匹配檢 索單詞的相應(yīng)字母。在當(dāng)前的例子中,回答是"是",因?yàn)闄z索單詞的第二字 母和當(dāng)前行的第二字母兩個(gè)都是"h"。過(guò)程600按上述繼續(xù)直到全部指針的字 母匹配該檢索單詞(導(dǎo)向歩驟610)或指針的字母不匹配該檢索單詞(導(dǎo)向步 驟607)。
在一個(gè)可替換的實(shí)施方式中,例程600還可被配置成找到局部匹配。在這 種情況下,調(diào)用例程600的應(yīng)用程序提供最小的匹配字符數(shù),例如開頭的3 個(gè)字符。然后,除了指針在檢索單詞中從左至右前進(jìn)移動(dòng)(步驟609),例程按 上述來(lái)執(zhí)行,并且當(dāng)指定的字符最小限度顯示匹配時(shí),滿足用于在檢索單詞和 表格單詞之間匹配的標(biāo)準(zhǔn)(歩驟608)。如下面所討論,在這個(gè)實(shí)施方式中繼 續(xù)例程600直到全部匹配單詞在表格被找到(618)或沒(méi)有這樣的單詞被找到 (612)。
當(dāng)歩驟606發(fā)現(xiàn)指針的字母不匹配檢索單詞時(shí),則執(zhí)行歩驟607。在當(dāng)前 的例子中,當(dāng)?shù)谌齻€(gè)指針的字母("i")與檢索單詞的第三字母("u")相比時(shí), 出現(xiàn)這個(gè)條件。在步驟607,管理器106詢問(wèn)全部的表格行是否已經(jīng)通過(guò)步驟 606被評(píng)估。如果是,這表示例程600沒(méi)有在表格700中發(fā)現(xiàn)檢索單詞的任何 匹配。
作為替換,表格可包括標(biāo)識(shí)該表格中定位了某些長(zhǎng)度的單詞的最后一行的 元數(shù)據(jù)。如上所述,表格元數(shù)據(jù)可包括一個(gè)列表,該列表的行包含最后的單字 母單詞,最后的兩字母單詞,等等。在這個(gè)實(shí)施方式中,步驟607可采取捷徑。 也就是說(shuō),如果表格118的剩余行不包括任何與檢索單詞同樣字母數(shù)的單詞, 那么步驟607可以更早一些回答"是"而不用詢問(wèn)是否全部行已經(jīng)通過(guò)步驟 606被評(píng)估。
在任何情況下,當(dāng)步驟607回答"是",管理器106提供表示沒(méi)有找到檢 索單詞的輸出(步驟612)。這個(gè)輸出可以是本文輸出、二進(jìn)制或其它機(jī)器可 讀的信號(hào)等等。管理器106將這個(gè)輸出提供給起始檢索操作600的應(yīng)用程序 120。
相反,當(dāng)步驟607發(fā)現(xiàn)不是所有行都已經(jīng)被處理時(shí),那么例程600繼續(xù)進(jìn) 行步驟614。也就是,步驟614推進(jìn)到在出現(xiàn)未匹配的指針列中出現(xiàn)的下一個(gè)間隔。在當(dāng)前的例子中,步驟614意識(shí)到,因?yàn)榈谌羔樀淖帜覆黄ヅ錂z索單
詞的第三字母,在檢索單詞和穿過(guò)間隔718的行中的單詞之間執(zhí)行更進(jìn)一步比 較是無(wú)效的。所有這些單詞包括"i"作為第三個(gè)字母,然而檢索單詞"church" 的第三個(gè)字母是"u"。
為了跳過(guò)下一個(gè)間隔,步驟614在表格中通過(guò)在當(dāng)前間隔中剩余的行數(shù)來(lái) 向下推進(jìn)。也就是說(shuō),當(dāng)前指針(在步驟606中出現(xiàn)未匹配的列)被向前移動(dòng) 直到遇到下一個(gè)間隔。在當(dāng)前的例子中,在間隔718中有4行(在數(shù)據(jù)流804 中由碼"4i"表示),因此步驟614將當(dāng)前指針向前移動(dòng)4行。在向前跳過(guò)(614) 之后,步驟604重置到第一個(gè)指針,使得其成為考慮的"當(dāng)前"指針,并且將 這個(gè)指針移動(dòng)到當(dāng)前行。作為替換,步驟604可保持在步驟606中發(fā)生未匹配 列的指針作為當(dāng)前指針,并移動(dòng)這個(gè)指針到當(dāng)前行。作為再一種選擇,步驟 604可設(shè)置當(dāng)前指針到具有最小間隔的列(如上面所確定),并移動(dòng)這個(gè)指針 到當(dāng)前行。在歩驟604之后,步驟606詢問(wèn)是否第一指針的字母(在這個(gè)例子 中)匹配檢索單詞"churches"的第一個(gè)字母。在這種情況下,回答是否, 因?yàn)橹羔樀牡谝粋€(gè)字母現(xiàn)在是"Sherman"的"S",然而檢索單詞"church" 的第一個(gè)字母是"c"。因此,步驟606推進(jìn)到歩驟607來(lái)proceed下一個(gè)間隔。
和上面描述的方案相反,在并非所有指針的字母都匹配過(guò)檢索單詞(在 608中的"否")時(shí), 一種不同的情形是的確出現(xiàn)匹配(在60S中的"是")。 這表示已經(jīng)在表格700中找到檢索單詞。因此,管理器106提供表示這個(gè)事實(shí) 的輸出(步驟610),例如本文輸出、二進(jìn)制或其它機(jī)器可讀的信號(hào)等等。管 理器106將這個(gè)輸出提供給起始檢索操作600的應(yīng)用程序120。在步驟610之 后,步驟616詢問(wèn)是否完成檢索。例如,如果實(shí)施程序600來(lái)檢索單個(gè)單詞匹 配,那么歩驟612的回答是"是",并且如618所顯示的那樣結(jié)束該例程。同 樣地,如果一個(gè)間隔接著一個(gè)間隔的前進(jìn)(606, 608, 614)已經(jīng)達(dá)到表格118 的結(jié)尾,步驟616的回答是"是"。
另一方面,在可選擇的實(shí)施方式中,程序600被用來(lái)檢索在表格中所有匹 配檢索單詞的單詞(或執(zhí)行限于匹配單詞數(shù)、或檢索時(shí)間或不限于只有一個(gè)檢 索匹配的其它參數(shù)的檢索),并且還沒(méi)有到達(dá)表格118的末端,那么步驟616 繼續(xù)進(jìn)行步驟617,其推進(jìn)到表格的下一行。此后,例程600轉(zhuǎn)到上面論述過(guò) 的步驟604。因此,例程600按照上述運(yùn)行,直到最終在表格中找到確切匹配的單詞或
者沒(méi)有找到該單詞,或找到需要部分匹配的檢索單詞的一些而非全部(612), 或找到所有需要部分匹配的檢索單詞。在程序600上擴(kuò)展,附錄B示出如何 實(shí)施附錄A的壓縮數(shù)據(jù)流的檢索(根據(jù)600)以檢索單詞"churches"的更詳 細(xì)的列表。
其它實(shí)施方式
雖然上述公開顯示了一些說(shuō)明性的實(shí)施方式,但在沒(méi)有脫離如所附權(quán)利要 求所定義的本發(fā)明范圍內(nèi),可以進(jìn)行各種變化和修改,這對(duì)本領(lǐng)域技術(shù)人員是 顯而易見的。因此,公開的實(shí)施方式代表被本發(fā)明廣泛考慮的主題,而本發(fā)明 的范圍完全可以包括對(duì)本領(lǐng)域技術(shù)人員顯而易見的其它實(shí)施方式,而且本發(fā)明 的范圍不受權(quán)利要求以外的任何內(nèi)容的限定。
與上述實(shí)施方式的元件等效,也就是說(shuō)已知或以后為本領(lǐng)域普通技術(shù)人員 所知的所有結(jié)構(gòu)和功能,明確地在這里作為參考引入本文,并且旨在包含在本 發(fā)明的權(quán)利要求中。此外,設(shè)備或方法不需要提出本發(fā)明企圖解決的每個(gè)及所 有問(wèn)題,因?yàn)樗鼘ㄔ诒景l(fā)明的權(quán)利要求中。此外,不管本發(fā)明內(nèi)容中的元 件、組件、或方法步驟是否在權(quán)利要求中被明確地講述,該元件、組件、或方 法步驟并未意圖奉獻(xiàn)給公眾。此處沒(méi)有權(quán)利要求要素要依據(jù)35 USC 112第6 段的條款來(lái)解釋,除非使用"用于......的裝置"或在方法權(quán)利要求的情況下,
使用措詞"用于......的步驟"來(lái)明確敘述該要素"。
此外,雖然該發(fā)明的元件可以被描述或在權(quán)利要求中是單數(shù),但除非明確 地表態(tài),否則涉及到單數(shù)元件并不旨在表示"一個(gè)并只有一個(gè)",而應(yīng)表示" 一個(gè)或多個(gè)"。另外,普通技術(shù)人員將理解,為了解釋和請(qǐng)求保護(hù)的目的,必 須以一些具體順序提出操作程序,但是本發(fā)明預(yù)計(jì)了除這樣的特定順序以外的 多種的變化。
此外,相關(guān)領(lǐng)域的普通技術(shù)人員將理解使用多種不同的工藝和技術(shù)可描述 信息和信號(hào)。例如,這里所涉及到任何數(shù)據(jù)、指令、信息、信號(hào)、比特、符號(hào)、 以及芯片可通過(guò)電壓、電流、電磁波、磁場(chǎng)或粒子、光場(chǎng)或粒子、其它物品或 上述的組合來(lái)表示。
此外,本領(lǐng)域技術(shù)人員可以理解此處所述的任何說(shuō)明性的邏輯塊、模塊、電路和處理歩驟可作為電子硬件、計(jì)算機(jī)軟件、或兩者的組合來(lái)實(shí)現(xiàn)。為清楚 地圖示這一硬件和軟件的互換性,多種說(shuō)明性的組件、塊、模塊、電路和歩驟 就其功能性而言功能性已經(jīng)在上面總體說(shuō)明。這樣的功能是否作為硬件或軟件 實(shí)現(xiàn)取決于施加于整個(gè)系統(tǒng)的特定應(yīng)用和設(shè)計(jì)限制。對(duì)于每個(gè)特定應(yīng)用,本領(lǐng) 域技術(shù)人員可以多種方式實(shí)現(xiàn)所述的功能,但是這樣的實(shí)現(xiàn)結(jié)果不應(yīng)該被解釋 為脫離本發(fā)明的范圍。
提供本公開內(nèi)容的實(shí)施方式的前述說(shuō)明以使得本領(lǐng)域技術(shù)人員制造和使 用本發(fā)明。對(duì)這些實(shí)施方式的多種修改對(duì)于本領(lǐng)域技術(shù)人員是顯而易見的,并 且本文定義的普通原則可被用于其它實(shí)施方式而不脫離發(fā)明的精神和范圍。因 此,本發(fā)明不意圖被限于此處所示的實(shí)施方式,而是與符合在此公開的原理和 新特征的最廣泛范圍相一致。
權(quán)利要求
1、一種存儲(chǔ)用來(lái)幫助加快檢索的機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)方法,包括如下操作建立具有行和列的表格;在該表格中,存儲(chǔ)包括大量單詞的機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù),每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè)間隔;該存儲(chǔ)操作包括在該表格中建立單詞的相對(duì)位置的動(dòng)作,這是根據(jù)下述之一最大化間隔的長(zhǎng)度,通過(guò)游程長(zhǎng)度編碼優(yōu)化對(duì)該列的壓縮效率。
2、 如權(quán)利要求1所述方法,所述操作進(jìn)一步地包括對(duì)于每一列,通過(guò)形成包括該列中的間隔的游程編碼來(lái)壓縮所述表格。
3、 如權(quán)利要求2所述方法,所述操作進(jìn)一步地包括使用包括跳轉(zhuǎn)碼的元數(shù)據(jù)來(lái)補(bǔ)充該表格,每個(gè)跳轉(zhuǎn)碼在該數(shù)據(jù)流中具有第 一位置,并且指定表格行的特定數(shù)量和在該數(shù)據(jù)流中的第二位置,其中在數(shù)據(jù) 流中位于第一和第二位置之間的數(shù)據(jù)表示表格行的特定數(shù)量的跨度。
4、 如權(quán)利要求1所述方法,所述操作進(jìn)一步地包括用元數(shù)據(jù)補(bǔ)充所述表格,所述元數(shù)據(jù)標(biāo)識(shí)所述表格中在其下的行中未出現(xiàn) 不同字母長(zhǎng)度的單詞的行。
5、 如權(quán)利要求1所述的方法,其中所述在表格中建立單詞的相對(duì)位置的 動(dòng)作包括從實(shí)質(zhì)上是空的表格開始,通過(guò)執(zhí)行以下操作,從源列表中添加單詞到所 述表格中,所述操作包括確定源列表中的每個(gè)單詞和所述表格中的最后一個(gè)單詞之間的相似度,并 且將源列表中具有最大相似度的單詞加到表格的最后一個(gè)單詞的后面;對(duì)源列表中的每個(gè)單詞重復(fù)所述確定操作。
6、 如權(quán)利要求1所述方法,其中所述字母包括字母字符、數(shù)字、符號(hào)和標(biāo)點(diǎn)符號(hào)。
7、 一種經(jīng)以下過(guò)程制造的計(jì)算機(jī)可讀的數(shù)據(jù)產(chǎn)品 建立具有行和列的表格;在該表格中存儲(chǔ)包括大量單詞的機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù),每個(gè)單詞存放在不 同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè)間隔;該存儲(chǔ)操作包括在該表格中建立單詞的相對(duì)位置的動(dòng)作,這是根據(jù)下述之一最大化間隔的長(zhǎng)度,通過(guò)游程長(zhǎng)度編碼優(yōu)化對(duì)該列的壓縮效率。
8、 一件制品,包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)實(shí)際包含幫助加快檢索的 機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù);該機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)包括-大量的單詞,每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行 的不同列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè)間隔;其中在該表格中的單詞根據(jù)最大化間隔的長(zhǎng)度和通過(guò)游程長(zhǎng)度編碼優(yōu)化對(duì)該列的壓縮效率 兩者之一而相互定位。
9、 一種用于檢索機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)本體的方法,所述數(shù)字?jǐn)?shù)據(jù)包括大 量的單詞,每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同 列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè)間隔,所述方法包括接收給定的檢索單詞;相對(duì)于表格中的指定單詞本體評(píng)估該檢索單詞,其包括下述操作對(duì)于檢索單詞正在比較的表格中的每個(gè)靶單詞,比較該檢索單詞的字母與 該表格中的靶單詞的對(duì)應(yīng)列,每次一個(gè)字母-,如果第一指定數(shù)量的字母不匹配,向前跳過(guò)一些行到使得出現(xiàn)不匹配的列在該行開始下一個(gè)間隔的行,并且重新開始該比較操作;如果第二指定數(shù)量的字母匹配,提供表示匹配成功的輸出; 當(dāng)評(píng)估檢索單詞與表格中指定的單詞本體而沒(méi)有找到匹配時(shí),提供表示匹配失敗的輸出。
10、 如權(quán)利要求9所述方法,其中第一指定數(shù)量的字母包括所述檢索單詞中所有的字母以及所述檢索單詞 中指定數(shù)量的字母中的一種;第二指定數(shù)量的字母包括所述檢索單詞中的任意字母以及所述檢索單詞 中指定數(shù)量的字母中的一種。
11、 如權(quán)利要求9所述方法,其中 所述比較操作包括以下操作對(duì)于所述檢索單詞的每個(gè)字母建立指針,每個(gè)指針標(biāo)識(shí)在表格第一行中相 應(yīng)的列;比較檢索單詞的字母與相應(yīng)指針?biāo)傅淖帜?;所述跳過(guò)操作包括使每個(gè)指針推進(jìn)到表格中的這樣的一行,該行使得出現(xiàn) 不匹配的列在該行開始下一個(gè)間隔。
12、 如權(quán)利要求11所述方法,所述操作進(jìn)一步包括計(jì)算每一列中存在多少間隔,并且按照其中出現(xiàn)的間 隔確定列由低到高的順序;其中按照所述順序從一個(gè)指針到另一個(gè)指針進(jìn)行所述比較檢索單詞的字 母與相應(yīng)指針?biāo)傅淖帜傅牟僮鳌?br>
13、 如權(quán)利要求ll所述方法,其中所述表格被壓縮成數(shù)據(jù)流,所述數(shù)據(jù)流對(duì)于每一列包括該列中的間隔的游 程編碼;所述表格進(jìn)一步地包括含有跳轉(zhuǎn)碼的元數(shù)據(jù),每個(gè)跳轉(zhuǎn)碼具有在所述數(shù)據(jù) 流中的第一位置,并指定表格行的特定數(shù)量和在該數(shù)據(jù)流中的第二位置,其中 在數(shù)據(jù)流中位于第一和第二位置之間的數(shù)據(jù)表示所述表格行的特定數(shù)量的跨 度;其中所述跳過(guò)操作包括對(duì)于每個(gè)指針,利用跳轉(zhuǎn)碼將指針向前跳過(guò)已知數(shù)量的表格行,并且隨后移動(dòng)任何另外需要的附加間隔數(shù)來(lái)到達(dá)一個(gè)位置,所 述位置對(duì)應(yīng)于表格中所述下一個(gè)間隔開始的單詞。
14、 如權(quán)利要求9所述方法,其中所述表格進(jìn)一步地包括元數(shù)據(jù),所述元數(shù)據(jù)標(biāo)識(shí)所述表格中在其下的行中 未出現(xiàn)不同字母長(zhǎng)度的單詞的行。所述操作包括當(dāng)在一行下面的行中不再有與檢索單詞的字母長(zhǎng)度相同的 單詞出現(xiàn)時(shí),結(jié)束所述比較操作。
15、 一種實(shí)際包括機(jī)器可讀指令程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該程序可被 數(shù)字處理裝置執(zhí)行來(lái)進(jìn)行機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)本體的操作,該數(shù)字?jǐn)?shù)據(jù)包括大 量存放在具有行和列的表格中的單詞,每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè) 間隔,所述操作包括接收給定的檢索單詞;相對(duì)于表格中指定的單詞本體評(píng)估該檢索單詞,其包括下述操作 對(duì)于檢索單詞正在進(jìn)行比較的表格中的每個(gè)耙單詞,比較檢索單詞的字母與表格中靶單詞的對(duì)應(yīng)列,每次一個(gè)字母;如果第一指定數(shù)量的字母不匹配,向前跳過(guò)一些行到使得出現(xiàn)不匹配的列在該行開始下一個(gè)間隔的行,并且重新開始該比較操作;如果第二指定數(shù)量的字母匹配,提供表示匹配成功的輸出; 當(dāng)評(píng)估檢索單詞與表格中指定的單詞本體而沒(méi)有找到匹配時(shí),提供表示匹配失敗的輸出。
16、 用于進(jìn)行機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)本體的檢索操作的多個(gè)互連電學(xué)導(dǎo)電元 件的電路,所述數(shù)字?jǐn)?shù)據(jù)包括大量存放在具有行和列的表格中的單詞,每個(gè)單 詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同列,其中在一列中 每個(gè)相鄰的相同字母串形成一個(gè)間隔,所述操作包括接收給定的檢索單詞;相對(duì)于表格中指定的單詞本體評(píng)估該檢索單詞,其包括下述操作 對(duì)于用于正在進(jìn)行比較檢索單詞的表格中的每個(gè)靶單詞,比較檢索單詞的字母與表格中靶單詞的對(duì)應(yīng)列,每次一個(gè)字母;如果第一指定數(shù)量的字母不匹配,向前跳過(guò)一些行到使得出現(xiàn)不匹配的列在該行開始下一個(gè)間隔的行,并且重新開始該比較操作;如果第二指定數(shù)量的字母匹配,提供表示匹配成功的輸出; 當(dāng)評(píng)估檢索單詞與表格中指定的單詞本體而沒(méi)有找到匹配時(shí),提供表示匹配失敗的輸出。
17、 一種數(shù)據(jù)處理設(shè)備,包括機(jī)器可讀的數(shù)字?jǐn)?shù)據(jù)實(shí)體,所述數(shù)字?jǐn)?shù)據(jù)包括大量存放在具有行和列的表格中的單詞,每個(gè)單詞存放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不 同列,其中在一列中每個(gè)相鄰的相同字母串形成一個(gè)間隔;管理器,編程為通過(guò)執(zhí)行下述操作檢索表格,所述操作包括接收給定的檢索單詞;相對(duì)于表格中指定的單詞本體評(píng)估該檢索單詞,其包括下述操作 對(duì)于用于正在進(jìn)行比較檢索單詞的表格中的每個(gè)靶單詞,比較檢索單詞的 字母與表格中靶單詞的對(duì)應(yīng)列,每次一個(gè)字母;如果第一指定數(shù)量的字母不匹配,向前跳過(guò)一些行到出現(xiàn)不匹配的列中的下一個(gè)間隔,并且重新開始該比較操作;如果第二指定數(shù)量的字母匹配,提供表示匹配成功的輸出; 當(dāng)評(píng)估檢索單詞與表格中指定的單詞本體而沒(méi)有找到匹配時(shí),提供表示匹配失敗的輸出。
18、 一種數(shù)據(jù)處理設(shè)備,包括第一裝置,用來(lái)存儲(chǔ)大量存放在具有行和列的表格中的單詞,每個(gè)單詞存 放在不同的行并且該單詞的每個(gè)字母占據(jù)那一行的不同列,其中在一列中每個(gè) 相鄰的相同字母串形成一個(gè)間隔;第二裝置,用來(lái)通過(guò)執(zhí)行下述操作檢索第一裝置,所述操作包括接收給定的檢索單詞;相對(duì)于表格中指定的單詞本體評(píng)估該檢索單詞,其包括下述操作 對(duì)于用于正在進(jìn)行比較檢索單詞的表格中的每個(gè)靶單詞,比較檢索單詞的字母與表格中靶單詞的對(duì)應(yīng)列,每次一個(gè)字母;如果第一指定數(shù)量的字母不匹配,向前跳過(guò)一些行到出現(xiàn)不匹配的列中的下一個(gè)間隔,并且重新開始該比較操作;如果第二指定數(shù)量的字母匹配,提供表示匹配成功的輸出; 當(dāng)評(píng)估檢索單詞與表格中指定的單詞本體而沒(méi)有找到匹配時(shí),提供表示匹配失敗的輸出。
全文摘要
一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括布置機(jī)器可讀數(shù)字?jǐn)?shù)據(jù)來(lái)幫助加快檢索。數(shù)據(jù)包括大量的單詞存放在一個(gè)有行和列的表格中,每個(gè)單詞存放在不同的行并且每個(gè)單詞的每個(gè)字母占據(jù)那一行的不同列。在一列中每個(gè)連續(xù)出現(xiàn)的相同字母串形成一個(gè)間隔,單詞被相互之間定位來(lái)最大化間隔的長(zhǎng)度,和/或通過(guò)游程長(zhǎng)度編碼最優(yōu)化壓縮表格列的效率。
文檔編號(hào)G06F7/00GK101432686SQ200780015700
公開日2009年5月13日 申請(qǐng)日期2007年4月19日 優(yōu)先權(quán)日2006年4月19日
發(fā)明者厄蘭·昂魯, 戴維·喬恩·凱 申請(qǐng)人:泰吉克通訊股份有限公司