一種基于字符段熱更新的混合索引方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明適用于搜索引擎領(lǐng)域,提供了一種基于字符段熱更新的混合索引方法,所述混合索引方法包括以下步驟:A、抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息;B、對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理;C、將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ);D、對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算;E、將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。通過本方法,有效的節(jié)約了大量的硬件資源,極大的增加了安全的可靠性,做到了實(shí)時(shí)對商品數(shù)據(jù)信息的快速更新,提高了更新的速度,節(jié)約了成本。
【專利說明】 一種基于字符段熱更新的混合索引方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于搜索引擎領(lǐng)域,尤其涉及一種基于字符段熱更新的混合索引方法及系統(tǒng)。
【背景技術(shù)】
[0002]現(xiàn)階段通常做法是使用大量的硬件資源條件對相對重要的信息進(jìn)行一定程度上的更新,但是無法全面實(shí)時(shí),而且代價(jià)昂貴。
[0003]現(xiàn)有的搜索引擎做法是對有修改的文檔,整個(gè)文檔刪除,然后重新建立新的修改后的文檔,原因是倒排索引“修改”的代價(jià)十分昂貴,雖然有些現(xiàn)有庫提供了修改的API,但是到底層實(shí)現(xiàn)上還是整個(gè)文檔刪除,再整個(gè)文檔創(chuàng)建個(gè)新的,因?yàn)橐话銓?shí)踐證明這種方式代價(jià)比“修改倒排索引”來更新一個(gè)字段更經(jīng)濟(jì),這種方式在購物搜索這一特定領(lǐng)域帶來了很大的問題,因?yàn)殡娚虄r(jià)格戰(zhàn)等原因,商品價(jià)格一日三變已經(jīng)是常態(tài),而且價(jià)格等字段是商品最重要的字段之一,如果用戶看見價(jià)格是100 (假設(shè)這是上午搶購的價(jià)格),點(diǎn)擊到對方網(wǎng)站看見的卻是200(搶購結(jié)束恢復(fù)原價(jià))用戶體驗(yàn)將會(huì)很差。而如果要跟上這樣的速度,假設(shè)每個(gè)索引有720萬商品,每2個(gè)小時(shí)更新一遍,則相當(dāng)于每秒需要?jiǎng)h除2000個(gè)文檔,再創(chuàng)建2000個(gè)新文檔的索引,這對硬件資源(尤其是cpu和硬盤)是極大的壓力。服務(wù)器的cpu設(shè)計(jì)上就是可以持續(xù)高效工作的,所以只是耗電量的問題,但是硬盤是難以承受7*24小時(shí)的持續(xù)碎片寫入和刪除的除了需要許多硬盤組成陣列來處理這樣的巨大1壓力之外,還會(huì)極大降低硬盤壽命,而硬盤損壞概率上升,硬盤損壞的代價(jià)可能是數(shù)據(jù)丟失,是非常嚴(yán)重的。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種基于字符段熱更新的混合索引方法及系統(tǒng),旨在解決硬件設(shè)備損失嚴(yán)重、可靠性低、成本高的問題。
[0005]本發(fā)明是這樣實(shí)現(xiàn)的,一種基于字符段熱更新的混合索引方法,所述混合索引方法包括以下步驟:
A、抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息;
B、對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理;
C、將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ);
D、對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算;
E、將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。
[0006]本發(fā)明的進(jìn)一步技術(shù)方案是:所述步C中包括以下步驟:
Cl、將分類整理的商品的唯一標(biāo)識(shí)和價(jià)格數(shù)據(jù)信息寫入內(nèi)存中建立的哈希表內(nèi)存儲(chǔ); C2、將分類整理的商品數(shù)據(jù)信息完成的寫入硬盤中進(jìn)行完整的存儲(chǔ)。
[0007]本發(fā)明的進(jìn)一步技術(shù)方案是:所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。
[0008]本發(fā)明的進(jìn)一步技術(shù)方案是:所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔通過唯一標(biāo)識(shí)進(jìn)行關(guān)聯(lián)。
[0009]本發(fā)明的進(jìn)一步技術(shù)方案是:所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。
[0010]本發(fā)明的另一目的在于提供一種基于字符段熱更新的混合索引系統(tǒng),該混合索引系統(tǒng)包括:
抓取模塊,用于抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息;
數(shù)據(jù)整理模塊,用于對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理;
存儲(chǔ)模塊,用于將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ); 搜索運(yùn)算模塊,用于對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算;
建立連接模塊,用于將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。
[0011]本發(fā)明的進(jìn)一步技術(shù)方案是:所述存儲(chǔ)模塊包括:
寫入內(nèi)存單元,用于將分類整理的商品的唯一標(biāo)識(shí)和價(jià)格數(shù)據(jù)信息寫入內(nèi)存中建立的哈希表內(nèi)存儲(chǔ);
寫入硬盤單元,用于將分類整理的商品數(shù)據(jù)信息完成的寫入硬盤中進(jìn)行完整的存儲(chǔ)。
[0012]本發(fā)明的進(jìn)一步技術(shù)方案是:所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。
[0013]本發(fā)明的進(jìn)一步技術(shù)方案是:所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔通過唯一標(biāo)識(shí)進(jìn)行關(guān)聯(lián)。
[0014]本發(fā)明的進(jìn)一步技術(shù)方案是:所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。
[0015]本發(fā)明的有益效果是:通過本方法,有效的節(jié)約了大量的硬件資源,極大的增加了安全的可靠性,做到了實(shí)時(shí)對商品數(shù)據(jù)信息的快速更新,提高了更新的速度,節(jié)約了成本。
【專利附圖】
【附圖說明】
[0016]圖1是本發(fā)明實(shí)施例提供的基于字符段熱更新的混合索引方法的流程圖;
圖2是本發(fā)明實(shí)施例提供的基于字符段熱更新的混合索引系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0017]附圖標(biāo)記:10_抓取模塊20-數(shù)據(jù)整理模塊30-存儲(chǔ)模塊40-搜索運(yùn)算模塊50-建立連接模塊。
[0018]圖1示出了本發(fā)明提供的基于字符段熱更新的混合索引方法的流程圖,其詳述如下:
步驟SI,利用網(wǎng)頁抓取工具在電子商務(wù)網(wǎng)站的網(wǎng)頁上對所有羅列的商品數(shù)據(jù)信息進(jìn)行抓取,在抓取中自動(dòng)搜索網(wǎng)上的電商網(wǎng)站,只要是電商網(wǎng)站上存在的商品信息全部抓取,抓取到商品信息后進(jìn)入步驟S2。
[0019]步驟S2,將在電商網(wǎng)站上抓取的大量商品數(shù)據(jù)信息按著種類進(jìn)行劃分,在對每種商品中進(jìn)行詳細(xì)的劃分,按照名稱、價(jià)格、用途、功能等等進(jìn)行分類,在整理的過程中將商品的規(guī)格、型號也全部整理,其中將在電商上的評價(jià)也會(huì)抓取過來進(jìn)行整理。
[0020]步驟S3,將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ),在內(nèi)存中存儲(chǔ)的商品數(shù)據(jù)只是有名稱和價(jià)格,其余的信息均不存在,在硬盤中存儲(chǔ)的商品數(shù)據(jù)時(shí)完整的信息,所有的標(biāo)牌信息都在里面,所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。對商品的價(jià)格實(shí)行頻繁更新策略,盡量快地更新。對商品的完整信息(商品介紹等)實(shí)行較慢的更新(如一周一次)。當(dāng)更新商品價(jià)格時(shí),不對倒排表做任何操作,直接在內(nèi)存更新哈希表。而更新完整信息時(shí)才更新硬盤上的索引。因?yàn)閮?nèi)存速度遠(yuǎn)遠(yuǎn)高于硬盤幾百倍,而且內(nèi)存的電讀寫并沒有次數(shù)和頻率的問題,無論多大的1壓力都不會(huì)影響壽命。所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔的順序一致。這種部分冗余混合索引是在原有索引結(jié)構(gòu)的基礎(chǔ)上,通過在內(nèi)存中外掛一個(gè)哈希表,排列順序跟硬盤上的文檔順序一致,但是因?yàn)楣1淼逆I(key)里只存儲(chǔ)文檔地址,哈希表的值域(value)中存儲(chǔ)相關(guān)的頻繁修改的字段值(如價(jià)格),所以這份外掛的哈希索引比硬盤上的索引要小得多(比如對于1000萬商品,硬盤上的索引超過30個(gè)G,而這個(gè)外掛哈希索引理論大小只有(4字節(jié)(地址長度)+ 4字節(jié)(價(jià)格))* 1000萬=80兆)實(shí)際因?yàn)槠渌~外開銷,小于100兆,放在內(nèi)存中是沒有什么太大壓力的。
[0021]步驟S4,對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算,其中無視內(nèi)存中的數(shù)據(jù),直接在硬盤的倒排索引中完成搜索運(yùn)算,當(dāng)搜索完成時(shí),根據(jù)實(shí)際需要(雖然搜索結(jié)果可能有1000頁數(shù)據(jù),但是實(shí)際顯示給用戶看的只有某一頁或幾頁)取出命中的文檔地址,因?yàn)閮?nèi)存哈希表的鍵就是這個(gè)地址,所以可以直接用這個(gè)地址去內(nèi)存中把價(jià)格取出,并在內(nèi)存中把這個(gè)價(jià)格和硬盤索引中的其他內(nèi)容合并成完整的數(shù)據(jù),展示給用戶。這個(gè)操作的時(shí)間復(fù)雜度為O (N),但是因?yàn)橛脩粼谝淮嗡阉髦袑?shí)際會(huì)查看的商品數(shù)通常很少(實(shí)踐證實(shí)在20-50之間多,極少超過100),這個(gè)數(shù)量級上,內(nèi)存操作的O (N)時(shí)間復(fù)雜度是可以忽略的(現(xiàn)有內(nèi)存速度下遠(yuǎn)低于I毫秒無法測量時(shí)間)多,極少超過100),而這個(gè)數(shù)量級上,內(nèi)存操作的O(N)時(shí)間復(fù)雜度是可以忽略的(現(xiàn)有內(nèi)存速度下遠(yuǎn)低于I毫秒無法測量時(shí)間)。
[0022]步驟S5,將整個(gè)混合索引系統(tǒng)中內(nèi)存中的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立其索引連接,這樣我們在搜索時(shí)就會(huì)直接提取出內(nèi)存中的最新的數(shù)據(jù)信息,當(dāng)需要對商品的完整信息進(jìn)行閱讀時(shí)從硬盤中直接抽取出來。所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。在進(jìn)行模糊搜索的時(shí)候利用名稱進(jìn)行搜索的準(zhǔn)確率得到大大的提升,而用價(jià)格范圍值搜索時(shí)的準(zhǔn)確度相對名稱搜索準(zhǔn)確度相對較低。因?yàn)橥鈷斓墓K饕齼?nèi)的價(jià)格和硬盤倒排索引內(nèi)的價(jià)格存在冗余和沖突,所以按價(jià)格精確搜索可能存在部分錯(cuò)誤的搜索結(jié)果。因?yàn)橘徫锼阉黝I(lǐng)域的特點(diǎn),根據(jù)已有用戶行為分析發(fā)現(xiàn)根本不存在精確去搜索某一個(gè)具體價(jià)格的商品的這種用戶行為,對價(jià)格的搜索都是分價(jià)格段的區(qū)間搜索,比如500元以下的,或者3000-5000元之間的這種搜索。本文描述的方法,付出的代價(jià)幾乎可以忽略,而優(yōu)點(diǎn)卻是巨大的。
[0023]通過本方法,有效的節(jié)約了大量的硬件資源,極大的增加了安全的可靠性,做到了實(shí)時(shí)對商品數(shù)據(jù)信息的快速更新,提高了更新的速度,節(jié)約了成本。
[0024]圖2示出了本發(fā)明提供的基于字符段熱更新的混合索引系統(tǒng)的結(jié)構(gòu)框圖,其中,該混合索引系統(tǒng)包括:
抓取模塊10,用于抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息;
數(shù)據(jù)整理模塊20,用于對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理;
存儲(chǔ)模塊30,用于將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ);
搜索運(yùn)算模塊40,用于對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算;
建立連接模塊50,用于將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。
[0025]所述存儲(chǔ)模塊30包括:
寫入內(nèi)存單元,用于將分類整理的商品的名稱和價(jià)格數(shù)據(jù)信息寫入內(nèi)存中建立的哈希表內(nèi)存儲(chǔ);
寫入硬盤單元,用于將分類整理的商品數(shù)據(jù)信息完成的寫入硬盤中進(jìn)行完整的存儲(chǔ)。
[0026]所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。
[0027]所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔的順序一致。
[0028]所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。
[0029]通過本方法,有效的節(jié)約了大量的硬件資源,極大的增加了安全的可靠性,做到了實(shí)時(shí)對商品數(shù)據(jù)信息的快速更新,提高了更新的速度,節(jié)約了成本。
[0030]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于字符段熱更新的混合索引方法,其特征在于,所述混合索引方法包括以下步驟: A、抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息; B、對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理; C、將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ); D、對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算; E、將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。
2.根據(jù)權(quán)利要求1所述的混合索引方法,其特征在于,所述步C中包括以下步驟: Cl、將分類整理的商品的唯一標(biāo)識(shí)和價(jià)格數(shù)據(jù)信息寫入內(nèi)存中建立的哈希表內(nèi)存儲(chǔ); C2、將分類整理的商品數(shù)據(jù)信息完成的寫入硬盤中進(jìn)行完整的存儲(chǔ)。
3.根據(jù)權(quán)利要求2所述的混合索引方法,其特征在于,所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。
4.根據(jù)權(quán)利要求3所述的混合索引方法,其特征在于,所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔通過唯一標(biāo)識(shí)進(jìn)行關(guān)聯(lián)。
5.根據(jù)權(quán)利要求4所述的混合索引方法,其特征在于,所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。
6.一種基于字符段熱更新的混合索引系統(tǒng),其特征在于,該混合索引系統(tǒng)包括: 抓取模塊,用于抓取電商網(wǎng)頁上的商品數(shù)據(jù)信息; 數(shù)據(jù)整理模塊,用于對抓取的商品數(shù)據(jù)信息的數(shù)據(jù)進(jìn)行分類整理; 存儲(chǔ)模塊,用于將分類整理的商品的數(shù)據(jù)信息分別寫入內(nèi)存和硬盤中進(jìn)行數(shù)據(jù)存儲(chǔ); 搜索運(yùn)算模塊,用于對硬盤中的商品數(shù)據(jù)信息在倒排索引中完成搜索運(yùn)算; 建立連接模塊,用于將內(nèi)存中存儲(chǔ)的數(shù)據(jù)與硬盤中的存儲(chǔ)數(shù)據(jù)建立索引連接。
7.根據(jù)權(quán)利要求6所述的混合索引系統(tǒng),其特征在于,所述存儲(chǔ)模塊包括: 寫入內(nèi)存單元,用于將分類整理的商品的唯一標(biāo)識(shí)和價(jià)格數(shù)據(jù)信息寫入內(nèi)存中建立的哈希表內(nèi)存儲(chǔ); 寫入硬盤單元,用于將分類整理的商品數(shù)據(jù)信息完成的寫入硬盤中進(jìn)行完整的存儲(chǔ)。
8.根據(jù)權(quán)利要求7所述的混合索引系統(tǒng),其特征在于,所述商品數(shù)據(jù)信息的更新采用兩種更新策略,對內(nèi)存哈希表中的價(jià)額數(shù)據(jù)采用實(shí)時(shí)數(shù)據(jù)更新,對硬盤中的完整數(shù)據(jù)采用較慢更新并同時(shí)更新硬盤上的索引。
9.根據(jù)權(quán)利要求8所述的混合索引系統(tǒng),其特征在于,所述內(nèi)存中哈希表中的數(shù)據(jù)信息文檔與硬盤中數(shù)據(jù)信息文檔通過唯一標(biāo)識(shí)進(jìn)行關(guān)聯(lián)。
10.根據(jù)權(quán)利要求9所述的混合索引系統(tǒng),其特征在于,所述搜索時(shí)采用名稱搜索結(jié)果準(zhǔn)確度大于采用價(jià)格搜索結(jié)果準(zhǔn)確度。
【文檔編號】G06Q30/00GK104408097SQ201410651046
【公開日】2015年3月11日 申請日期:2014年11月17日 優(yōu)先權(quán)日:2014年11月17日
【發(fā)明者】謝立歐, 杜衛(wèi)紅, 鄭永樂, 羅愿 申請人:深圳市比一比網(wǎng)絡(luò)科技有限公司