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