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