專利名稱:搜索數(shù)據(jù)庫中字符串的方法和裝置的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)搜索領域,特別是指一種搜索數(shù)據(jù)庫中字符串的方法和裝置。
背景技術:
電話本搜索速度很大程度影響用戶搜索時的體驗,如果電話本搜索返回結果慢,用戶會感覺手機難用,性能低下。目前電話本搜索算法為遍歷、二分查找等,大多數(shù)都是基于字符串進行比較,來判斷輸入字串是否命中聯(lián)系人。由于基于字符串進行比較,當要搜索的數(shù)據(jù)量較大,并且CPU速度較慢時,可能會耗時較久,影響用戶體驗。
發(fā)明內(nèi)容
本發(fā)明要解決的技術問題是提供一種在搜索數(shù)據(jù)庫中字符串的方法和裝置,能夠提高搜索速度。為解決上述技術問題,本發(fā)明的實施例提供技術方案如下一方面,提供一種搜索數(shù)據(jù)庫中字符串的方法,所述方法包括步驟1,獲取用戶在預定輸入法模式下輸入的第一編碼串;步驟2,按照編碼轉換方法,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);步驟3,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串按照所述編碼轉換方法對應的二進制數(shù);步驟4,查找搜索出的所述二進制數(shù)對應的字符串;步驟5,輸出查找出的所述字符串。所述步驟3之前,所述方法還包括按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼;使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成第二編碼串;將所述第二編碼串轉化為所述預定位數(shù)的第二二進制數(shù);所述步驟3具體為搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。所述步驟2包括步驟21,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù);步驟22,將每個所述自然數(shù)轉化為第三二進制數(shù);步驟23,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù);
步驟24,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ;步驟25,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述第
一二進制數(shù)。所述步驟23為根據(jù)以下公式計算左移位數(shù)=第一二進制數(shù)的預定長度-I*N_J ;其中,I為所述編碼在所述第一編碼串從左到右的序號,I為大于O的整數(shù);N根據(jù)所述預定輸入法的基本編碼的數(shù)量設定根據(jù)所述預定輸入法的基本編碼的數(shù)量、所述第一二進制數(shù)的預定長度以及所述第一二進制數(shù)是否是有符號數(shù)來確定。所述輸入法為拼音輸入法;所述預定輸入法中基本編碼為26個拼音字母;所述步驟21為根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。所述輸入法為筆畫輸入法;所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述步驟21為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。另一方面,提供一種搜索數(shù)據(jù)庫中字符串的裝置,其特征在于,包括第一獲取單元,獲取用戶在預定輸入法模式下輸入的第一編碼串;第一轉化單元,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);搜索單元,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串對應的二進制數(shù);查找單元,查找搜索出的所述二進制數(shù)對應的字符串;輸出單兀,輸出查找出的所述字符串。所述的搜索數(shù)據(jù)庫中字符串的裝置,還包括第二獲取單元,按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼;生成單元,使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成第
二編碼串;第二轉化單元,將所述第二編碼串轉化為所述預定位數(shù)的第二二進制數(shù);所述搜索單元具體為搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的保存在數(shù)據(jù)庫中的待搜索字串轉化成的二進制數(shù)。所述第一轉化單元包括第一獲取子單元,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù);轉化子單元,將每個所述自然數(shù)轉化為第三二進制數(shù);第二獲取子單元,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù);左移處理子單元,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ;
運算子單元,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述
第一二進制數(shù)。當所述輸入法為拼音輸入法時;所述預定輸入法中基本編碼為26個拼音字母;所述第一獲取子單元為根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù);或者當所述輸入法為筆畫輸入法時,所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述第一獲取子單元為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。本發(fā)明的實施例具有以下有益效果上述方案中,在進行檢索時,將輸入的輸入法編碼串轉化為數(shù)字,將待選字符串也轉化為數(shù)字,并通過數(shù)字大小比較來判斷輸入的編碼串是否命中待選字符串,大幅加快判斷是否命中的速度。
圖1為本發(fā)明所述的在搜索數(shù)據(jù)庫中字符串的方法的一實施例的流程示意圖;圖2為本發(fā)明所述的搜索數(shù)據(jù)庫中字符串的方法的另一實施例的流程示意圖;圖3為本發(fā)明所述的搜索數(shù)據(jù)庫中字符串的裝置的結構示意圖。
具體實施例方式為使本發(fā)明的實施例要解決的技術問題、技術方案和優(yōu)點更加清楚,下面將結合附圖及具體實施例進行詳細描述。如圖I所示,為本發(fā)明所述的搜索數(shù)據(jù)庫中字符串的方法,所述方法包括步驟11,獲取用戶在預定輸入法模式下輸入的第一編碼串;第一編碼串為根據(jù)輸入法確定的,例如,用戶希望搜索“李四”,輸入法為拼音輸入法,用戶輸入的編碼串為“l(fā)isi”。,步驟12,按照編碼轉換方法,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);步驟13,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含所述字符串的輸入法編碼串對應的二進制數(shù);其中,所述字符串的輸入法編碼串對應的二進制數(shù)為按照同步驟12的方法(所述編碼轉換方法)將輸入法編碼串轉化而生成的。步驟14,查找搜索出的所述二進制數(shù)對應的字符串;步驟15,輸出查找出的所述字符串。如圖2所示,為本發(fā)明所述的搜索數(shù)據(jù)庫中字符串的方法,所述方法包括步驟21,獲取用戶在預定輸入法模式下輸入的第一編碼串;步驟22,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);步驟23,按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼;步驟24,使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成第二編碼串;步驟25,將所述第二編碼串轉化為所述預定位數(shù)的第二二進制數(shù);步驟26,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串對應的二進制數(shù);步驟27,查找搜索出的所述二進制數(shù)對應的字符串;步驟28,輸出查找出的所述字符串。所述步驟22包括步驟221,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù);步驟222,將每個所述自然數(shù)轉化為第三二進制數(shù);步驟223,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù);步驟224,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ;步驟225,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述第
一二進制數(shù)。
其中,步驟25與步驟22的方法類似,這里不再贅述。所述步驟223為根據(jù)以下公式計算左移位數(shù)=第一二進制數(shù)的預定長度-I*N_J ;其中,I為所述編碼在所述第一編碼串從左到右的序號,I為大于O的整數(shù);N根據(jù)所述預定輸入法的基本編碼的數(shù)量設定根據(jù)所述預定輸入法的基本編碼的數(shù)量、所述第一二進制數(shù)的預定長度以及所述第一二進制數(shù)是否是有符號數(shù)來確定。所述輸入法為拼音輸入法時,所述預定輸入法中基本編碼為26個拼音字母;所述步驟221為根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。所述輸入法為筆畫輸入法時,所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述步驟21為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。本發(fā)明中,數(shù)據(jù)庫存儲有字符串和字符串對應的二進制數(shù)。其中,數(shù)據(jù)庫可以為電話本,字符串可以為聯(lián)系人。以下以拼音輸入法為例,描述電話本中搜索聯(lián)系人的場景。中文電話本中采用拼音搜索法時,將漢字字符串轉化為其拼音或拼音首字母組成的編碼串,用戶通過輸入拼音或拼音首字母組成的編碼串,搜索到想找的聯(lián)系人。拼音字母從A到Z —共26個,因此使用26個不同狀態(tài)就可分別代表26個不同字母,5個bit能生成32種不同搭配,因此5bit就能代表任意一個拼音字母。目前一般嵌入式CPU的字長是32位或64位,其能支持對32位或64位長的無符號數(shù)字的比較。一個32位長的無符號數(shù)字可代表32/5 = 6個字母,一個64位長的數(shù)字可代表64/5 = 12個字母。為方便描述,以下以使用32位長無符號數(shù)字為例。本實施例中,對于拼音編碼串長度大于6個字符的,可僅采用其前6個字符,生成二進制數(shù)字。該方法同時限定了用戶輸入字符數(shù)不能超過6個。對于聯(lián)系人的搜索來說,能夠滿足要求。如果需要對超過6個字符的編碼串進行搜索,也可使用多個32位無符號數(shù)串起來的方法,即用多個32位無符號數(shù)模擬更長字長的數(shù)字。例如,如需處理25位長的編碼串,需字長(5*25) = 125,可采用4個32位無符號數(shù)模擬128位無符號數(shù)。使用類似的方式,可以實現(xiàn)對超長數(shù)字進行模擬。本發(fā)明中,可以預先設置用戶可以輸入的編碼串的最大長度,以確定需使用數(shù)字的字長,如果字長大于CPU可處理的數(shù)據(jù)類型的字長,可考慮用多個數(shù)字串接。本發(fā)明中搜索字符串的長度是根據(jù)二進制數(shù)的預定長度確定。例如拼音輸入法中,轉換后的二進制數(shù)的預定長度為32位時,則最多將字符串的前6個字符轉化為二進制數(shù)進行比較長度。其他情況類推。本發(fā)明的搜索方法為從字符串的字串頭開始精確匹配,提高了搜索的準確性。例如,用戶輸入“李四”時,數(shù)據(jù)庫中有“李四”、“李小四” “李四一”等待搜索數(shù)據(jù),則搜索結果為“李四”、和“李四一”。本方法的典型應用是在電話本中搜索聯(lián)系人。
在電話本中搜索聯(lián)系人的應用場景中,本發(fā)明所述的搜索方法包括步驟31,獲取電話本的各個聯(lián)系人的輸入法編碼串;例如,聯(lián)系人為“李四”對應的輸入法編碼串為“l(fā)isi”。步驟32,按照編碼串轉化方法,將輸入法編碼串轉化為二進制數(shù),存儲在存儲器中,以便搜索時使用。該步驟與上述步驟22中的編碼串轉化方法類似。具體過程如下步驟321,分別獲取所述編碼串的每個編碼);例如,“l(fā)isi”中第一個編碼為“I”。步驟322,根據(jù)預先設定的A至Z的26個字母和I至26的自然數(shù)之間預先建立的一一對應關系,獲取每個字符對應的自然數(shù)。本實施例中,采用a_> 1(表示a與I對應),b- > 2, C- > 3. . . Z- > 26的對應關系,例如,上述第一個字符“I”對應的自然數(shù)為12。本領域技術人員可以理解,可以采用字符與自然數(shù)的其他對應規(guī)則,例如,A至Z的26個字母也可以和2至27等其它自然數(shù)之間預先建立一一對應關系時,其他步驟進行相應的處理。步驟323,將每個所述自然數(shù)轉化為二進制數(shù);例如,第一個編碼“I”對應的數(shù)字12的二進制數(shù)為01100。步驟324,根據(jù)每個編碼在所述編碼串中的位置,獲取所述二進制數(shù)的左移位數(shù);所述步驟124為根據(jù)以下公式計算左移位數(shù)=第一二進制數(shù)的預定長度;其中,I為所述編碼在所述第一編碼串從左到右的序號,I為大于O的整數(shù);N根據(jù)所述預定輸入法的基本編碼的數(shù)量設定;本實施例中,N為5 ;J根據(jù)所述預定輸入法的基本編碼的數(shù)量、所述第一二進制數(shù)的預定長度以及所述第一二進制數(shù)是否是有符號數(shù)來確定。確定原則為當?shù)谝痪幋a串中的每個編碼轉化為二進數(shù)字后,使其根據(jù)在第一編碼串中的位置移位后生成的第三二進制數(shù)不超過第一二進制數(shù)的預定長度。移位時還需考慮當前使用的二進制數(shù)是無符號數(shù)還是有符號數(shù)。例如當?shù)谝欢M制數(shù)的預定長度為32位,預定輸入法為拼音輸入法時,如第一二進制數(shù)為無符號數(shù),J為O、I或者2;如第一二進制數(shù)為有符號數(shù)時,J為O或I。使用無符號數(shù)較佳,因為無符號數(shù)更簡單,且能多一位有效位。步驟325,根據(jù)所述左移位數(shù),分別將所述二進制數(shù)進行左移位,并且在低位補O ;步驟326,將移位后的所述二進制數(shù)進行或運算或者相加運算,生成所述第一二進制數(shù)。例如,本應用場景中,以轉化后的二進制數(shù)為無符號數(shù)為例,當為第i個字符時,左移的位數(shù)為(32-(i-l)*5-5-j),其中j可為0,1,2。對于長度不夠6位的,后面補O。
對于字符長度小于或等于6位的拼音編碼串,使用該方法轉化為數(shù)字。32為轉化后的二進制數(shù)的字長,也可以為64等其他長度。以第一個字符“I”為例,I為1,假設j為2,可知左移位數(shù)為(32-(1-1) *5-5-2),為25位。移位后其二進制表示為00011000000000000000000000000000O相應的,第二個字符“i”轉化為01001,然后左移20位。其他字符”Si”以相同的規(guī)則進行轉化,并在末尾補零。然后將每個字符轉化的二進制數(shù)字進行或運算或者相加運算,得到數(shù)字00011000100110011010010000000000,其中最后面5個O是補零得到的。這個32位無符號數(shù)就代表“李四”,存放在存儲器中,以便搜索時使用。按照上述方法,將電話本中的每個聯(lián)系人與一個32位的數(shù)字對應以下描述檢索的處理過程。步驟33,獲取用戶根據(jù)預定輸入法輸入的第一編碼串;例如,用戶希望查詢“李四”的電話號碼,當前輸入法為拼音輸入法,輸入編碼串為“l(fā)is”。步驟34,按照預定的編碼串轉化規(guī)則,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);例如,按照上述方法,將“l(fā)is”轉化為00011000100110011000000000000000,T 己 J'tj £1 ο步驟35,按照所述預定輸入法中基本編碼的預定順序,獲取所述第一字符串中的最后一個編碼在所述預設順序中的下一個字符;當輸入法為拼音輸入法時,基本編碼的預定順序可以為a至z的順序,也可以為其他用戶預定的順序。例如,“l(fā)is”中的最后一個編碼為S。當預定順序為a至z時,s的下一個編碼為t。步驟36,使用所述下一個編碼代替所述編碼串中的最后一個編碼,生成第二編碼串;例如,使用t代替S,生成“l(fā)it”。步驟37,按照所述編碼串轉化規(guī)則,將所述第二編碼串轉化成所述預定位數(shù)的第二二進制數(shù);例如,按照上述方法,將“l(fā)it”轉化為00011000100110100000000000000000,
記為b。步驟38,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。步驟39,查找搜索出的所述二進制數(shù)對應的聯(lián)系人。其中,所述數(shù)據(jù)庫中包含聯(lián)系人對應的所述聯(lián)系人的輸入法編碼串按照所述編碼轉化規(guī)則轉化的二進制數(shù);則“大于或等于” “l(fā)is”并且小于“l(fā)it”的字符即滿足要求。將每個聯(lián)系人的二進制數(shù)(記為η)與a,b比較,符合以下條件(η >= a)&&(n < b),就表示該聯(lián)系人的拼音以Iis開頭,符合搜索條件。例如,搜索出“李四”(其對應的輸入法編碼為lisi) “和“李師”(其對應的輸入法編碼為Iishi),,則輸出搜索結果,供用戶選擇。本領域技術人員可以理解,上述方法可以應用于輸入法為筆畫輸入法的場景。所述預定輸入法中基本編碼為橫、豎、撇、點、折;并且,橫、豎、撇、點、折為1、2、3、4、5的預定順序。本領域技術人員可以理解,橫、豎、撇、點、折之間也可以為用戶指定的其它順序。移位公式中,N可以為3 ;橫、豎、撇、點、折和I至5的自然數(shù)之間預先建立的對應關系。本領域技術人員可以理解,橫、豎、撇、點、折的基本編碼也可以和2至6等其他自然數(shù)之間預先建立對應關系。如圖3所示,為本發(fā)明所述的搜索數(shù)據(jù)庫中字符串的裝置,包括第一獲取單元41,獲取用戶在預定輸入法模式下輸入的第一編碼串;
第一轉化單元42,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);搜索單元43,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串對應的二進制數(shù);查找單元44,查找搜索出的所述二進制數(shù)對應的字符串;輸出單元45,輸出查找出的所述字符串。
所述的搜索數(shù)據(jù)庫中字符串的裝置,還包括第二獲取單元46,按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼;生成單元47,使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成
第二編碼串;第二轉化單元48,將所述第二編碼串轉化成為所述預定位數(shù)的第二二進制數(shù);其中所述第二轉化單元48和第一轉換單元42的處理過程類似。所述搜索單元43具體為搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。所述第一轉化單元42包括第一獲取子單元,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù);轉化子單元,將每個所述自然數(shù)轉化為第三二進制數(shù);第二獲取子單元,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù);左移處理子單元,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ;運算子單元,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述
第一二進制數(shù)。當所述輸入法為拼音輸入法時;所述預定輸入法中基本編碼為26個拼音字母;所述第一獲取子單元為根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù);或者當所述輸入法為筆畫輸入法時,所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述第一獲取子單元為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。上述應用場景中以轉化后的二進制數(shù)使用32位無符號數(shù)為例進行描述,本發(fā)明還可以用于有符號數(shù)。本發(fā)明不僅適用于電話本搜索,也可以應用于其他搜索的場景下。本發(fā)明把需要比較字符串的處理轉化為比較數(shù)字,并通過數(shù)字大小比較來判斷輸入是否命中待選字符串,加快了判斷是否命中的速度,在數(shù)據(jù)量大的情況下可明顯改善搜索速度。另外,本發(fā)明可節(jié)省內(nèi)存消耗。例如現(xiàn)有技術中,保存6個字符的字符串需要消耗7個字節(jié)(ASC碼)或14個字節(jié)(UNICODE),本發(fā)明只需使用4個字節(jié)(32位無符號數(shù))。所述方法實施例是與所述裝置實施例相對應的,在方法實施例中未詳細描述的部分參照裝置實施例中相關部分的描述即可,在裝置實施例中未詳細描述的部分參照方法實施例中相關部分的描述即可。 本領域普通技術人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,所述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,包括如上述方法實施例的步驟,所述的存儲介質(zhì),如磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。在本發(fā)明各方法實施例中,所述各步驟的序號并不能用于限定各步驟的先后順序,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,對各步驟的先后變化也在本發(fā)明的保護范圍之內(nèi)。以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述方法包括 步驟1,獲取用戶在預定輸入法模式下輸入的第一編碼串; 步驟2,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù); 步驟3,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼對應的二進制數(shù); 步驟4,查找搜索出的所述二進制數(shù)對應的字符串; 步驟5,輸出查找出的所述字符串。
2.根據(jù)權利要求I所述的搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述步驟3之前,所述方法還包括 按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼; 使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成第二編碼串; 將所述第二編碼串轉化成為所述預定位數(shù)的第二二進制數(shù); 所述步驟3具體為搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。
3.根據(jù)權利要求I所述的搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述步驟2包括 步驟21,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù); 步驟22,將每個所述自然數(shù)轉化為第三二進制數(shù); 步驟23,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù); 步驟24,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ;步驟25,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述第一二進制數(shù)。
4.根據(jù)權利要求3所述的搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述步驟23為根據(jù)以下公式計算 左移位數(shù)=第一二進制數(shù)的預定長度; 其中,I為所述編碼在所述第一編碼串從左到右的序號,I為大于O的整數(shù);N根據(jù)所述預定輸入法的基本編碼的數(shù)量設定根據(jù)所述預定輸入法的基本編碼的數(shù)量、所述第一二進制數(shù)的預定長度以及所述第一二進制數(shù)是否是有符號數(shù)來確定。
5.根據(jù)權利要求3或4所述的搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述輸入法為拼音輸入法;所述預定輸入法中基本編碼為26個拼音字母;所述步驟21為 根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。
6.根據(jù)權利要求3或4所述的搜索數(shù)據(jù)庫中字符串的方法,其特征在于,所述輸入法為筆畫輸入法;所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述步驟21為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。
7.一種搜索數(shù)據(jù)庫中字符串的裝置,其特征在于,包括第一獲取單元,獲取用戶在預定輸入法模式下輸入的第一編碼串; 第一轉化單元,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù); 搜索單元,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串對應的二進制數(shù); 查找單元,查找搜索出的所述二進制數(shù)對應的字符串; 輸出單元,輸出查找出的所述字符串。
8.根據(jù)權利要求7所述的搜索數(shù)據(jù)庫中字符串的裝置,其特征在于,還包括 第二獲取單元,按照所述預定輸入法中基本編碼的預定順序,獲取所述第一編碼串中的最后一個編碼在所述預設順序中的下一個編碼; 生成單元,使用所述下一個編碼代替所述第一編碼串中的最后一個編碼,生成第二編碼串; 第二轉化單元,將所述第二編碼串轉化成為所述預定位數(shù)的第二二進制數(shù); 所述搜索單元具體為搜索大于或等于所述第一二進制數(shù)并且小于所述第二二進制數(shù)的二進制數(shù)。
9.根據(jù)權利要求7所述的搜索數(shù)據(jù)庫中字符串的裝置,其特征在于,所述第一轉化單元包括 第一獲取子單元,根據(jù)所述預定輸入法的基本編碼和自然數(shù)之間的預定對應關系,分別獲取所述第一編碼串的每個編碼對應的自然數(shù); 轉化子單元,將每個所述自然數(shù)轉化為第三二進制數(shù); 第二獲取子單元,根據(jù)每個編碼在所述第一字符串中的位置,獲取所述第三二進制數(shù)的左移位數(shù); 左移處理子單元,根據(jù)所述左移位數(shù),分別將所述第三二進制數(shù)進行左移位,并且在低位補O ; 運算子單元,將移位后的所述第三二進制數(shù)進行或運算或者相加運算,生成所述第一二進制數(shù)。
10.根據(jù)權利要求8至9中任一項所述的搜索數(shù)據(jù)庫中字符串的裝置,其特征在于,當所述輸入法為拼音輸入法時;所述預定輸入法中基本編碼為26個拼音字母;所述第一獲取子單元為根據(jù)預先設定的A至Z的26個字母和26個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù);或 當所述輸入法為筆畫輸入法時,所述預定輸入法中基本編碼為橫、豎、撇、點、折;所述第一獲取子單元為根據(jù)預先設定的橫、豎、撇、點、折和5個自然數(shù)之間預先建立的一對一的關系,獲取每個字符對應的自然數(shù)。
全文摘要
本發(fā)明提供一種搜索數(shù)據(jù)庫中字符串的方法和裝置,涉及數(shù)據(jù)搜索領域,為解決現(xiàn)有技術中搜索字符串的速度比較慢的技術問題而發(fā)明。所述方法包括步驟1,獲取用戶在預定輸入法模式下輸入的第一編碼串;步驟2,將所述第一編碼串轉化成預定位數(shù)的第一二進制數(shù);步驟3,在數(shù)據(jù)庫中,搜索大于或等于所述第一二進制數(shù)的二進制數(shù),其中,所述數(shù)據(jù)庫中包含字符串和所述字符串的輸入法編碼串對應的二進制數(shù);步驟4,查找搜索出的所述二進制數(shù)對應的字符串;步驟5,輸出查找出的所述字符串。本發(fā)明能加快搜索速度。
文檔編號G06F17/30GK102622359SQ20111003034
公開日2012年8月1日 申請日期2011年1月27日 優(yōu)先權日2011年1月27日
發(fā)明者楊萬麗, 毛岱山 申請人:聯(lián)想移動通信科技有限公司