專利名稱:一種檢索方法及檢索系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及計算機通信技術,特別涉及一種檢索方法及檢索系統(tǒng)。
背景技術:
隨著計算機通信技術以及互聯(lián)網(wǎng)技術的發(fā)展,互聯(lián)網(wǎng)絡的信息資源成指數(shù)增長,通過互聯(lián)網(wǎng)絡檢索并獲取相關信息越來越成為人們生活以及工作中不可或缺的一部分,如何有效進行檢索,獲取用戶所需信息也就成為了亟待解決的問題,以下簡要介紹兩種常用的應用于搜索檢索端的檢索方法。第一種檢索方法為騰訊soso的long connection packer&unpacker,屬于輕量級網(wǎng)絡協(xié)議框架,long connection pack&upack采用〈key, value〉鍵值對方式實現(xiàn)檢索,客戶端與檢索服務器預先設置各檢索字段對應的鍵(key)及鍵值(value)對,例如,當客戶端向檢索服務器發(fā)送檢索請求包時,假設檢索條件中包含三個參數(shù),三個參數(shù)對應的鍵分別為A、B、C,根據(jù)客戶端和檢索服務器預先預定的32比特整型值的鍵值,獲取三個參數(shù)對應的鍵值,分別為:keyA、keyB、keyC,這樣,根據(jù)與檢索服務器預先協(xié)商好的檢索請求包格式,向檢索服務器發(fā)送的檢索請求包格式可以如下:包頭(32bit)+〈A,keyA>+〈B,keyB>+〈C,keyC>檢索服務器接收到檢索請求包后,首先解析包頭信息,根據(jù)解析得到的包頭信息校驗檢索請求包的合法性及長度;其次,根據(jù)與客戶端預先協(xié)商好的檢索請求包格式對接收的檢索請求包進行匹配,如果匹配不成功,丟棄該檢索請求包,如果匹配成功,依次取出上述三個參數(shù)對應的鍵值(keyA,keyB, keyC);然后,根據(jù)鍵值進行檢索,獲取檢索請求的內容。第二種檢索方法為谷歌(google)的協(xié)議緩存(proto buf),也屬于輕量級網(wǎng)絡協(xié)議框架,是google提出的一種與語言無關、平臺無關、擴展性好的用于通信協(xié)議、數(shù)據(jù)存儲的結構化數(shù)據(jù)串行化方法,基于二進制,支持多語言(C++、Java、Python),支持結構化數(shù)據(jù)的序列化傳輸。通過下載并安裝proto buf軟件,通過適配文件(jce文檔)定義可序列化的數(shù)據(jù)結構,以對檢索字段進行序列化,并為每個數(shù)據(jù)結構定義Reader和Writer,通信雙方(客戶端和檢索服務器)共用相同的Reader和Writer,檢索服務器根據(jù)共用的Reader進行匹配處理,如果匹配不成功,丟棄該數(shù)據(jù)結構,如果匹配成功,根據(jù)序列化的檢索字段進行檢索,獲取檢索請求的內容。由上述可見,現(xiàn)有的檢索方法,兩者對于匹配不成功的數(shù)據(jù)結構,都直接進行丟棄。舉例來說,如果客戶端在數(shù)據(jù)結構中增加序列化的檢索字段,則檢索服務器在匹配時會造成匹配失敗,從而將檢索請求包丟棄,導致無法進行檢索,使得檢索的效率較低;進一步地,對于long connection packer&unpacker,由于需要采用〈key, value〉鍵值對,會造成大量〈key,value)鍵值對的出現(xiàn),而且,鍵及鍵值需要預先定義,使得每次增刪協(xié)議字段,需要客戶端和檢索服務器同步協(xié)議字段對應的鍵值對,不利于版本發(fā)布,尤其是跨部門的合作,檢索的通用性以及可擴展性較低;而且,鍵值的定義也會造成數(shù)據(jù)定義的急劇膨脹,給維護造成極大困擾。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提出一種檢索方法,提高檢索的效率。本發(fā)明的另一目的在于提出一種檢索系統(tǒng),提高檢索的效率。為達到上述目的,本發(fā)明提供了一種檢索方法,該方法包括: 解析來自客戶端的檢索請求包,獲取包頭內容以及包體內容,所述包頭內容為所述客戶端根據(jù)預先協(xié)商的校驗策略生成的校驗值,所述包體內容為所述客戶端根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對用戶輸入的檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理得到的;根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。所述校驗策略包括如下中的至少一種:循環(huán)冗余校驗CRC結合包頭合法性校驗、消息摘要算法第五版MD5校驗以及海明校驗。所述校驗策略為循環(huán)冗余校驗CRC結合包頭合法性校驗,所述方法還包括:根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表;獲取檢索請求包長度信息值;將所述加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值作為校驗值。所述根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同包括:A,判斷解析得到的包頭內容中攜帶的檢索請求包長度信息值是否不大于預先設置的檢索請求包長度閾值,如果是,執(zhí)行步驟B,如果否,判斷重新生成的校驗值與包頭內容中攜帶的校驗值不相同;B,根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表;C,判斷生成的CRC碼表與包頭內容中攜帶的CRC碼表是否相同,如果相同,則判斷重新生成的校驗值與包頭內容中攜帶的校驗值相同,如果不相同,則判斷重新生成的校驗值與包頭內容中攜帶的校驗值不相同。一種檢索系統(tǒng),該檢索系統(tǒng)包括:客戶端以及檢索服務器,其中,客戶端,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容,根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內容,并將檢索請求包發(fā)送至檢索服務器;檢索服務器,用于接收檢索請求包,解析獲取包頭內容以及包體內容,根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。
所述客戶端包括:數(shù)據(jù)結構處理單元、校驗值生成單元以及封裝單元,其中,數(shù)據(jù)結構處理單元,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容;校驗值生成單元,用于根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內各;封裝單元,用于封裝包頭內容和包體內容,生成檢索請求包并發(fā)送至檢索服務器。所述校驗值生成單元包括:CRC校驗值生成子單元以及檢索請求包長度信息值獲取子單元,其中,CRC校驗值生成子單元,用于根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表,將該加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值獲取子單元獲取的檢索請求包長度信息值作為檢索請求包的包頭內容。所述檢索服務器包括解析單元、校驗值校驗單元、匹配單元以及檢索單元,其中,解析單元,用于接收檢索請求包,解析獲取包頭內容;校驗值校驗單元,用于根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,通知解析單元解析包體內容;匹配單元,用于將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值;檢索單元,用于根據(jù)匹配成功的檢索字段對應的鍵值進行檢索,獲取檢索結果。所述校驗值校驗單元包括:CRC校驗值校驗子單元以及檢索請求包長度校驗子單元,其中,檢索請求包長度校驗子單元,用于對解析得到的包頭內容中攜帶的檢索請求包長度信息值進行校驗,如果檢索請求包長度信息值不大于預先設置的檢索請求包長度閾值,通知CRC校驗值校驗子單元;CRC校驗值校驗子單元,用于根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表,確定生成的CRC碼表與包頭內容中攜帶的CRC碼表相同,通知解析單元解析包體內容。由上述的技術方案可見,本發(fā)明實施例提供的一種檢索方法及檢索系統(tǒng),解析來自客戶端的檢索請求包,獲取包頭內容以及包體內容,所述包頭內容為所述客戶端根據(jù)預先協(xié)商的校驗策略生成的校驗值,所述包體內容為所述客戶端根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對用戶輸入的檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理得到的;根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。這樣,通過對包頭內容進行校驗,可以有效防止非法請求和端口掃描工具等無效連接的訪問;對檢索請求包的包體內容中包含的各檢索字段分別進行匹配,忽略匹配不成功的檢索字段,根據(jù)匹配成功的檢索字段對應的鍵值并進行檢索,提高了檢索的效率。
圖1為本發(fā)明實施例檢索方法的流程示意圖。圖2為本發(fā)明實施例適配文件以及數(shù)據(jù)結構的結構示意圖。圖3為本發(fā)明實施例的檢索請求包的包頭結構示意圖。圖4為本發(fā)明實施例對包體內容進行匹配的示意圖。圖5為本發(fā)明實施例檢索方法的應用場景示意圖。圖6為本發(fā)明實施例檢索系統(tǒng)的結構示意圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖及具體實施例對本發(fā)明作進一步地詳細描述?,F(xiàn)有技術中,longconnection packer&unpacker 以及 Google proto buf 按照預先的協(xié)商進行匹配處理,使得檢索的容錯性、通用性以及可擴展性較差。本發(fā)明實施例中,通過借鑒proto buf和long connection packer&unpacker,提出一種基于搜索引擎在線檢索端的輕量級網(wǎng)絡協(xié)議的檢索方法,多業(yè)務檢索時采用“數(shù)據(jù)結構序列化”方式提供檢索服務,以簡單的源碼方式提供了更為輕量級的序列化工具,可以同檢索服務的源碼一起編譯,無需安裝;通過統(tǒng)一各業(yè)務部門業(yè)務(檢索字段)對應的鍵,以鍵值標識業(yè)務,并在進行匹配處理時,對于檢索請求包中匹配成功的字段,進行檢索,而忽略檢索請求包中匹配不成功的字段,從而提升社區(qū)搜索的多業(yè)務檢索的通用性和可擴展性。圖1為本發(fā)明實施例檢索方法的流程示意圖。參見圖1,該流程包括:步驟101,解析來自客戶端的檢索請求包,獲取包頭內容以及包體內容,所述包頭內容為所述客戶端根據(jù)預先協(xié)商的校驗策略生成的校驗值,所述包體內容為所述客戶端根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對用戶輸入的檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理得到的;本步驟中,客戶端根據(jù)用戶輸入的檢索字段獲取對應的鍵值,并進行序列化的數(shù)據(jù)結構處理作為檢索請求包的包體內容;不同的業(yè)務對應的鍵相同,不同的鍵值對應不同業(yè)務的檢索字段,這樣,有效減少了〈key,value)鍵值對,在每次增刪協(xié)議字段時,只需要客戶端和檢索服務器同步協(xié)議字段對應的鍵值即可,可利于版本發(fā)布,通過各部門的不同業(yè)務采用相同的鍵,有助于跨部門的合作;進一步地,鍵值的定義不會造成數(shù)據(jù)定義的急劇膨脹,方便維護。進行序列化的數(shù)據(jù)結構處理具體包括:A01、獲取預先設置的適配文件;本步驟中,采用proto buf的協(xié)議方式,獲取proto buf的Java加密擴展(jce)適配文件,并在后續(xù)通過jce文檔(jce適配文件)生成協(xié)議代碼。A02、根據(jù)獲取的適配文件定義的序列化的數(shù)據(jù)結構,對檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理。本步驟中,適配文件定義可序列化的數(shù)據(jù)結構,客戶端后臺提供用于解析jce文檔的詞法和語法分析器,通過jce文檔將檢索字段對應的鍵及鍵值解析成對應的高級語言的源碼,對應于可序列化的數(shù)據(jù)結構。
圖2為本發(fā)明實施例適配文件以及數(shù)據(jù)結構的結構示意圖。參見圖2,適配文件為jce文檔,包括多個結構體,例如,結構體A、結構體B等,其中,optional表示可選字段,required表示必選字段,用戶可以在jce文檔中自定義字段的默認賦值,對于optional字段,通信雙方可以不做強制約束,而采取默認值填充,從而使得通過optional和required字段的設置,可以實現(xiàn)協(xié)議雙方異步發(fā)布而不導致協(xié)議錯亂。關于jce文檔的詳細描述,具體可參見相關技術文獻,在此不再贅述。通過jce文檔,可以自動將檢索字段對應的鍵及鍵值解析成對應的高級語言的源碼,如圖2中右部分所示。本發(fā)明實施例中,jce文檔為每個數(shù)據(jù)結構定義公共的輕量級序列化工具Reader和Writer (jce類庫),通信雙方共用相同的Reader和Writer,按標識的序列號進行二進制“讀”或者“寫”,并實現(xiàn)網(wǎng)絡序和本機序互轉。校驗策略可以采用循環(huán)冗余校驗(CRC,Cyclic Redundancy Check)結合包頭合法性校驗、消息摘要算法第五版(MD5, Message Digest Algorithm)校驗或海明校驗等。當校驗策略采用CRC結合包頭合法性校驗時,生成校驗值具體包括:All、根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表;本步驟中,客戶端與檢索服務器預先協(xié)商加密字段,并分別存儲該加密字段。A12、獲取檢索請求包長度信息值;A13、將該加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值作為校驗值。圖3為本發(fā)明實施例的檢索請求包的包頭結構示意圖。參見圖3,包頭包括包頭加密部分以及檢索請求包長度信息值部分,其中,包頭加密部分由固定的加密字段、隨機數(shù)以及經(jīng)CRC編碼生成的CRC碼表組成。步驟102,根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;本步驟中,如果包頭內容中攜帶的校驗值與重新生成的校驗值不相同,則丟棄該檢索請求包,這樣,通過對接收的包頭內容進行校驗,可以有效拒絕非法請求的無效連接以及端口掃描工具無效連接的檢索訪問。根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同具體包括:A21、判斷解析得到的包頭內容中攜帶的檢索請求包長度信息值是否大于預先設置的檢索請求包長度閾值,如果是,丟棄該檢索請求包,否則,執(zhí)行步驟A22 ;A22、根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表;本步驟中,也可以先確定解析得到的包頭內容中攜帶的加密字段與自身存儲的與該客戶端協(xié)商的加密字段一致,才將該加密字段與隨機數(shù)進行CRC編碼的流程。A23、判斷生成的CRC碼表與包頭內容中攜帶的CRC碼表是否相同,如果相同,判斷重新生成的校驗值與包頭內容中攜帶的校驗值相同,否則,判斷重新生成的校驗值與包頭內容中攜帶的校驗值不相同,丟棄該檢索請求包。本步驟中,判斷新生成的CRC碼表與接收到的CRC碼表是否相同,如果相同,則校驗成功,否則,確定包體數(shù)據(jù)錯誤,從而丟棄該檢索請求包。也就是說,重新生成的校驗值包括:檢索請求包長度閾值、加密字段、隨機數(shù)以及根據(jù)加密字段與隨機數(shù)進行CRC編碼生成的CRC碼表。本發(fā)明實施例中,由于每次請求的隨機數(shù)是不確定的,導致生成的CRC碼表也是不唯一的,因而,二重校驗能拒絕大部分非法請求和端口掃描工具等無效連接的訪問。步驟103,確定重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。本步驟中,對檢索請求包的包體內容中包含的各檢索字段分別進行匹配,忽略匹配不成功的檢索字段,根據(jù)匹配成功的檢索字段對應的鍵值并進行檢索,而不是在檢索請求包的包體內容中包含的各檢索字段中有一項沒有匹配成功時,即將該檢索請求包丟棄,從而提聞了檢索的容錯性。圖4為本發(fā)明實施例對包體內容進行匹配的示意圖。參見圖4,包含字段O和字段I的結構體A是客戶端與檢索服務器預先協(xié)商的數(shù)據(jù)結構,假設客戶端在發(fā)送的檢索請求包中新增字段2,即在結構體A中新增字段2,客戶端通過Writer,將新增字段2對應的鍵值、長度、選項等信息序列化,通過網(wǎng)絡通信發(fā)送至檢索服務器,檢索服務器調用Reader,讀取檢索請求包,對結構體A中包含的各字段進行匹配,當讀取到字段2時,檢測到該字段2與預先協(xié)商的數(shù)據(jù)結構不匹配,確定該字段屬于可選字段后,則將該字段丟棄,并以字段O和字段I進行檢索獲取檢索結果,從而不影響本次通信,使得對于社區(qū)搜索的多業(yè)務檢索具有較高的檢索效率、良好的通用性和可擴展性。圖5為本發(fā)明實施例檢索方法的應用場景示意圖。不同的業(yè)務,例如,空間業(yè)務檢索、校友業(yè)務檢索、無線業(yè)務檢索,共用相同的key(fiXed key),用于打包,每個檢索請求包共用相同的頭部信息和版本信息用作校驗;key對應的value(wup buf)不同,用以區(qū)分不同的業(yè)務,不同的業(yè)務采用相同的網(wǎng)絡協(xié)議框架獲取不同的協(xié)議內容并靈活處理,檢索后,經(jīng)過wup協(xié)議打包后將相應的業(yè)務檢索結果返回給客戶端,不同的檢索結果對應不同的wup buf,例如,返回給空間的結果為:包頭〈key, qzone_buf> ;返回給校友的結果為:包頭〈key, alumnus_buf>。其中,包頭和key均為固定,包體內容因業(yè)務不同而不同。圖6為本發(fā)明實施例檢索系統(tǒng)的結構示意圖。參見圖6,該檢索系統(tǒng)包括:客戶端以及檢索服務器,其中,客戶端,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容,根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內容,并將檢索請求包發(fā)送至檢索服務器;本發(fā)明實施例中,不同的鍵值對應不同業(yè)務的檢索字段,不同的業(yè)務對應的鍵相同,這樣,有效減少了〈key,value)鍵值對,在每次增刪協(xié)議字段時,只需要客戶端和檢索服務器同步協(xié)議字段對應的鍵值即可,利于版本發(fā)布,各部門的不同業(yè)務采用相同的鍵,有助于跨部門的合作。校驗策略可以采用循環(huán)冗余校驗(CRC,Cyclic Redundancy Check)結合包頭合法性校驗、消息摘要算法第五版(MD5,Message Digest Algorithm)校驗或海明校驗等。檢索服務器,用于接收檢索請求包,解析獲取包頭內容以及包體內容,根據(jù)所述預先協(xié)商的校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;確定重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。本發(fā)明實施例中,通過對接收的包頭內容進行校驗,可以有效拒絕非法請求的無效連接以及端口掃描工具無效連接的檢索訪問,對檢索請求包的包體內容中包含的各檢索字段分別進行匹配,忽略匹配不成功的檢索字段,根據(jù)匹配成功的檢索字段對應的鍵值并進行檢索,而不是在檢索請求包的包體內容中包含的各檢索字段中有一項沒有匹配成功時,即將該檢索請求包丟棄,從而提高了檢索的效率及容錯性。其中,客戶端包括:數(shù)據(jù)結構處理單元、校驗值生成單元以及封裝單元(圖中未示出),其中,數(shù)據(jù)結構處理單元,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容;校驗值生成單元,用于根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內各;封裝單元,用于封裝包頭內容和包體內容,生成檢索請求包并發(fā)送至檢索服務器。校驗值生成單元包括:CRC校驗值生成子單元以及檢索請求包長度信息值獲取子單元(圖中未示出),其中,CRC校驗值生成子單元,用于根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表,將該加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值獲取子單元獲取的檢索請求包長度信息值作為檢索請求包的包頭內容。檢索服務器包括解析單元、校驗值校驗單元、匹配單元以及檢索單元(圖中未示出),其中,解析單元,用于接收檢索請求包,解析獲取包頭內容;校驗值校驗單元,用于根據(jù)預先協(xié)商的校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;確定重新生成的校驗值與包頭內容中攜帶的校驗值相同,通知解析單元解析包體內容;匹配單元,用于將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值;檢索單元,用于根據(jù)匹配成功的檢索字段對應的鍵值進行檢索,獲取檢索結果。校驗值校驗單元包括:CRC校驗值校驗子單元以及檢索請求包長度校驗子單元(圖中未示出),其中,檢索請求包長度校驗子單元,用于對解析得到的包頭內容中攜帶的檢索請求包長度信息值進行校驗,如果檢索請求包長度信息值不大于預先設置的檢索請求包長度閾值,通知CRC校驗值校驗子單元;本發(fā)明實施例中,如果檢索請求包長度信息值大于預先設置的檢索請求包長度閾值,則丟棄該檢索請求包。CRC校驗值校驗子單元,用于根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表,確定生成的CRC碼表與包頭內容中攜帶的CRC碼表相同,通知解析單元解析包體內容。 本發(fā)明實施例中,CRC校驗值校驗子單元也可以先確定解析得到的包頭內容中攜帶的加密字段與自身存儲的與該客戶端協(xié)商的加密字段一致,才將該加密字段與隨機數(shù)進行CRC編碼的流程。以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換以及改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種檢索方法,其特征在于,該方法包括: 解析來自客戶端的檢索請求包,獲取包頭內容以及包體內容,所述包頭內容為所述客戶端根據(jù)預先協(xié)商的校驗策略生成的校驗值,所述包體內容為所述客戶端根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對用戶輸入的檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理得到的; 根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同; 如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。
2.如權利要求1所述的方法,其特征在于,所述校驗策略包括如下中的至少一種:循環(huán)冗余校驗CRC結合包頭合法性校驗、消息摘要算法第五版MD5校驗以及海明校驗。
3.如權利要求2所述的方法,其特征在于,所述校驗策略為循環(huán)冗余校驗CRC結合包頭合法性校驗,所述方法還包括: 根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表; 獲取檢索請求包長度信息值; 將所述加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值作為校驗值。
4.如權利要求2所述的方法,其特征在于,所述根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同包括: A,判斷解析得到的包頭內容中攜帶的檢索請求包長度信息值是否不大于預先設置的檢索請求包長度閾值,如果是,執(zhí)行步驟B,如果否,判斷重新生成的校驗值與包頭內容中攜帶的校驗值不相同; B,根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表; C,判斷生成的CRC碼表與包頭內容中攜帶的CRC碼表是否相同,如果相同,則判斷重新生成的校驗值與包頭內容中攜帶的校驗值相同,如果不相同,則判斷重新生成的校驗值與包頭內容中攜帶的校驗值不相同。
5.一種檢索系統(tǒng),其特征在于,該檢索系統(tǒng)包括:客戶端以及檢索服務器,其中, 客戶端,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容,根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內容,并將檢索請求包發(fā)送至檢索服務器; 檢索服務器,用于接收檢索請求包,解析獲取包頭內容以及包體內容,根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。
6.如權利要求5所述的檢索系統(tǒng),其特征在于,所述客戶端包括:數(shù)據(jù)結構處理單元、校驗值生成單元以及封裝單元,其中, 數(shù)據(jù)結構處理單元,用于接收用戶輸入的檢索字段,獲取檢索字段對應的鍵值,并根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對所述鍵值進行序列化的數(shù)據(jù)結構處理,獲取檢索請求包的包體內容; 校驗值生成單元,用于根據(jù)預先協(xié)商的校驗策略,生成校驗值作為檢索請求包的包頭內容; 封裝單元,用于封裝包頭內容和包體內容,生成檢索請求包并發(fā)送至檢索服務器。
7.如權利要求6所述的檢索系統(tǒng),其特征在于,所述校驗值生成單元包括:CRC校驗值生成子單元以及檢索請求包長度信息值獲取子單元,其中, CRC校驗值生成子單元,用于根據(jù)預先協(xié)商的加密字段,與一隨機數(shù)進行CRC編碼,生成CRC碼表,將該加密字段、隨機數(shù)、CRC碼表以及檢索請求包長度信息值獲取子單元獲取的檢索請求包長度信息值作為檢索請求包的包頭內容。
8.如權利要求5至7任一項所述的檢索系統(tǒng),其特征在于,所述檢索服務器包括解析單元、校驗值校驗單元、匹配單元以及檢索單元,其中, 解析單元,用于接收檢索請求包,解析獲取包頭內容; 校驗值校驗單元,用于根據(jù)所述校驗策略,重新生成校驗值,判斷重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;如果重新生成的校驗值與包頭內容中攜帶的校驗值相同,通知解析單元解析包體內容; 匹配單元,用于將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值; 檢索單元,用于根據(jù)匹配成功的檢索字段對應的鍵值進行檢索,獲取檢索結果。
9.如權利要求8所述的檢索系統(tǒng),其特征在于,所述校驗值校驗單元包括:CRC校驗值校驗子單元以及檢索請求包長度校驗子單元,其中, 檢索請求包長度校驗子單元,用于對解析得到的包頭內容中攜帶的檢索請求包長度信息值進行校驗,如果檢索請求包長度信息值不大于預先設置的檢索請求包長度閾值,通知CRC校驗值校驗子單元; CRC校驗值校驗子單元,用于根據(jù)解析得到的包頭內容中攜帶的加密字段與隨機數(shù),進行CRC編碼,生成CRC碼表,確定生成的CRC碼表與包頭內容中攜帶的CRC碼表相同,通知解析單元解析包體內容。
全文摘要
本發(fā)明公開了一種檢索方法及檢索系統(tǒng)。該方法包括解析來自客戶端的檢索請求包,獲取包頭內容以及包體內容,所述包頭內容為所述客戶端根據(jù)預先協(xié)商的校驗策略生成的校驗值,所述包體內容為所述客戶端根據(jù)預先設置的適配文件定義的序列化的數(shù)據(jù)結構,對用戶輸入的檢索字段對應的鍵值進行序列化的數(shù)據(jù)結構處理得到的;根據(jù)所述校驗策略,重新生成校驗值,如果重新生成的校驗值與包頭內容中攜帶的校驗值是否相同;確定重新生成的校驗值與包頭內容中攜帶的校驗值相同,將包體內容與所述定義的序列化的數(shù)據(jù)結構進行匹配,獲取匹配成功的檢索字段對應的鍵值并進行檢索。應用本發(fā)明,可以提高檢索的效率。
文檔編號G06F17/30GK103176970SQ20111042904
公開日2013年6月26日 申請日期2011年12月20日 優(yōu)先權日2011年12月20日
發(fā)明者何建國, 付劍波, 譚強, 文勖 申請人:騰訊科技(深圳)有限公司