一種用于文檔索引的文檔id壓縮方法
【專利摘要】本發明提供一種用于文檔索引的文檔ID壓縮方法,包括以下步驟:對需要進行索引的文檔進行預處理;對經過倒序排序的文檔ID進行壓縮處理;對經過壓縮處理的數據進行檢索。本發明提供的用于文檔索引的文檔ID壓縮方法,在保持檢索精確度的同時,使用現代計算機多核CPU的資源優勢,并行處理單次檢索請求,大幅提升單次及并發檢索性能,給用戶以良好的檢索體驗。
【專利說明】一種用于文檔索引的文檔ID壓縮方法
【技術領域】
[0001]本發明涉及一種壓縮方法,具體涉及一種用于文檔索引的文檔ID壓縮方法。
【背景技術】
[0002]目前文本檢索系統形式多樣,但都是根據索引結構進行檢索流程優化,按照索引方式基本都可以歸結為兩大類:
[0003](I)按照相關度對文檔ID預排序:
[0004]首先在創建文檔倒排索引的時候,進行部分索引詞與文檔ID的相關度計算,按照相關度計算結果對相同索引詞下的文檔ID進行排序;在文檔檢索期間,根據用戶給定的檢索詞,取出相應索引詞下的文檔ID序列,由于文檔ID序列是按照索引詞的相關度進行預排序,檢索程序需要記錄下所有已讀取的文檔ID信息,以備稍后與其它索引詞下的文檔ID進行匹配;最終對完全與用戶輸入的索引詞相匹配的結果進行進一步的相關度計算,給出最終結果;
[0005](2)按照自然序對文檔ID預排序:
[0006]在創建文檔倒排索引的時候,對相同索引詞下的文檔ID,按照文檔ID的自然序進行預排序;在文檔檢索期間,根據給定的檢索詞,同時取出不同索引詞下的文檔ID序列,按照多路歸并算法對文檔ID進行歸并,得出與用戶輸入完全匹配的文檔ID,最后進行相關度計算,給出最終結果。
[0007]基于相關度預排序索引進行的檢索,由于預排序只是針對單個索引詞進行,當多個索引詞聯合查詢的時候,首先命中的結果,不一定就是排序最靠前的結果,而且由于是非文檔ID自然有序,導致檢索過程中需要保留大量臨時數據緩沖,直接使檢索性能以及準確度大幅下降。
[0008]而基于文檔ID自然序進行預排序的索引,在檢索期間不要保留大量的臨時緩沖數據,但由于前期沒有進行相關度方面的計算,導致用戶最需要的結果極有可能在文檔ID序列的最后才能被檢索到,這就需要對整個文檔集合進行檢索,這個特性對于超大數據集的檢索系統來說是致命的缺陷,會導致隨著數據集的線性增長使檢索性能大幅下降。
【發明內容】
[0009]為了克服上述現有技術的不足,本發明提供一種用于文檔索引的文檔ID壓縮方法,在保持檢索精確度的同時,使用現代計算機多核CPU的資源優勢,并行處理單次檢索請求,大幅提升單次及并發檢索性能,給用戶以良好的檢索體驗。
[0010]為了實現上述發明目的,本發明采取如下技術方案:
[0011]本發明提供一種用于文檔索引的文檔ID壓縮方法,所述方法包括以下步驟:
[0012]步驟1:對需要進行索引的文檔進行預處理;
[0013]步驟2:對經過倒序排序的文檔ID進行壓縮處理;
[0014]步驟3:對經過壓縮處理的數據進行檢索。
[0015]所述步驟I包括以下步驟:
[0016]步驟1-1:分配文檔ID給需要預處理的文檔;
[0017]分配的文檔ID需要4字節的無符號整型數表示,最大可以表示4294967295個文檔;
[0018]步驟1-2:將所有已分配文檔ID的文檔進行倒序排序。
[0019]所述步驟2包括以下步驟:
[0020]步驟2-1:對經過倒序排序的文檔ID進行自然序升序排序;
[0021]步驟2-2:對自然升序排列的文檔ID對65535進行求模計算,對求模的結果以65535為數值區間進行分段,形成多分段有序的文檔ID序列;
[0022]步驟2-3:對每個分段內的每個文檔ID分別進行對65535的求模計算,記錄求模結果,作為壓縮后的數據;
[0023]步驟2-4:任取分段內文檔ID對65535進行求商操作,記錄求商結果,放到本分段的首端,作為文檔索引的一部分,以備在檢索的時候解壓本段數據使用。
[0024]所述步驟3包括以下步驟:
[0025]步驟3-1:對用戶輸入檢索串進行預處理;
[0026]步驟3-2:根據索引詞編碼,檢索對應索引信息,同時得到對應索引信息的文檔ID分段情況;
[0027]步驟3-3:文檔ID的篩選。
[0028]所述步驟3-1包括以下步驟:
[0029]步驟3-1-1:對用戶輸入檢索串進行整理,形成標準檢索詞序列;
[0030]步驟3-1-2:將標準檢索詞序列進行編碼,將多個檢索詞轉換為索引詞編碼。
[0031]所述步驟3-2中,不同索引信息的文檔ID分段情況以及索引詞編碼數量,決定本次檢索應索引信息的并發檢索線程數量,以利于資源的利用率。
[0032]所述步驟3-3包括以下步驟:
[0033]步驟3-3-1:根據之前決定的并發檢索線程數量以及不同索引信息的文檔ID分段情況,對屬于相同邏輯關系的文檔ID序列進行等分,并放入相應的檢索結構保存;
[0034]步驟3-3-2:將檢索結構分別放入不同的并發檢索線程,同時開始檢索工作;
[0035]步驟3-3-3:在單一的檢索線程內部,對命中的文檔ID取出相應相關度信息,進行最終的相關度計算,并按照相關度計算結果放入并發檢索線程內部的堆結構,根據最大或最小淘汰原則和以前的命中的文檔ID進行相關度比較,淘汰相應的文檔ID ;
[0036]步驟3-3-4:等待所有的參與并發檢索的并發檢索線程完成后,按照用戶要求輸出全局堆結構中的數據,此時輸入的文檔ID數據即為最終的檢索結果。
[0037]根據權利要求7所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-3-3中,當單一的并發檢索線程內部完成所有工作后,遍歷輸出堆結構中的所有數據,包括文檔ID以及文檔ID所對應的相關度,并將輸出的文檔ID及相關度放入全局的堆結構,按照用戶的排序要求以及文檔ID相關度,進行堆內的文檔ID淘汰。
[0038]與現有技術相比,本發明的有益效果在于:
[0039]1.基于現代計算機多核CPU,充分利用CPU資源,提高檢索性能;
[0040]2.以往的并行化檢索只是實現了對單一時間內的不同檢索實施并行化,對于單次檢索大數據量的檢索性能低下,而本發明將并行化概念用于單次檢索中,對于單次的大數據量檢索,在性能的提聞上有飛躍性的提升;
[0041]3.本發明可以在效率上有大幅的提升,從而可以支持在檢索過程中進行更復雜的相關度技術,且不需要保存非命中數據的相關度信息,從而大量的節約了寶貴的內存資源,同時可以為用戶提供更好的相關度排序;
[0042]4.本發明對用戶的檢索請求,每次都是進行全庫查詢,不存在相關度計算不準確的問題,對數據的查全率,準確率提供了更好的支持;
[0043]5.經過大數據量的網頁數據測試,涵蓋資訊,論壇,小說,技術文檔絕大部分常見數據,對于在庫容量4000萬文檔ID的基本下,平均單次的檢索時間可以控制在20ms以下,而針對于常用高頻詞的邏輯與運算,在高頻詞文檔ID序列千萬數量級的情況下,可以提供單次小于80ms的高性能檢索。
【專利附圖】
【附圖說明】
[0044]圖1是本發明實施中經過壓縮處理的數據檢索流程圖;
[0045]圖2是本發明實施中檢索結構示意圖。
【具體實施方式】
[0046]下面結合附圖對本發明作進一步詳細說明。
[0047]本發明提供一種用于文檔索引的文檔ID壓縮方法,所述方法包括以下步驟:
[0048]步驟1:對需要進行索引的文檔進行預處理;
[0049]所述步驟I包括以下步驟:
[0050]步驟1-1:分配文檔ID給需要預處理的文檔;
[0051]分配的文檔ID需要4字節的無符號整型數表示,最大可以表示4294967295個文檔;
[0052]步驟1-2:將所有已分配文檔ID的文檔進行倒序排序。
[0053]步驟2:對經過倒序排序的文檔ID進行壓縮處理;
[0054]所述步驟2包括以下步驟:
[0055]步驟2-1:對經過倒序排序的文檔ID進行自然序升序排序;
[0056]步驟2-2:對自然升序排列的文檔ID對65535進行求模計算,對求模的結果以65535為數值區間進行分段,形成多分段有序的文檔ID序列;
[0057]步驟2-3:對每個分段內的每個文檔ID分別進行對65535的求模計算,記錄求模結果,作為壓縮后的數據;根據計算機內部對數值的表示原理,對于一個小于等于65535的數只需要兩個字節就可以完全表示,這樣通過對65535求模操作可以將使用4字節的文檔ID轉換為使用2字節的文檔ID,從而達到壓縮的目的;
[0058]步驟2-4:任取分段內文檔ID對65535進行求商操作,記錄求商結果,放到本分段的首端,作為文檔索引的一部分,以備在檢索的時候解壓本段數據使用。
[0059]步驟3:對經過壓縮處理的數據進行檢索;
[0060]所述步驟3包括以下步驟:
[0061]步驟3-1:對用戶輸入檢索串進行預處理;
[0062]如圖1和2,所述步驟3-1包括以下步驟:
[0063]步驟3-1-1:對用戶輸入檢索串進行整理,形成標準檢索詞序列;
[0064]步驟3-1-2:將標準檢索詞序列進行編碼,將多個檢索詞轉換為索引詞編碼;
[0065]步驟3-2:根據索引詞編碼,檢索對應索引信息(圖2中的索引詞編碼),同時得到對應索引信息的文檔ID分段情況(圖2中的偏移);
[0066]所述步驟3-2中,不同索引信息的文檔ID分段情況以及索引詞編碼數量,決定本次檢索應索引信息的并發檢索線程數量,以利于資源的利用率;
[0067]步驟3-3:文檔ID的篩選;
[0068]所述步驟3-3包括以下步驟:
[0069]步驟3-3-1:根據之前決定的并發檢索線程數量以及不同索引信息的文檔ID分段情況,對屬于相同邏輯關系的文檔ID序列(圖2中文檔ID列表)進行等分,并放入相應的檢索結構保存;
[0070]步驟3-3-2:將檢索結構分別放入不同的并發檢索線程,同時開始檢索工作;
[0071]步驟3-3-3:在單一的檢索線程內部,對命中的文檔ID取出相應相關度信息(圖2文檔ID附加信息),進行最終的相關度計算,并按照相關度計算結果放入并發檢索線程內部的堆結構,根據最大或最小淘汰原則和以前的命中的文檔ID進行相關度比較,淘汰相應的文檔ID ;
[0072]步驟3-3-4:等待所有的參與并發檢索的并發檢索線程完成后,按照用戶要求輸出全局堆結構中的數據,此時輸入的文檔ID數據即為最終的檢索結果。
[0073]根據權利要求7所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-3-3中,當單一的并發檢索線程內部完成所有工作后,遍歷輸出堆結構中的所有數據,包括文檔ID以及文檔ID所對應的相關度,并將輸出的文檔ID及相關度放入全局的堆結構,按照用戶的排序要求以及文檔ID相關度,進行堆內的文檔ID淘汰。
[0074]最后應當說明的是:以上實施例僅用以說明本發明的技術方案而非對其限制,所屬領域的普通技術人員參照上述實施例依然可以對本發明的【具體實施方式】進行修改或者等同替換,這些未脫離本發明精神和范圍的任何修改或者等同替換,均在申請待批的本發明的權利要求保護范圍之內。
【權利要求】
1.一種用于文檔索引的文檔ID壓縮方法,其特征在于:所述方法包括以下步驟: 步驟1:對需要進行索引的文檔進行預處理; 步驟2:對經過倒序排序的文檔ID進行壓縮處理; 步驟3:對經過壓縮處理的數據進行檢索。
2.根據權利要求1所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟I包括以下步驟: 步驟1-1:分配文檔ID給需要預處理的文檔; 分配的文檔ID需要4字節的無符號整型數表示,最大可以表示4294967295個文檔; 步驟1-2:將所有已分配文檔ID的文檔進行倒序排序。
3.根據權利要求1所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟2包括以下步驟: 步驟2-1:對經過倒序排序的文檔ID進行自然序升序排序; 步驟2-2:對自然升序排列的文檔ID對65535進行求模計算,對求模的結果以65535為數值區間進行分段,形成多分段有序的文檔ID序列; 步驟2-3:對每個分段內的每個文檔ID分別進行對65535的求模計算,記錄求模結果,作為壓縮后的數據; 步驟2-4:任取分段內文檔ID對65535進行求商操作,記錄求商結果,放到本分段的首端,作為文檔索引的一部分,以備在檢索的時候解壓本段數據使用。
4.根據權利要求1所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3包括以下步驟: 步驟3-1:對用戶輸入檢索串進行預處理; 步驟3-2:根據索引詞編碼,檢索對應索引信息,同時得到對應索引信息的文檔ID分段情況; 步驟3-3:文檔ID的篩選。
5.根據權利要求4所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-1包括以下步驟: 步驟3-1-1:對用戶輸入檢索串進行整理,形成標準檢索詞序列; 步驟3-1-2:將標準檢索詞序列進行編碼,將多個檢索詞轉換為索引詞編碼。
6.根據權利要求4所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-2中,不同索引信息的文檔ID分段情況以及索引詞編碼數量,決定本次檢索應索引信息的并發檢索線程數量,以利于資源的利用率。
7.根據權利要求4所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-3包括以下步驟: 步驟3-3-1:根據之前決定的并發檢索線程數量以及不同索引信息的文檔ID分段情況,對屬于相同邏輯關系的文檔ID序列進行等分,并放入相應的檢索結構保存; 步驟3-3-2:將檢索結構分別放入不同的并發檢索線程,同時開始檢索工作; 步驟3-3-3:在單一的檢索線程內部,對命中的文檔ID取出相應相關度信息,進行最終的相關度計算,并按照相關度計算結果放入并發檢索線程內部的堆結構,根據最大或最小淘汰原則和以前的命中的文檔ID進行相關度比較,淘汰相應的文檔ID ; 步驟3-3-4:等待所有的參與并發檢索的并發檢索線程完成后,按照用戶要求輸出全局堆結構中的數據,此時輸入的文檔ID數據即為最終的檢索結果。
8.根據權利要求7所述的用于文檔索引的文檔ID壓縮方法,其特征在于:所述步驟3-3-3中,當單一的并發檢索線程內部完成所有工作后,遍歷輸出堆結構中的所有數據,包括文檔ID以及文檔ID所對應的相關度,并將輸出的文檔ID及相關度放入全局的堆結構,按照用戶的排序要求以及文檔ID相關度,進行堆內的文檔ID淘汰。
【文檔編號】G06F17/30GK104376040SQ201410535112
【公開日】2015年2月25日 申請日期:2014年10月11日 優先權日:2014年10月11日
【發明者】張宏利, 秦飛, 高勇, 樊云紅, 郭永福 申請人:北京中搜網絡技術股份有限公司