專利名稱:一種搜索用戶名的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種搜索用戶名的方法及系統(tǒng)。
背景技術(shù):
隨著科技的迅猛發(fā)展,互聯(lián)網(wǎng)越來越多的出現(xiàn)在人們的生活中。在多種系統(tǒng)中都使用到用戶名搜索技術(shù),例如在用戶的注冊過程中,需要判斷用戶填寫的用戶名是否已經(jīng)被使用;好友的模糊查找;在填寫功能表單(發(fā)站內(nèi)信, 贈送鮮花等)時,根據(jù)用戶的輸入情況,自動下拉提示符合條件的用戶名列表。用戶名搜索分為精確搜索和模糊搜索。其中,模糊搜索進(jìn)一步分為前匹配、后匹配和模糊匹配三種。例如若數(shù)據(jù)庫中保存有abcd,adef, bda,der四個用戶名,那么模糊查找a的話,如果進(jìn)行前匹配,則只有以a開頭的用戶名符合要求,結(jié)果為abed和adef,如果進(jìn)行后匹配,則只有以a結(jié)尾的用戶名符合要求,所以結(jié)果是bda,如果進(jìn)行模糊匹配,則只要包含有字符a的均符合要求,所以結(jié)果是abed, adef和bda。目前,主要是通過PHP (英文超級文本預(yù)處理語言)加MYSQL (—種小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng))的形式來保存、查找用戶名。但是,這種結(jié)構(gòu)只能在用戶量較小時滿足應(yīng)用,原因在于當(dāng)需要進(jìn)行后匹配模糊搜索時,可以利用MYSQL中的索引功能快速定位到符合條件的記錄上,但是,如果需要進(jìn)行前匹配模糊搜索或者模糊匹配搜索,基于MYSQL的索引原理無法快速的定位至符合條件的記錄上,此時需要進(jìn)行全表檢索,在全表檢索過程中,數(shù)據(jù)庫處于被鎖定的狀態(tài),針對數(shù)據(jù)庫的其他請求均無法進(jìn)行。當(dāng)用戶量較大(如千萬級別)時,數(shù)據(jù)庫的記錄會達(dá)到百萬級別,由于全表檢索的查詢效率較低,導(dǎo)致數(shù)據(jù)庫被鎖定的時間較長,嚴(yán)重影響了數(shù)據(jù)庫的日常運(yùn)營,同時也降低了數(shù)據(jù)庫的服務(wù)質(zhì)量。因此,在搜索用戶名的過程中,如何縮短數(shù)據(jù)庫被鎖定時間,維護(hù)數(shù)據(jù)庫的正常運(yùn)營并提高其服務(wù)質(zhì)量是本領(lǐng)域技術(shù)人員亟待解決的問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種搜索用戶名的方法及系統(tǒng),在搜索用戶名的過程中,可以縮短數(shù)據(jù)庫被鎖定時間,維護(hù)數(shù)據(jù)庫的正常運(yùn)營并提高其服務(wù)質(zhì)量。為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案一種搜索用戶名的方法,包括接收包含待搜索用戶名以及搜索類型信息的指令;判斷關(guān)于所述待搜索用戶名的搜索是否存在緩存且所述緩存未過期,若是,則獲取緩存中的數(shù)據(jù)并返回,否則,利用所述搜索類型信息判斷本次搜索是否為模糊搜索;當(dāng)本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果;當(dāng)本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在所述數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。
優(yōu)選的,在上述方法中,還包括將所述數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存。優(yōu)選的,在上述方法中,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,具體為以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部的用戶名信息中進(jìn)行遍歷。優(yōu)選的,在上述方法中,在將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存之后,還包括按照用戶名對所述內(nèi)存中的全部用戶信息進(jìn)行排序,并建立索引。優(yōu)選的,在上述方法中,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,包括判斷本次搜索是否為后匹配模糊搜索; 當(dāng)本次搜索是后匹配模糊搜索時,利用所述內(nèi)存中的索引在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行直接定位;當(dāng)本次搜索不是后匹配模糊搜索時,以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行遍歷。優(yōu)選的,在上述方法中,在返回所述搜索結(jié)果后,還包括將所述搜索結(jié)果存儲于緩存中。優(yōu)選的,利用C語言進(jìn)行待搜索用戶名的模糊搜索。另一方面,本發(fā)明還提供了一種搜索用戶名的系統(tǒng),包括信息處理單元,用于將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存;指令接收單元,用于接收包含待搜索用戶名以及搜索類型信息的指令;第一判斷單元,用于判斷關(guān)于所述待搜索用戶名的搜索是否存在緩存且所述緩存未過期,獲得第一判斷結(jié)果;第一處理單元,用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索存在緩存且所述緩存未過期時,獲取緩存中的數(shù)據(jù)并返回;第二判斷單元,用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索不存在緩存或者緩存已過期時,利用所述搜索類型信息判斷本次搜索是否為模糊搜索,獲得第二判斷結(jié)果;第三處理單元,用于在所述第二判斷結(jié)果表明本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果;第四處理單元,用于在所述第二判斷結(jié)果表明本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在所述數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。優(yōu)選的,在上述系統(tǒng)中,還包括緩存處理單元,所述緩存處理單元用于將所述第三處理單元和第四處理單元獲得的搜索結(jié)果存儲于緩存中。由此可見,本發(fā)明的有益效果為本發(fā)明公開的搜索用戶名的方法和系統(tǒng)中,預(yù)先將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存中,當(dāng)需要進(jìn)行用戶名的模糊搜索時,在內(nèi)存中完成該模糊搜索,由于模糊搜索與數(shù)據(jù)庫中的表沒有關(guān)聯(lián),因此,在模糊搜索過程中數(shù)據(jù)庫不會被鎖定,從而縮短了用戶名搜索過程中數(shù)據(jù)庫被鎖定的時間;另外,在進(jìn)行模糊搜索的過程中,數(shù)據(jù)庫可以響應(yīng)其他請求,有利于維護(hù)數(shù)據(jù)庫的正常運(yùn)營及其服務(wù)質(zhì)量的提高。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明公開的一種搜索用戶名的方法的流程圖;圖2為本發(fā)明公開的另一種搜索用戶名的方法的流程圖;圖3為本發(fā)明公開的一種搜索用戶名的系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明公開的另一種搜索用戶名的系統(tǒng)的結(jié)構(gòu) 示意圖。
具體實施例方式對下文中出現(xiàn)的英文縮寫進(jìn)行說明PHP, Hypertext Preprocessor,英文超級文本預(yù)處理語言;MYSQL,一種小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。本發(fā)明公開了一種搜索用戶名的方法及系統(tǒng),在搜索用戶名的過程中,可以縮短數(shù)據(jù)庫被鎖定時間,維護(hù)數(shù)據(jù)庫的正常運(yùn)營并提高其服務(wù)質(zhì)量。為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。參見圖1,圖I為本發(fā)明公開的一種搜索用戶名的方法的流程圖。包括步驟Sll :接收包含待搜索用戶名以及搜索類型信息的指令。用戶通過客戶端的操作界面輸入待搜索用戶名,該待搜索用戶名為一個字符或者多個字符形成的字符串。搜索類型包括精確搜索、前匹配模糊搜索、后匹配模糊搜索以及模糊匹配搜索,搜索類型可以由用戶選擇,也可以由客戶端確定。步驟S12 :判斷關(guān)于該待搜索用戶名的搜索是否存在緩存且所述緩存未過期,若是,則執(zhí)行步驟S13,否則,執(zhí)行步驟S14。步驟S13 :獲取緩存中的數(shù)據(jù)并返回。在本次搜索之前,如果發(fā)生過關(guān)于該待搜索用戶名的搜索,那么會存在與之對應(yīng)的緩存,進(jìn)一步判斷該緩存是否過期,如果未過期的話,直接獲取緩存數(shù)據(jù)并返回該緩存數(shù)據(jù)。如果不存在緩存或者緩存已過期,則執(zhí)行后續(xù)搜索步驟。步驟S14:利用搜索類型信息判斷本次搜索是否為模糊搜索,若是,則執(zhí)行步驟S15,否則,執(zhí)行步驟S16。步驟S15 :在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含該待搜索用戶名的用戶名信息作為搜索結(jié)果,返回該搜索結(jié)果。預(yù)先將數(shù)據(jù)庫中存儲的全部用戶名信息加載至內(nèi)存,當(dāng)需要進(jìn)行模糊搜索時,在內(nèi)存中進(jìn)行檢索以獲取包含待搜索用戶名的用戶名信息,將獲取的用戶名信息作為搜索結(jié)果,并返回。在內(nèi)存中進(jìn)行模糊搜索的過程中,數(shù)據(jù)庫不會被鎖定,可以響應(yīng)其他請求。步驟S16 :利用數(shù)據(jù)庫本身的索引在數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含該待搜索用戶名的用戶名信息作為搜索結(jié)果,返回該搜索結(jié)果。本發(fā)明上述公開的搜索用戶名的方法中,預(yù)先將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存中,當(dāng)需要進(jìn)行用戶名的模糊搜索時,在內(nèi)存中完成該模糊搜索,由于模糊搜索與數(shù)據(jù)庫中的表沒有關(guān)聯(lián),因此,在模糊搜索過程中數(shù)據(jù)庫不會被鎖定,從而縮短了用戶名搜索過程中數(shù)據(jù)庫被鎖定的時間;另外,在進(jìn)行模糊搜索的過程中,數(shù)據(jù)庫可以響應(yīng)其他請求,有利于維護(hù)數(shù)據(jù)庫的正常運(yùn)營及其服務(wù)質(zhì)量的提高。需要說明的是,基于本發(fā)明上述公開的方法進(jìn)行用戶名搜索之前,進(jìn)一步包括將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存的步驟。當(dāng)然,在系統(tǒng)長期運(yùn)行過程中,可以按照預(yù)設(shè)周期將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存,或者當(dāng)數(shù)據(jù)庫中存儲的用戶名信息發(fā)生變更時,將變更后的用戶名信息加載至內(nèi)存,以保證內(nèi)存 與數(shù)據(jù)庫中的用戶名信息的一致性。實施中,在預(yù)存有全部用戶名信息的內(nèi)存中進(jìn)行檢索的步驟具體為以待搜索用戶名為關(guān)鍵字,在內(nèi)存預(yù)存的全部的用戶名信息中進(jìn)行遍歷。優(yōu)選的,在將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存之后,還包括按照用戶名對所述內(nèi)存中的全部用戶信息進(jìn)行排序,并建立索引的步驟。當(dāng)內(nèi)存中存在全部用戶信息的索引時,本發(fā)明公開另一種搜索用戶名的方法。參見圖2,圖2為本發(fā)明公開的另一種搜索用戶名的方法的流程圖。包括步驟S21 :接收包含待搜索用戶名以及搜索類型信息的指令。步驟S22 :判斷關(guān)于該待搜索用戶名的搜索是否存在緩存且所述緩存未過期,若是,則執(zhí)行步驟S23,否則,執(zhí)行步驟S24。步驟S23 :獲取緩存中的數(shù)據(jù)并返回。步驟S24:利用搜索類型信息判斷本次搜索是否為模糊搜索,若是,則執(zhí)行步驟S25,否則,執(zhí)行步驟S28。步驟S25:判斷本次搜索是否為后匹配模糊搜索,若是,則執(zhí)行步驟S26,否則,執(zhí)行步驟S27 ;步驟S26 :利用內(nèi)存的索引在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行直接定位,獲取包含該待搜索用戶名的用戶名信息作為搜索結(jié)果,返回搜索結(jié)果;步驟S27 :以待搜索用戶名為關(guān)鍵字,在內(nèi)存預(yù)存的全部的用戶名信息中進(jìn)行遍歷,獲取包含該待搜索用戶名的用戶名信息作為搜索結(jié)果,返回搜索結(jié)果;步驟S28 :利用數(shù)據(jù)庫本身的索引在數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含該待搜索用戶名的用戶名信息作為搜索結(jié)果,返回該搜索結(jié)果。在圖2所示搜索用戶名的方法中,當(dāng)對待搜索用戶名進(jìn)行后匹配模糊搜索時,不再采用遍歷的方式,而是利用內(nèi)存的索引進(jìn)行快速定位,以獲取包含該待搜索用戶名的用戶名信息,可以進(jìn)一步縮短模糊搜索的時間,并降低內(nèi)存的功耗。另外,上述公開的各個搜索用戶名的方法中,在進(jìn)行模糊搜索或精確搜索并返回搜索結(jié)果后,還包括將該搜索結(jié)果存儲于緩存中的步驟。如果之后執(zhí)行關(guān)于該待搜索用戶名的搜索,可以直接獲取緩存數(shù)據(jù)作為搜索結(jié)果輸出,而不需要在內(nèi)存或數(shù)據(jù)庫中進(jìn)行檢索,簡化了操作過程、縮短了搜索時間,同時降低了內(nèi)存和數(shù)據(jù)庫的功耗。需要說明的是,本發(fā)明上述公開的各個搜索用戶名的方法中,優(yōu)選C語言進(jìn)行待搜索用戶名的模糊搜索。其原因在于,C語言為底層語言,其執(zhí)行效率更為高效。當(dāng)然,也可以采用其他底層語言進(jìn)行待搜索用戶名的模糊搜索,本發(fā)明不對其進(jìn)行限定。本發(fā)明上述公開了一種搜索用戶名的方法,相應(yīng)的本發(fā)明還公開一種搜索用戶名的系統(tǒng),在搜索用戶名的過程中,可以縮短數(shù)據(jù)庫被鎖定時間,維護(hù)數(shù)據(jù)庫的正常運(yùn)營并提高其服務(wù)質(zhì)量。參見圖3,圖3為本發(fā)明公開的一種搜索用戶名的系統(tǒng)的結(jié)構(gòu)示意圖。該搜索用戶名的系統(tǒng)包括指令接收單元31、第一判斷單元32、第一處理單元33、第二判斷單元34、第三處理單元35、第四處理單元36和信息處理單元37。
其中,指令接收單元31用于接收包含待搜索用戶名以及搜索類型信息的指令。用戶通過客戶端的操作界面輸入待搜索用戶名,該待搜索用戶名為一個字符或者多個字符形成的字符串。搜索類型包括精確搜索、前匹配模糊搜索、后匹配模糊搜索以及模糊匹配搜索,搜索類型可以由用戶選擇,也可以由客戶端確定。第一判斷單元32用于判斷關(guān)于所述待搜索用戶名的搜索是否存在緩存且所述緩存未過期,獲得第一判斷結(jié)果。第一處理單元33用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索存在緩存且所述緩存未過期時,獲取緩存中的數(shù)據(jù)并返回。在本次搜索之前,如果發(fā)生過關(guān)于該待搜索用戶名的搜索,那么會存在與之對應(yīng)的緩存,進(jìn)一步判斷該緩存是否過期,如果未過期的話,直接獲取緩存數(shù)據(jù)并返回該緩存數(shù)據(jù)。如果不存在緩存或者緩存已過期,則根據(jù)具體的搜索類型在內(nèi)存或數(shù)據(jù)庫進(jìn)行后續(xù)搜索操作。第二判斷單元34用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索不存在緩存或者緩存已過期時,利用所述搜索類型信息判斷本次搜索是否為模糊搜索,獲得第二判斷結(jié)果。第三處理單元35用于在所述第二判斷結(jié)果表明本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。預(yù)先將數(shù)據(jù)庫中存儲的全部用戶名信息加載至內(nèi)存,當(dāng)需要進(jìn)行模糊搜索時,在內(nèi)存中進(jìn)行檢索以獲取包含待搜索用戶名的用戶名信息,將獲取的用戶名信息作為搜索結(jié)果,并返回。在內(nèi)存中進(jìn)行模糊搜索的過程中,數(shù)據(jù)庫不會被鎖定,可以響應(yīng)其他請求。具體的,第三處理單元35在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,具體為以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部的用戶名信息中進(jìn)行遍歷。第四處理單元36用于在所述第二判斷結(jié)果表明本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在所述數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。信息處理單元37用于將所述數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存。在首次進(jìn)行用戶名搜索之前,信息處理單元37需要將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存。當(dāng)然,在系統(tǒng)長期運(yùn)行過程中,可以按照預(yù)設(shè)周期將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存,或者當(dāng)數(shù)據(jù)庫中存儲的用戶名信息發(fā)生變更時,將變更后的用戶名信息加載至內(nèi)存,以保證內(nèi)存與數(shù)據(jù)庫中的用戶名信息的一致性。
本發(fā)明上述公開的搜索用戶名的系統(tǒng)中,預(yù)先將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存中,當(dāng)需要進(jìn)行用戶名的模糊搜索時,在內(nèi)存中完成該模糊搜索,由于模糊搜索與數(shù)據(jù)庫中的表沒有關(guān)聯(lián),因此,在模糊搜索過程中數(shù)據(jù)庫不會被鎖定,從而縮短了用戶名搜索過程中數(shù)據(jù)庫被鎖定的時間;另外,在進(jìn)行模糊搜索的過程中,數(shù)據(jù)庫可以響應(yīng)其他請求,有利于維護(hù)數(shù)據(jù)庫的正常運(yùn)營及其服務(wù)質(zhì)量的提高。優(yōu)選的,信息處理單元37還用于在將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存之后,按照用戶名對所述內(nèi)存中的全部用戶信息進(jìn)行排序,并建立索引。相應(yīng)的,第三處理單元35在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,具體為判斷本次搜索是否為后匹配模糊搜索;當(dāng)本次搜索是后匹配模糊搜索時,利用所述內(nèi)存中的索引在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行直接定位;當(dāng)本 次搜索不是后匹配模糊搜索時,以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行遍歷。此時,在對待搜索用戶名進(jìn)行后匹配模糊搜索的過程中,不再采用遍歷的方式,而是利用內(nèi)存的索引進(jìn)行快速定位,以獲取包含該待搜索用戶名的用戶名信息,可以進(jìn)一步縮短模糊搜索的時間,并降低內(nèi)存的功耗。參見圖4,圖4為本發(fā)明公開的另一種搜索用戶名的系統(tǒng)的結(jié)構(gòu)示意圖。僅就與圖3所示系統(tǒng)的區(qū)別進(jìn)行說明在圖4所示系統(tǒng)中進(jìn)一步包括緩存處理單元38,該緩存處理單元38用于將所述第三處理單元35和第四處理單元36獲得的搜索結(jié)果存儲于緩存中。在設(shè)置緩存處理單元38之后,第三處理單元35和第四處理單元36獲得的搜索結(jié)果將被存儲于緩存中,如果之后執(zhí)行關(guān)于該待搜索用戶名的搜索,可以直接獲取緩存數(shù)據(jù)作為搜索結(jié)果輸出,而不需要在內(nèi)存或數(shù)據(jù)庫中進(jìn)行檢索,簡化了操作過程、縮短了搜索時間,同時降低了內(nèi)存和數(shù)據(jù)庫的功耗。需要說明的是,在本發(fā)明上述公開的各個搜索用戶名的系統(tǒng)中,第三處理單元35基于C語言實現(xiàn)。其原因在于,C語言為底層語言,其執(zhí)行效率更為高效。當(dāng)然,也可以采用其他底層語言進(jìn)行待搜索用戶名的模糊搜索,本發(fā)明不對其進(jìn)行限定。本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機(jī)存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
對 所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
權(quán)利要求
1.一種搜索用戶名的方法,其特征在于,包括 接收包含待搜索用戶名以及搜索類型信息的指令; 判斷關(guān)于所述待搜索用戶名的搜索是否存在緩存且所述緩存未過期,若是,則獲取緩存中的數(shù)據(jù)并返回,否則,利用所 述搜索類型信息判斷本次搜索是否為模糊搜索; 當(dāng)本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果;當(dāng)本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在所述數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括將所述數(shù)據(jù)庫中的全部用戶名信息 加載至內(nèi)存。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,具體為 以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部的用戶名信息中進(jìn)行遍歷。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,在將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存之后,還包括按照用戶名對所述內(nèi)存中的全部用戶信息進(jìn)行排序,并建立索引。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,包括 判斷本次搜索是否為后匹配模糊搜索; 當(dāng)本次搜索是后匹配模糊搜索時,利用所述內(nèi)存中的索引在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行直接定位; 當(dāng)本次搜索不是后匹配模糊搜索時,以所述待搜索用戶名為關(guān)鍵字,在所述內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行遍歷。
6.根據(jù)權(quán)利要求I所述的方法,其特征在于,在返回所述搜索結(jié)果后,還包括將所述搜索結(jié)果存儲于緩存中。
7.根據(jù)權(quán)利要求I所述的方法,其特征在于,利用C語言進(jìn)行待搜索用戶名的模糊搜索。
8.一種搜索用戶名的系統(tǒng),其特征在于,包括 信息處理單元,用于將數(shù)據(jù)庫中的全部用戶名信息加載至內(nèi)存; 指令接收單元,用于接收包含待搜索用戶名以及搜索類型信息的指令; 第一判斷單元,用于判斷關(guān)于所述待搜索用戶名的搜索是否存在緩存且所述緩存未過期,獲得第一判斷結(jié)果; 第一處理單元,用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索存在緩存且所述緩存未過期時,獲取緩存中的數(shù)據(jù)并返回; 第二判斷單元,用于在所述第一判斷結(jié)果表明關(guān)于所述待搜索用戶名的搜索不存在緩存或者緩存已過期時,利用所述搜索類型信息判斷本次搜索是否為模糊搜索,獲得第二判斷結(jié)果; 第三處理單元,用于在所述第二判斷結(jié)果表明本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果;第四處理單元,用于在所述第二判斷結(jié)果表明本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在所述數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含所述待搜索用戶名的用戶名信息作為搜索結(jié)果,返回所述搜索結(jié)果。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,還包括緩存處理單元,所述緩存處理單元用于將所述第三處理單元和第四處理單元獲得的搜索結(jié)果存儲于緩存中。
全文摘要
本發(fā)明公開了一種搜索用戶名的方法,包括接收包含待搜索用戶名以及搜索類型信息的指令;判斷關(guān)于待搜索用戶名的搜索是否存在緩存且該緩存未過期,若是,則獲取緩存中的數(shù)據(jù)并返回,否則,利用搜索類型信息判斷本次搜索是否為模糊搜索;當(dāng)本次搜索是模糊搜索時,在內(nèi)存預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含待搜索用戶名的用戶名信息作為搜索結(jié)果并返回;當(dāng)本次搜索不是模糊搜索時,利用數(shù)據(jù)庫本身的索引在數(shù)據(jù)庫預(yù)存的全部用戶名信息中進(jìn)行檢索,獲取包含待搜索用戶名的用戶名信息作為搜索結(jié)果并返回。本發(fā)明公開的方法,縮短了數(shù)據(jù)庫被鎖定的時間,有利于維護(hù)數(shù)據(jù)庫的正常運(yùn)營及其服務(wù)質(zhì)量的提高。本發(fā)明還公開了一種搜索用戶名的系統(tǒng)。
文檔編號G06F17/30GK102682068SQ201210051169
公開日2012年9月19日 申請日期2012年3月1日 優(yōu)先權(quán)日2012年3月1日
發(fā)明者沈文策 申請人:沈文策