專利名稱::快速比對(duì)搜尋字串的電子裝置及方法
技術(shù)領(lǐng)域:
:本發(fā)明是關(guān)于一種快速比對(duì)搜尋字串的電子裝置及方法,其適用范圍包括應(yīng)用于允許利用萬用字元(wildcard)進(jìn)行搜尋的電子裝置中。
背景技術(shù):
:按,一般使用者在操作電子裝置以搜尋資料或檔案時(shí),除直接輸入完整資料字串來進(jìn)行搜尋外,亦可輔以萬用字元的功能,以提升搜尋到與所輸入的查詢字串相符的資料的機(jī)率。公知廣為人使用的萬用字元包括「?」及「*」,其中,「?」代表一個(gè)字元,例如當(dāng)查詢字串為「??aaa」時(shí),電子裝置所欲搜尋的目標(biāo)字串即為五個(gè)字元,且其中第一及第二個(gè)字元不限、而第三至第五個(gè)字元需為「aaa」;「*」則代表任意字元或無字元,例如當(dāng)查詢字串為「*bb*」時(shí),電子裝置需搜尋所有字串中包含有「bb」的字串;當(dāng)然查詢字串中亦可同時(shí)結(jié)合「*」,以符合使用者需求來進(jìn)行搜尋。公知電子裝置通常是根據(jù)查詢字串以直接在資料庫中從第一個(gè)關(guān)鍵字開始讀取進(jìn)行比對(duì),然而,此舉將徒增系統(tǒng)負(fù)荷,因此公知亦提出于電子裝置中定義一索引表(indextable)的機(jī)制,用以儲(chǔ)存各字串所對(duì)應(yīng)的記錄編號(hào)及字串長度,且每一筆記錄皆對(duì)應(yīng)至資料庫中的某一特定字串,請(qǐng)參閱圖1的索引表及圖2所示的資料庫,例如索引表中的第i筆記錄的字串長度為5,則可自資料庫中找出第i個(gè)字串「kinpo」,余此類推。而當(dāng)使用者欲使用公知電子裝置搜尋字串時(shí),請(qǐng)一并參閱圖3的流程圖,若所接收到查詢字串為「*adz?」(步驟S301),則電子裝置將先計(jì)算與查詢字串相符的目標(biāo)字串(targetstring)所應(yīng)具備的最小字串長度(minimumlength)(步驟S302),而根據(jù)萬用字元的定義,可得知與查詢字串「*adz?」相符的目標(biāo)字串的最小長字串度為「4」。如此一來,電子裝置即可自索引表中的第1筆記錄開始搜尋(步驟S303),以判斷索引表中所記錄的字串長度是否大于或等于最小字串長度「4」(步驟S304)。若是,則電子裝置將可進(jìn)一步自資料庫的資料庫中讀取出對(duì)應(yīng)于此記錄的目標(biāo)字串(步驟S305),并于比對(duì)出目標(biāo)字串與查詢字串相符時(shí)(步驟S306),顯示該目標(biāo)字串(步驟S307)。據(jù)此,電子裝置將逐一與索引表中的記錄進(jìn)行比對(duì)(步驟S305及步驟S309),直到比對(duì)完最后一筆記錄為止。然而,由于公知電子裝置的索引表僅供比對(duì)字串長度是否與查詢字串的最小字串長度相符,而無進(jìn)一步篩選過濾程序,且之后仍須逐一自資料庫中讀取出實(shí)際目標(biāo)字串來進(jìn)行比對(duì),如此在一來一往的讀取比對(duì)過程中,將無形增加搜尋時(shí)間,并徒增資料庫負(fù)荷,并非十分理想。由此可知,公知的比對(duì)搜尋字串裝置與功能仍存在有諸多缺失而有予以改進(jìn)的必要。
發(fā)明內(nèi)容本發(fā)明的主要目的在于提供一種快速比對(duì)搜尋字串的電子裝置及方法,是于索引表中設(shè)計(jì)一位元對(duì)應(yīng)(bitmapping)欄位,以利用位元運(yùn)算(bit-wise)索引技術(shù),以事先濾除不符合條件的字串,進(jìn)而縮短搜尋時(shí)間,并提高查詢效率。依據(jù)本發(fā)明的一特色,提出一快速比對(duì)搜尋字串的電子裝置,由一微處理器、一輸入模組、一顯示模組、一索引表、及一資料庫所組成。其中,輸入模組可供輸入一查詢字串;顯示模組用以顯示資料;索引表則儲(chǔ)存有復(fù)數(shù)筆記錄,每一筆記錄皆定義有一目標(biāo)字串的記錄編號(hào)、字串長度、及目標(biāo)字碼(spellcodedestination),此目標(biāo)字碼是儲(chǔ)存目標(biāo)字串所使用到的字元;資料庫則儲(chǔ)存有復(fù)數(shù)個(gè)目標(biāo)字串,且每一目標(biāo)字串對(duì)應(yīng)于索引表中的一記錄編號(hào)。據(jù)此,當(dāng)本發(fā)明的電子裝置接收到查詢字串時(shí),微處理器將分析此查詢字串所對(duì)應(yīng)的最小字串長度、及查詢字串所使用的字無形成的來源字碼(spellcodesource),并將來源字碼與索引表中的目標(biāo)字碼一一比對(duì),以比對(duì)出與來源字碼相符的目標(biāo)字碼,且目標(biāo)字碼所對(duì)應(yīng)目標(biāo)字串的字串長度大于或等于最小字串長度時(shí),將自資料庫中擷取出目標(biāo)字串,并于比對(duì)目標(biāo)字串和查詢字串相符時(shí),顯示此目標(biāo)字串。依據(jù)本發(fā)明的另一特色,所提出的快速比對(duì)搜尋字串方法,是應(yīng)用于上述電子裝置中。首先接收查詢字串;接著分析查詢字串所對(duì)應(yīng)的最小字串長度、及來源字碼;再比對(duì)與來源字碼相符的目標(biāo)字碼;且比對(duì)出此目標(biāo)字碼對(duì)應(yīng)的目標(biāo)字串的字串長度大于或等于上述最小字串長度時(shí);將自資料庫中擷取出目標(biāo)字串;并于比對(duì)出目標(biāo)字串與查詢字串相符時(shí),顯示目標(biāo)字串。其中,本發(fā)明是根據(jù)一位元運(yùn)算(bit-wise)索引技術(shù)以將目標(biāo)字碼及來源字碼記錄為一位元對(duì)應(yīng)(bitmapping)格式。圖1為公知索引表的示意圖。圖2為公知資料庫的示意圖。圖3為公知比對(duì)搜尋字串的流程圖。圖4為本發(fā)明一較佳實(shí)施例的系統(tǒng)方塊圖。圖5為本發(fā)明一較佳實(shí)施例的索引表的示意圖。圖6為本發(fā)明一較佳實(shí)施例的資料庫的示意圖。圖7為本發(fā)明一較佳實(shí)施例比對(duì)搜尋字串的作動(dòng)流程圖。具體實(shí)施例方式為能更了解本發(fā)明的技術(shù)內(nèi)容,特舉一較佳具體實(shí)施例說明如下。請(qǐng)先參閱圖4的方塊圖,本實(shí)施例的電子裝置1,是由微處理器11、輸入模組12、輸出模組13、索引表14、及資料庫所15組成。為加速使用者使用萬用字元(wildcard)對(duì)電子裝置1進(jìn)行搜尋的時(shí)效、并減輕系統(tǒng)負(fù)荷,因此本實(shí)施例電子裝置1所定義的索引表14如圖5所示,其中除定義有資料庫15中所儲(chǔ)存各目標(biāo)字串(targetstring)對(duì)應(yīng)的記錄編號(hào)、與字串長度之外,還針對(duì)目標(biāo)字串建立有一組目標(biāo)字碼(spellcodedestination),由于索引表14是運(yùn)用位元運(yùn)算(bit-wise)索引技術(shù),因此目標(biāo)字碼是記錄為位元對(duì)應(yīng)(bitmapping)格式,亦即目標(biāo)字串中有使用到的字元,皆于目標(biāo)字碼中記錄為「1」、其余未使用的字元?jiǎng)t記錄為「0」。例如當(dāng)目標(biāo)字串為「at」時(shí),其于索引表14中所對(duì)應(yīng)的目標(biāo)字碼即將字母「a」及「t」所對(duì)應(yīng)的位置記錄為「1」、其余為「0」,因而形成「10000000000000000001000000」。需注意的是,在本實(shí)施例索引表14所列的資料欄位中,目標(biāo)字碼的欄位長度是定義為26位元,其中每一位元是依序代表A-Z的其中一字母;當(dāng)然字串長度及目標(biāo)字碼的欄位長度亦可視需求而定,例如當(dāng)目標(biāo)字串囊括有數(shù)字時(shí),則目標(biāo)字碼的欄位長度將可能擴(kuò)充為36位元,即包括26個(gè)英文字母、與「0」到「9」共10個(gè)數(shù)字;若目標(biāo)字串囊括有其他種類文字時(shí),亦可視需求而擴(kuò)充欄位長度。資料庫15中則儲(chǔ)存有復(fù)數(shù)個(gè)目標(biāo)字串,每一目標(biāo)字串皆對(duì)應(yīng)于索引表14中的記錄編號(hào),例如索引表中14記錄編號(hào)為「1」的記錄,將可對(duì)應(yīng)自資料庫15中擷取出目標(biāo)字串「in」,余此類推。當(dāng)使用者欲使用電子裝置1搜尋字串時(shí),請(qǐng)一并參閱圖7的流程圖,于本實(shí)施例中,使用者通過輸入模組12所輸入的查詢字串為「*in」(步驟S701),其中,萬用字元「*」代表任意字元或無字元,而另一萬用字元「?」則代表一個(gè)字元,因此,微處理器11可先計(jì)算出與查詢字串相符的目標(biāo)字串(targetstring)所應(yīng)具備的最小字串長度(minimumlength)為「3」位元(步驟S702),即兩個(gè)字母「i」及「n」、加上一個(gè)未知字「?」,并可針對(duì)查詢字串建立一組來源字碼(spellcodesource)為「00000000100001000000000000」(步驟S703),以將「i」及「n」對(duì)應(yīng)的位置設(shè)為「1」。據(jù)此,微處理器11即可自索引表14中的第1筆記錄開始搜尋比對(duì)(步驟S704),而根據(jù)位元運(yùn)算檢索技術(shù)中的「AND」邏輯運(yùn)算規(guī)則,可知來源字碼與第1筆記錄的目標(biāo)字碼「10000000000000000001000000」不符(步驟S705),因此微處理器11將此記錄是否為索引表14的最后一筆記錄(步驟S710),若否,則續(xù)將搜尋下一筆記錄(步驟S711)。而在第2筆記錄中,由于其目標(biāo)字碼恰好與來源字碼相符(步驟S705),因此接著將比對(duì)對(duì)應(yīng)目標(biāo)字串的長度是否大于或等于最小字串長度「3」(步驟S706)。然而,因此記錄的目標(biāo)字串長度僅為「2」,其小于「3」,故微處理器11將再繼續(xù)搜尋索引表14中的后續(xù)記錄(步驟S710)。于記錄編號(hào)為「i」的記錄中,除了目標(biāo)字碼與來源字碼相符外(步驟S705),其目標(biāo)字串長度「5」亦大于最小字串長度「3」(步驟S706),此時(shí)微處理器11方可自資料庫15中讀取出對(duì)應(yīng)于此記錄的目標(biāo)字串「kinpoi」(步驟S707),并比對(duì)目標(biāo)字串是否符合查詢字串「*in」的邏輯(步驟S708)。需注意的是,由于在查詢字串中,「in」之后僅允許存在一個(gè)字元,因此目標(biāo)字串「kinpo」是于「in」后尚銜接有兩個(gè)字元「po」,并不符合查詢字串的設(shè)定,故微處理器11仍將繼續(xù)搜尋索引表14中的其他記錄(步驟S710)。直到搜尋出與查詢字串相符的目標(biāo)字串,才會(huì)在顯示模組13中顯示出來(步驟S709);當(dāng)然若于搜尋至最后一筆記錄皆未存在有符合查詢字串的目標(biāo)字串時(shí),顯示模組13將不會(huì)顯示任何搜尋結(jié)果。根據(jù)上述說明,可知本發(fā)明先根據(jù)索引表的位元對(duì)應(yīng)(bitmapping)格式設(shè)計(jì)以比對(duì)出和查詢字串的來源字碼相符的目標(biāo)字碼,之后才自資料庫中讀取出對(duì)應(yīng)目標(biāo)字串進(jìn)行比對(duì),如此將可事先濾除不符合條件的字串或單詞,以減少自資料庫中讀取資料的次數(shù)及系統(tǒng)負(fù)荷,確能提高查詢效率,從而加快搜尋速度。上述實(shí)施例僅是為了方便說明而舉例而已,本發(fā)明所主張的權(quán)利范圍自應(yīng)以申請(qǐng)專利范圍所述為準(zhǔn),而非僅限于上述實(shí)施例。權(quán)利要求1.一種快速比對(duì)搜尋字串的電子裝置,包括一微處理器;一輸入模組,以供輸入一查詢字串;一顯示模組,以供顯示資料;一索引表,儲(chǔ)存有復(fù)數(shù)筆記錄,每一記錄定義有一目標(biāo)字串的一記錄編號(hào)、一字串長度、及一目標(biāo)字碼,該目標(biāo)字碼儲(chǔ)存該目標(biāo)字串所使用的字元;以及一資料庫,儲(chǔ)存有復(fù)數(shù)個(gè)目標(biāo)字串,每一目標(biāo)字串對(duì)應(yīng)于該索引表中的一記錄編號(hào);其特征在于當(dāng)該電子裝置接收到該查詢字串時(shí),該微處理器分析該查詢字串所對(duì)應(yīng)的一最小字串長度、及該查詢字串所使用的字元形成的一來源字碼,并將該來源字碼與該索引表中的該等目標(biāo)字碼一一比對(duì),以比對(duì)出與該來源字碼相符的目標(biāo)字碼,且該目標(biāo)字碼所對(duì)應(yīng)目標(biāo)字串的字串長度大于或等于該最小字串長度時(shí),將自該資料庫中擷取出該目標(biāo)字串,并于比對(duì)該目標(biāo)字串與該查詢字串相符時(shí),顯示該目標(biāo)字串。2.如權(quán)利要求1所述的電子裝置,其特征在于其中該目標(biāo)字碼及該來源字碼是根據(jù)一位元運(yùn)算索引技術(shù)以記錄為一位元對(duì)應(yīng)格式。3.如權(quán)利要求1所述的電子裝置,其特征在于其中該字元為一文字。4.如權(quán)利要求1所述的電子裝置,其特征在于其中該字元為一數(shù)字。5.如權(quán)利要求1所述的電子裝置,其特征在于其中該查詢字串中的一字元為一萬用字元。6.如權(quán)利要求5所述的電子裝置,其特征在于其中該萬用字元代表一個(gè)字元。7.如權(quán)利要求5所述的電子裝置,其特征在于其中該萬用字元代表任意字元或無字元。8.一種快速比對(duì)搜尋字串的方法,包括下列步驟(A)接收一查詢字串;(B)分析該查詢字串所對(duì)應(yīng)的一最小字串長度、及該查詢字串所使用的字元形成的一來源字碼;(C)比對(duì)出與該來源字碼相符的一目標(biāo)字碼,其中,該目標(biāo)字碼是定義于一索引表的其中一筆記錄,以指定該筆記錄對(duì)應(yīng)的目標(biāo)字串所使用的字元;(D)根據(jù)該索引表,以比對(duì)出該筆記錄所對(duì)應(yīng)的目標(biāo)字串的字串長度大于或等于該最小字串長度;(E)自一資料庫中擷取出該目標(biāo)字串;(F)比對(duì)出該目標(biāo)字串與該查詢字串相符;以及(G)顯示該目標(biāo)字串。9.如權(quán)利要求8所述的方法,其特征在于其中該目標(biāo)字碼及該來源字碼是根據(jù)一位元運(yùn)算索引技術(shù)以記錄為一位元對(duì)應(yīng)格式。10.如權(quán)利要求8所述的方法,其特征在于其中該字元為一文字。11.如權(quán)利要求8所述的方法,其特征在于其中該字元為一數(shù)字。12.如權(quán)利要求8所述的方法,其特征在于其中該查詢字串中的一字元為一萬用字元。13.如權(quán)利要求12所述的方法,其特征在于其中該萬用字元代表一個(gè)字元。14.如權(quán)利要求12所述的方法,其特征在于其中該萬用字元代表任意字元或無字元。全文摘要本發(fā)明是有關(guān)于一種快速比對(duì)搜尋字串的電子裝置及方法,是于接收一查詢字串后,先分析查詢字串所對(duì)應(yīng)的最小字串長度、及查詢字串所使用的字元形成的來源字碼,以將來源字碼逐一與索引表中的目標(biāo)字碼進(jìn)行比對(duì);若來源字碼與目標(biāo)字碼相符,且目標(biāo)字碼所對(duì)應(yīng)的字串長度大于或等于最小字串長度時(shí),方可進(jìn)一步自資料庫中擷取此目標(biāo)字碼對(duì)應(yīng)的實(shí)際目標(biāo)字串,以與查詢字串相比對(duì);若兩字串相符合,則電子裝置將據(jù)以顯示搜尋結(jié)果。由于本發(fā)明的索引表是運(yùn)用位元運(yùn)算索引技術(shù)進(jìn)行比對(duì),因此可事先濾除不符條件的字串,進(jìn)而提高檢索效率。文檔編號(hào)G06F17/30GK1707475SQ200410059300公開日2005年12月14日申請(qǐng)日期2004年6月9日優(yōu)先權(quán)日2004年6月9日發(fā)明者陸軍申請(qǐng)人:金寶電子(上海)有限公司