片段到低元共現(xiàn)片段頻次的修正。修正后同一個共現(xiàn)片段不會出現(xiàn)重復(fù)計算頻次的現(xiàn)象,精確了多元共現(xiàn)片段頻次的計數(shù)。
[0193]S104:根據(jù)多元共現(xiàn)片段的元數(shù)及頻次選取一個或一個以上多元共現(xiàn)片段。
[0194]為了利用較少的存儲空間存儲盡可能多的內(nèi)容,使存儲的內(nèi)容更全面,需要對S103中的多元共現(xiàn)片段進行選取,選中其中的一部分進行存儲。對于S103中修正了頻次的多元共現(xiàn)片段,一般隨著片段數(shù)元數(shù)的增加,共現(xiàn)片段的個數(shù)會逐漸減少,為了保證存儲的內(nèi)容能夠全面,在選取過程中,個數(shù)較少的高元共現(xiàn)片段一般可以全部選中;而低元共現(xiàn)片段由于總體數(shù)量較多,對于存儲空間一定的情況來說,不能存儲太多這樣的低元共現(xiàn)片段,而需要依據(jù)一定的原則存儲。一般原則可以是根據(jù)多元共現(xiàn)片段的元數(shù)和頻次,存儲低元共現(xiàn)片段中元數(shù)相對較多的低元共現(xiàn)片段。
[0195]所述的高元共現(xiàn)片段與低元共現(xiàn)片段的劃分,需要根據(jù)對實際數(shù)據(jù)進行分析來實現(xiàn)。通??梢愿鶕?jù)實際的數(shù)據(jù)設(shè)定一個預(yù)設(shè)值,將共現(xiàn)片段的元數(shù)小于或等于所述預(yù)設(shè)值的可以設(shè)置為低元共現(xiàn)片段,將共現(xiàn)片段的元數(shù)大于所述預(yù)設(shè)值的可以設(shè)置為高元共現(xiàn)片段。
[0196]對低元共現(xiàn)片段的選擇方法可以是下述方法中的任意一種或幾種的組合:
[0197](I)對共現(xiàn)片段的頻次設(shè)置一個閾值進行過濾。當共現(xiàn)片段的頻次大于或者等于設(shè)置的閾值時,該共現(xiàn)片段可以被選中;當共現(xiàn)片段的頻次小于設(shè)定的閾值時,該共現(xiàn)片段可以不被選中。
[0198](2)可以設(shè)定在低元共現(xiàn)片段中需要選取的總數(shù)目P,將所有的低元共現(xiàn)片段按照頻次進行降序排列,然后可以選取排列的共現(xiàn)片段中前面的P個多元共現(xiàn)片段;所述P為正整數(shù),P的取值小于低元共現(xiàn)片段的總個數(shù)。
[0199](3)可以按照共現(xiàn)片段元數(shù)的不同,分別進行排序,排序后再分別選取排序靠前的共現(xiàn)片段。例如,排序后可以再分別選取每個元數(shù)的共現(xiàn)片段中排在前q%的共現(xiàn)片段,所述q的范圍包括:0〈q〈100。
[0200]例如:
[0201]經(jīng)過步驟S3處理得到的多元共現(xiàn)片段中,最高元數(shù)為五元,且五元共現(xiàn)片段有1000個,四元共現(xiàn)片段有2000個,三元共現(xiàn)片段有5000個,二元共現(xiàn)片段有10000個。
[0202]按照上述選取方法,由于元數(shù)較高的五元共現(xiàn)片段和四元共現(xiàn)片段的數(shù)目較少,所以五元共現(xiàn)片段和四元共現(xiàn)片段可以全部采用。而三元共現(xiàn)片段和二元共現(xiàn)片段數(shù)目較多,需要進行篩選。
[0203]所述三元共現(xiàn)片段和二元共現(xiàn)片段篩選的方法可以是下述方法中的任意一種:
[0204](I)對共現(xiàn)片段的頻次設(shè)置一個閾值,假設(shè)為500000,那么三元共現(xiàn)片段和二元共現(xiàn)片段中頻次大于或等于500000的可以被選中,而頻次小于500000的可以不被選中。
[0205](2)可以設(shè)定低元共現(xiàn)片段需要選取的總數(shù)目為2000條,則將所述的三元共現(xiàn)片段和二元共現(xiàn)片段按照頻次進行降序排列,可以選擇頻次較多的前2000條多元共現(xiàn)片段。
[0206](3)可以將三元共現(xiàn)片段按照出現(xiàn)的次數(shù)降序排列,選取前X條,例如1000條;二元的共現(xiàn)片段也可以降序排列,選取前Y條,例如500條。
[0207](4)可以對三元共現(xiàn)片段按照出現(xiàn)的次數(shù)降序排列,可以選取前1000條,對二元共現(xiàn)片段出現(xiàn)的次數(shù)可以設(shè)置一個閾值50000,出現(xiàn)次數(shù)大于50000的可以被選中。
[0208]具體的選取方法可以通過實驗的方式,結(jié)合機器的內(nèi)存大小和搜索引擎的提升效果等因素進行綜合考慮,確定選取方法。
[0209]在對低元共現(xiàn)片段進行篩選后,可以被選中的低元共現(xiàn)片段和可以全部采用的高元共現(xiàn)片段的集合即為選取的多元共現(xiàn)片段。
[0210]S105:將選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果存儲起來。
[0211]在選取得到了多元共現(xiàn)片段以后,通常將選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果存儲起來,這樣可以為后續(xù)的查詢請求快速提供查詢結(jié)果。
[0212]該步驟存儲的方法可以是:將選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果都存放在內(nèi)存中或高速緩沖存儲器(cache )等存儲速度較快的存儲介質(zhì)中。這樣當再來查詢請求時,可以根據(jù)存儲的多元共現(xiàn)片段表及其對應(yīng)的結(jié)果快速地返回查詢結(jié)果。
[0213]該步驟存儲的方法還可以是:先對選取的多元共現(xiàn)片段建立倒排索引,產(chǎn)生倒排列表。所述的倒排列表可以用于記錄有哪些查詢結(jié)果包含了該共現(xiàn)片段。再將所述倒排列表及共現(xiàn)片段的查詢結(jié)果存放在相同的或者不同的存儲器中,所述的存儲器可以是內(nèi)存、高速緩沖存儲器(cache)或磁盤等存儲器。這樣當新的查詢請求包含了存儲的共現(xiàn)片段時,可以根據(jù)倒排列表快速查找到查詢結(jié)果的存儲地址,再根據(jù)所述存儲地址找到查詢結(jié)果,快速返回查詢結(jié)果。
[0214]本申請的上述基于查詢?nèi)罩镜臄?shù)據(jù)處理方法,先對獲取到的查詢?nèi)罩具M行共現(xiàn)片段的頻次統(tǒng)計和頻次修正,再根據(jù)多元共現(xiàn)片段的元數(shù)和頻次選取出一個或多個多元共現(xiàn)片段,將選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果存儲起來。所述的多元共現(xiàn)片段的各個片段包括檢索詞、檢索短語和檢索條件,各個片段可以是查詢請求中相鄰的片段,也可以是不相鄰的片段,所以共現(xiàn)片段的內(nèi)容更加全面。修正后的共現(xiàn)片段的頻次能夠真實反映出查詢請求中各個共現(xiàn)片段的頻次。多元共現(xiàn)片段的選取同時考慮了多元共現(xiàn)片段的元數(shù)和頻次,實現(xiàn)了利用盡量少的存儲空間存儲盡量多的查詢請求和查詢結(jié)果,使得存儲的內(nèi)容更全面。所以,同時再次接收到查詢請求時,利用本申請的數(shù)據(jù)處理方法存儲的數(shù)據(jù)的命中率得到提高。
[0215]圖2是本申請基于查詢?nèi)罩镜臄?shù)據(jù)處理系統(tǒng)實施例的組成結(jié)構(gòu)圖。如圖2所示,所述基于查詢?nèi)罩镜臄?shù)據(jù)存儲系統(tǒng)包括:查詢?nèi)罩精@取模塊101、共現(xiàn)片段頻次統(tǒng)計模塊102、共現(xiàn)片段頻次修正模塊103、多元共現(xiàn)片段選取模塊104和存儲模塊105。其中,
[0216]所述查詢?nèi)罩精@取模塊101,可以用于獲取預(yù)定時間段搜索引擎的部分或全部的查詢?nèi)罩尽?br>[0217]所述共現(xiàn)片段頻次統(tǒng)計模塊102,可以用于對所述查詢?nèi)罩局胁樵冋埱蟮亩嘣铂F(xiàn)片段的頻次進行統(tǒng)計。
[0218]圖3是本申請共現(xiàn)片段頻次統(tǒng)計模塊實施例的模塊組成結(jié)構(gòu)示意圖。如圖3所示,所述共現(xiàn)片段頻次統(tǒng)計模塊102,包括標識設(shè)置模塊1021、頻次計數(shù)模塊1022。
[0219]所述標識設(shè)置模塊1021,可以用于對所述查詢?nèi)罩局械拿恳徊樵冋埱笤O(shè)置一個標識。所述標識具有唯一'I"生。
[0220]所述頻次計數(shù)模塊1022,可以用于根據(jù)所述標識統(tǒng)計具有相同多元共現(xiàn)片段的查詢請求的個數(shù),即統(tǒng)計每一多元共現(xiàn)片段出現(xiàn)的頻次。
[0221]所述的多元共現(xiàn)片段可以包括2?N元共現(xiàn)片段,所述N為查詢?nèi)罩局胁樵冋埱蟮亩嘣铂F(xiàn)片段的最大片段元數(shù)。所述共現(xiàn)片段頻次統(tǒng)計模塊102對查詢?nèi)罩局械??N元共現(xiàn)片段進行頻次統(tǒng)計,可以利用map-reduce方法進行分析,包括:map (映射)階段和reduce (化簡)階段。其中,
[0222]所述的map階段,先對每個query設(shè)置一個標識。所述的標識具有唯一'丨生。所述標識的選取方法可以是計算每個query的md5值或SHA值或RIPEMD值等。所述的標識可以用query id來表示??梢詫⒚總€query中共現(xiàn)片段的內(nèi)容和該query的query id映射成一組新的鍵值對。所述鍵值對中,共現(xiàn)片段的內(nèi)容可以作為鍵值對的key,query id可以作為鍵值對的value。
[0223]所述的reduce階段,可以先將map階段輸出的內(nèi)容相同的共現(xiàn)片段的鍵值對進行合并,再統(tǒng)計各相同共現(xiàn)片段出現(xiàn)的次數(shù),并輸出統(tǒng)計后的鍵值對。所述鍵值對中,共現(xiàn)片段的內(nèi)容可以作為鍵值對的key,共現(xiàn)片段的頻次可以作為鍵值對的value。
[0224]所述共現(xiàn)片段頻次修正模塊103,可以用于對共現(xiàn)片段頻次統(tǒng)計模塊102中統(tǒng)計好頻次的共現(xiàn)片段進行多元共現(xiàn)片段頻次的修正,使共現(xiàn)片段的頻次計數(shù)精準。所述多元共現(xiàn)片段的元數(shù)可以小于N。
[0225]圖4是本申請共現(xiàn)片段頻次修正模塊實施例的組成結(jié)構(gòu)示意圖。如圖4所示,所述共現(xiàn)片段頻次修正模塊103包括:排序模塊1031、減法模塊1032。
[0226]所述排序模塊1031,可以用于將共現(xiàn)片段頻次統(tǒng)計模塊102中統(tǒng)計好頻次的共現(xiàn)片段從高元到低元進行排序。
[0227]所述減法模塊1032,可以用于對于k元共現(xiàn)片段頻次的修正,在k元共現(xiàn)片段的頻次基礎(chǔ)上減去包含了 k元共現(xiàn)片段內(nèi)容的k+Ι元共現(xiàn)片段的頻次,并作為k元共現(xiàn)片段的頻次,所述k可以為(N-1)?2中的任一整數(shù)。
[0228]所述共現(xiàn)片段頻次修正模塊103對多元共現(xiàn)片段頻次進行修正可以利用map-reduce方法來實現(xiàn):
[0229]在map階段,首先統(tǒng)計共現(xiàn)片段頻次統(tǒng)計模塊102中得到的k元共現(xiàn)片段及其頻次,然后統(tǒng)計包含了 k元共現(xiàn)片段內(nèi)容的k+Ι元共現(xiàn)片段的頻次,將上述k+Ι元共現(xiàn)片段的頻次改為相應(yīng)值的負值,再將上述k元和k+Ι元共現(xiàn)片段內(nèi)容及頻次作為鍵值對進行輸出。所述鍵值對中,k元或k+Ι元共現(xiàn)片段的內(nèi)容可以作為value,頻次可以作為key。
[0230]在reduce階段,可以將map階段輸出的k元共現(xiàn)片段的頻次和包含了所述k元共現(xiàn)片段內(nèi)容的k+Ι元共現(xiàn)片段的頻次進行疊加,作為k元共現(xiàn)片段的頻次。將疊加后的k元共現(xiàn)片段內(nèi)容及頻次作為鍵值對進行輸出。所述鍵值對中,k元共現(xiàn)片段的內(nèi)容可以作為value,疊加后的頻次可以作為key。
[0231]所述多元共現(xiàn)片段選取模塊104,可以用于對多元共現(xiàn)片段頻次修正模塊103得到的多元共現(xiàn)片段根據(jù)多元共現(xiàn)片段的元數(shù)和頻次,選取多元共現(xiàn)片段。
[0232]圖5是本申請多元共現(xiàn)片段選取模塊實施例的組成結(jié)構(gòu)示意圖。如圖5所示,所述多兀共現(xiàn)片段選取模塊104,包括:第一設(shè)置模塊1041、第一選取模塊1042。
[0233]所述第一設(shè)定模塊1041,可以用于根據(jù)第一預(yù)設(shè)值,將共現(xiàn)片段的元數(shù)小于或等于所述第一預(yù)設(shè)值的設(shè)置為低元共現(xiàn)片段,將共現(xiàn)片段的元數(shù)大于所述第一預(yù)設(shè)值的可以設(shè)置為高元共現(xiàn)片段。所述第一預(yù)設(shè)值可以根據(jù)實際的實驗數(shù)據(jù)進行選取。
[0234]所述第一選取模塊1042,可以用于根據(jù)多元根據(jù)共現(xiàn)片段的元數(shù)及頻次選取所述低元共現(xiàn)片段和所述高元共現(xiàn)片段。
[0235]圖6是本申請第一選取模塊實施例的組成結(jié)構(gòu)示意圖。如圖6所示,所述第一選取模塊1042,又包括:低元共現(xiàn)片段選取模塊10421、高元共現(xiàn)片段選取模塊10422。
[0236]所述高元共現(xiàn)片段選取模塊10422,可以用于選取所述高元共現(xiàn)片段。
[0237]所述低元共現(xiàn)片段選取模塊10421,可以采用下述方法中的任意一種或幾種的組合選取所述低元共現(xiàn)片段:
[0238](I)可以對共現(xiàn)片段的頻次設(shè)置一個閾值進行過濾。當共現(xiàn)片段的頻次大于或者等于設(shè)置的閾值時,該共現(xiàn)片段可以被選中;當共現(xiàn)片段的頻次小于設(shè)定的閾值時,該共現(xiàn)片段可以不被選中;
[0239](2)可以設(shè)定在低元共現(xiàn)片段中需要選取的總數(shù)目P,將所有的低元共現(xiàn)片段按照頻次進行降序排列,然后選取排列的共現(xiàn)片段中前面的P個多元共現(xiàn)片段;所述P為正整數(shù),P的取值小于低元共現(xiàn)片段的總個數(shù);
[0240](3)可以按照共現(xiàn)片段元數(shù)的不同,分別進行排序,排序后再分別選取排序靠前的共現(xiàn)片段。例如,可以排序后再分別選取每個元數(shù)的共現(xiàn)片段中排在前q%的共現(xiàn)片段,所述q的范圍包括:0〈q〈100。
[0241]所述存儲模塊105,可以用于將多元共現(xiàn)片段選取模塊104選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果存儲起來。
[0242]所述存儲模塊105,對多元共現(xiàn)片段選取模塊104選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果進行存儲時,存儲的方法可以是下述方法中的任意一種:
[0243](I)可以將選取的多元共現(xiàn)片段及其對應(yīng)的查詢結(jié)果都存放在內(nèi)存中或高速緩沖存儲器中;
[0244](2)可以先對選取的多元共現(xiàn)片段建立倒排索引,產(chǎn)生到排列表。所述的倒排列表可以用于記錄有哪些查詢結(jié)果包含了該共現(xiàn)片段。再將所述倒排列表及共現(xiàn)片段對應(yīng)的查詢結(jié)果存放在相同的或者不同的存儲器中,所述的存儲器可以是內(nèi)存、高速緩沖存儲器或磁盤等存儲器。
[0245]本申請基于查詢?nèi)罩镜臄?shù)據(jù)處理系統(tǒng)與本申請的數(shù)據(jù)處理方法相對應(yīng),可以實現(xiàn)本申請的數(shù)據(jù)處理方法,利用盡量少的存儲空間存儲盡量多的查詢請求和查詢結(jié)果,存儲的內(nèi)容更全面。再次接收到查詢請求時,利用本申請的數(shù)據(jù)處理系統(tǒng)存儲的數(shù)據(jù)的命中率得到提聞。
[0246]圖7是利用本申請數(shù)據(jù)處理方法的數(shù)據(jù)進行查詢的方法流程圖。如圖7所示,當再次接收到查詢請求時,查詢方法包括:
[0247]S201:將查詢請求的內(nèi)容和存儲的多元共現(xiàn)片段進行匹配,并篩選匹配成功的多元共現(xiàn)片段。
[0248]在接收到新的查詢請求時,可以將所述查詢請求的內(nèi)容和存儲的多元共現(xiàn)片段進行匹配,并篩選匹配成功的多元共現(xiàn)片段。
[0249]首先根據(jù)接收到的查詢請求,可以列舉出所述查詢請求中的多元共現(xiàn)片段,可以將所述多元共現(xiàn)片段存放在未處理的集合中,從低元到高元依次將多