一種非結構化數據快速檢索的系統及方法
2023-05-25 09:38:41 1
一種非結構化數據快速檢索的系統及方法
【專利摘要】本發明公開一種非結構化數據快速檢索的系統及方法,系統包括查詢處理模塊、查詢條件解析模塊、大數據存儲模塊、布隆過濾器過濾模塊、索引建立模塊和布隆過濾器構建模塊。查詢處理模塊接收應用客戶端的查詢請求,從查詢請求中獲取查詢條件,調用查詢條件解析模塊對查詢條件進行解析和改造,使用布隆過濾器代替原始查詢條件中的分詞條件,生成基於布隆過濾器過濾記錄標識的新查詢條件;通過該條件查詢數據記錄表;對布隆過濾器及其他查詢條件進行測試,並將符合全部查詢條件的數據記錄作為查詢結果,返回給應用客戶端。通過本發明的系統及方法,能夠更加快速的判斷一條數據記錄是否符合分詞條件,並且消耗更少的資源。
【專利說明】一種非結構化數據快速檢索的系統及方法
【技術領域】
[0001]本申請屬於信息【技術領域】,尤其涉及一種在大數據量存儲中對非結構化數據進行快速檢索的系統及方法。
【背景技術】
[0002]隨著網際網路的快速發展,網頁、博客、社交網絡、即時通信軟體等應用迅速普及,產生了大量的非結構化文本數據,如何對這些文本數據進行快速有效的檢索,成為了業界研究的熱點。網際網路搜尋引擎通過對文本數據進行分詞操作,建立從分詞到文本標識的反向索引,通過這些索引,實現根據分詞進行文本檢索。雖然通過反向索引能夠進行文本數據的檢索,但是當用戶檢索的時候包含多個檢索條件,或者檢索條件中包含多個檢索詞的時候,需要進行大量的文本標識的比對工作,對系統資源的消耗比較大,性能較低。
【發明內容】
[0003]本專利申請要解決的技術問題是:提供一種非結構化數據快速檢索的系統及方法,能夠快速完成文本標識比對,從而更快的檢索到符合條件的文本標識,並且消耗較少的系統資源。
[0004]為了解決上述技術問題,本專利申請提供了一種非結構化數據快速檢索的系統及方法。本申請所述系統包括查詢處理模塊、查詢條件解析模塊、大數據存儲模塊、布隆過濾器過濾模塊、索引建立模塊和布隆過濾器構建模塊。各模塊功能如下:
[0005]查詢處理模塊接收應用客戶端的查詢請求,從查詢請求中獲取查詢條件。
[0006]查詢條件解析模塊實現對查詢條件的解析和對查詢條件的改造,使用布隆過濾器代替原始查詢條件中的分詞條件,將客戶端查詢條件轉換成對大數據存儲模塊中數據記錄表的查詢條件。
[0007]大數據存儲模塊負責索引數據和記錄數據的存儲,並根據查詢條件對數據進行過濾,返回符合查詢條件的數據。大數據存儲模塊包含反向索引表和數據記錄表,反向索引表存儲從分詞到記錄標識的反向索引以及布隆過濾器;數據記錄表存儲記錄數據。其中,記錄標識指給每條數據記錄分配的唯一 ID。
[0008]布隆過濾器過濾模塊完成使用布隆過濾器快速判斷一條記錄數據是否滿足分詞條件的功能。
[0009]索引建立模塊將分詞到記錄標識對應關係以及對應的布隆過濾器組合在一起,構成包含布隆過濾器的反向索引數據,存入大數據存儲中的反向索引表。
[0010]布隆過濾器構建模塊完成對每個分詞構建布隆過濾器的功能。
[0011]本申請所述的一種非結構化數據快速檢索的方法為:
[0012]A、查詢處理模塊接收到應用客戶端的查詢請求以後,從查詢請求中獲取查詢條件,並調用查詢條件解析模塊,對查詢條件進行解析,查詢條件解析模塊從查詢條件中分離出分詞條件,形成分詞列表:[0013]B、查詢條件解析模塊通過分詞列表,查詢大數據存儲模塊中的反向索引表,獲取查詢條件中所有分詞對應的布隆過濾器;
[0014]C、查詢條件解析模塊結合原始查詢條件和每個分詞對應的布隆過濾器對原始查詢條件進行重構,使用布隆過濾器代替原始查詢條件中對應的分詞條件,而多個查詢條件之間的邏輯關係保持不變,形成基於布隆過濾器的查詢條件;
[0015]D、查詢處理模塊使用基於布隆過濾器的查詢條件對大數據存儲模塊中的數據記錄表進行查詢;大數據存儲模塊接收到基於布隆過濾器的查詢條件以後,調用布隆過濾器過濾模塊,使用基於布隆過濾器的查詢條件中的布隆過濾器對數據記錄中的記錄標識進行包含關係測試,測試結果為真,則表明該記錄標識包含在布隆過濾器中,進而表明數據符合分詞條件,否則不符合;
[0016]E、大數據存儲模塊使用基於布隆過濾器的查詢條件中布隆過濾器條件以外的其他查詢條件對數據記錄進行測試,如果數據記錄符合這些查詢條件,則測試結果為真,否則測試結果為假;
[0017]F、結合步驟D中布隆過濾器測試結果以及步驟E中其他查詢條件的測試結果,按照原有的邏輯關係進行組合運算,根據運算結果判斷數據記錄是否符合全部的查詢條件,並將符合條件的數據記錄作為查詢結果,返回給查詢處理模塊,由查詢處理模塊返回給應用客戶端。
[0018]本專利申請的有益效果:
[0019]1、通過本專利申請,在文本標識比對的時候,只需要獲取布隆過濾器,而不需要獲取分詞對應的文本標識,因此讀取的數據量更少更集中,對於系統磁碟的讀寫壓力更小;
[0020]2、通常的檢索方法需要在查詢條件中存儲並傳輸大量的文本標識,而本專利申請中,只需要存儲布隆過濾器,因此對於內存和網絡讀寫的消耗更少;
[0021]3、本專利申請採用少量的位比對取代了字符串比對,因此消耗的計算資源更少,速度更快。
【專利附圖】
【附圖說明】
[0022]附圖1為本專利申請的模塊分布圖
[0023]附圖2為查詢處理流程圖
【具體實施方式】
[0024]本專利申請所述的一種非結構化數據快速檢索的系統,其模塊分布情況如附圖1所示,包括查詢處理模塊、查詢條件解析模塊、大數據存儲模塊、布隆過濾器過濾模塊、索引建立模塊和布隆過濾器構建模塊。
[0025]大數據存儲模塊包含反向索引表和數據記錄表。反向索引表的數據更新步驟包括:
[0026]1、索引建立模塊接收每條數據記錄包含的所有分詞條件,使用反向索引構建的方法生成從分詞到記錄標識的對應關係數據;
[0027]2、將對應關係數據發送給布隆過濾器構建模塊,生成布隆過濾器;布隆過濾器的長度和包含該分詞的數據記錄個數成正比;使用該分詞對應的每個記錄標識構建出布隆過濾器的鍵值,並將所有的鍵值加入到布隆過濾器中;鍵值的構建方法可以採用業界常規構建方法,在此不再贅述;
[0028]3、將分詞到記錄標識對應關係以及對應的布隆過濾器組合在一起,構成包含布隆過濾器的反向索引數據,存入大數據存儲中的反向索引表。
[0029]本專利申請所述的一種非結構化數據快速檢索的方法,查詢處理流程如附圖2所示,具體包括如下步驟:
[0030]1、查詢處理模塊接收應用客戶端的查詢請求,從查詢請求中獲取查詢條件,調用查詢條件解析模塊;
[0031]2、查詢條件解析模塊對查詢條件進行解析。具體包括:
[0032]2.1查詢條件解析模塊首先分析查詢條件,從查詢條件中分離出包含的分詞條件,形成分詞列表,分詞列表中的分詞條件不重複;
[0033]2.2根據分詞列表,查詢大數據存儲模塊中分詞到記錄標識的反向索引表,獲取所有分詞條件對應的布隆過濾器。
[0034]3、查詢條件解析模塊對原始查詢條件進行重構,使用布隆過濾器代替原始查詢條件中的分詞條件,而多個查詢條件之間的邏輯關係保持不變,生成基於布隆過濾器的新查詢條件;
[0035]4、查詢處理模塊使用基於布隆過濾器的查詢條件對大數據存儲模塊中的數據記錄表進行查詢,大數據存儲模塊調用布隆過濾器過濾模塊,使用基於布隆過濾器的查詢條件中的布隆過濾器對數據記錄中的記錄標識進行包含性測試,測試結果為真,則表明數據可能符合分詞條件,否則不符合。具體測試方法為:
[0036]布隆過濾器包含N(N>= I)個哈希散列函數,同時包含一個位向量。對鍵值進行測試的時候,使用哈希散列函數對鍵值進行散列,會得到N個哈希散列值;判斷位向量中,和這N個哈希散列值對應的位置的值是I還是0,如果全部都是I,則測試通過,數據符合分詞條件,否則不符合。
[0037]較佳的,在查詢出布隆過濾器的同時,查詢出分詞對應的所有記錄標識,在布隆過濾器測試結果為真的情況下進一步通過記錄標識比對來確定記錄標識是否真正符合條件,可以有效避免布隆過濾器誤中的情況。
[0038]5、大數據存儲模塊使用查詢條件中布隆過濾器以外的其他查詢條件對數據記錄進行測試,例如查詢條件中,性別=』男』,則判斷數據記錄中『性別』這一屬性是否等於』男』,如果是,則測試結果為真,否則測試結果為假。
[0039]6、大數據存儲模塊結合步驟4中布隆過濾器的測試結果和步驟5中其他查詢條件的測試結果按照原有的邏輯關係進行組合運算,根據運算結果判斷數據記錄是否符合全部的查詢條件。例如:有』記錄I』這樣一條記錄數據,基於布隆過濾器的查詢條件為:(』布隆過濾器I』並且『性別』=』男』),』布隆過濾器I』對於』記錄I』的測試結果為』真』,同時』記錄I』中』性別』屬性等於』男』,則組合運算結果為真,表明』記錄I』滿足全部查詢條件。之後,大數據存儲模塊將符合條件的數據記錄作為查詢結果,返回給查詢處理模塊,並由查詢處理模塊返回給應用客戶端。
[0040]以上實施方案的說明只適用於幫助理解本專利申請的原理,同時對本領域的一般技術人員,依據本專利申請實施例,在【具體實施方式】以及應用範圍上均會有改變之處,因此本說明書內容不應理解為對本專利申請的限制。
【權利要求】
1.一種非結構化數據快速檢索的系統,其特徵在於:包括查詢處理模塊、查詢條件解析模塊、大數據存儲模塊、布隆過濾器過濾模塊、索引建立模塊和布隆過濾器構建模塊。
2.一種非結構化數據快速檢索的方法,其特徵在於,包括如下步驟: A、查詢處理模塊接收到應用客戶端的查詢請求以後,從查詢請求中獲取查詢條件,並調用查詢條件解析模塊,對查詢條件進行解析,查詢條件解析模塊從查詢條件中分離出分詞條件,形成分詞列表; B、查詢條件解析模塊通過分詞列表,查詢大數據存儲模塊中的反向索引表,獲取查詢條件中所有分詞對應的布隆過濾器; C、查詢條件解析模塊結合原始查詢條件和每個分詞對應的布隆過濾器對原始查詢條件進行重構,使用布隆過濾器代替原始查詢條件中對應的分詞條件,而多個查詢條件之間的邏輯關係保持不變,形成基於布隆過濾器的查詢條件; D、查詢處理模塊使用基於布隆過濾器的查詢條件對大數據存儲模塊中的數據記錄表進行查詢;大數據存儲模塊接收到基於布隆過濾器的查詢條件以後,調用布隆過濾器過濾模塊,使用基於布隆過濾器的查詢條件中的布隆過濾器對數據記錄中的記錄標識進行包含關係測試,測試結果為真,則表明該記錄標識包含在布隆過濾器中,進而表明數據符合分詞條件,否則不符合; E、大數據存儲模塊使用基於布隆過濾器的查詢條件中布隆過濾器條件以外的其他查詢條件對數據記錄進行測試,如果數據記錄符合這些查詢條件,則測試結果為真,否則測試結果為假; F、結合步驟D中布隆過濾器測試結果以及步驟E中其他查詢條件的測試結果,按照原有的邏輯關係進行組合運算,根據運算結果判斷數據記錄是否符合全部的查詢條件,並將符合條件的數據記錄作為查詢結果,返回給查詢處理模塊,由查詢處理模塊返回給應用客戶端。
3.如權利要求2所述的一種非結構化數據快速檢索的方法,其特徵在於,所述步驟B中的反向索引表的數據更新過程如下: B1、索引建立模塊接收每條數據記錄包含的所有分詞條件,使用反向索引構建的方法生成從分詞到記錄標識的對應關係數據; B2、將對應關係數據發送給布隆過濾器構建模塊,生成分詞對應的布隆過濾器; B3、將分詞到記錄標識對應關係以及對應的布隆過濾器組合在一起,構成包含布隆過濾器的反向索引數據,存入大數據存儲中的反向索引表。
4.如權利要求3所述的一種非結構化數據快速檢索的方法,其特徵在於:所述步驟B2中的布隆過濾器的長度和包含該分詞的數據記錄個數成正比:使用該分詞對應的每個記錄標識構建出布隆過濾器的鍵值,並將所有的鍵值加入到對應的布隆過濾器中。
5.如權利要求2所述的一種非結構化數據快速檢索的方法,其特徵在於,所述步驟D進一步包括:在查詢出布隆過濾器的同時,查詢出分詞對應的所有記錄標識,在布隆過濾器測試結果為真的情況下進一步通過記錄標識比對來確定記錄標識是否真正符合條件。
【文檔編號】G06F17/30GK103440249SQ201310308778
【公開日】2013年12月11日 申請日期:2013年7月23日 優先權日:2013年7月23日
【發明者】周帥鋒, 趙智峰, 曹俊亮, 穆寧 申請人:南京烽火星空通信發展有限公司