新四季網

一種分布式實時搜尋引擎的製作方法

2023-04-26 11:52:01

專利名稱:一種分布式實時搜尋引擎的製作方法
技術領域:
本發明涉及搜尋引擎技術領域,尤其涉及一種分布式實時搜尋引擎。
背景技術:
伴隨著知識經濟時代的到來,網際網路中的信息呈爆炸式增長,現階段人們面對的不是信息匱乏,而是信息泛濫,無從篩選,因而,如何精確、快速、及時獲取需要的信息,是搜尋引擎需要解決的問題。搜尋引擎是指根據一定的策略、運用特定的電腦程式從特定網絡如網際網路上搜集信息,在對信息進行組織和處理後,為用戶提供檢索服務,將用戶檢索相關的信息展示給用戶的系統。傳統的搜尋引擎,例如,Google、百度、Yahoo等,雖然處理的數據量巨大,已達到 TB級,但其數據源主要來自門戶網站、論壇、電子政務等常規站點,這一類的站點數據更新頻率不高,每次更新的數據量也不大,因而其信息處理對搜尋引擎的實時性要求並不高。隨著微博,社交類網站等社會化媒體的興起,網民創造的「微信息」大量湧現,從而產生實時海量數據。另外隨著企業移動應用如移動CRM系統和手持終端的快速發展,用戶對資訊的查詢速度和實時性提出了更高的要求,傳統搜尋引擎已經不能適應實時海量數據處理和實時搜索的處理需求。實時海量數據具有更新頻率高、更新的數據量大、累積的數據量大的特性,通常達到幾百GB,甚至達到TB或PB級的數據量。實時搜尋引擎在海量數據處理和查詢響應的實時性上都有很高的要求。當數據量達到TB級時,數據更新的頻率和查詢響應的速度之間存在很大的矛盾,因為當累積數據量大,更新的數據量也很大時,會導致索引的構建和維護時間長從而導致實時性無法保證,即,現有的搜尋引擎方案採用該增量索引機制時,索引的構建和檢索過程是分開進行的,索引的構建邏輯只有在新段中累積的文檔數達到閾值(如10000)或者間隔時間達到閾值(如5分鐘)後,才將新段提交到索引分片中供索引檢索邏輯使用。因此,從一個文檔的提交到能夠檢索到該文檔,之間會有一定的時間延遲,通常在幾分鐘到幾十分鐘範圍內,而在實時檢索中,如此長的延遲是不可容忍的。

發明內容
針對現有技術方案的不足,本發明提出一種克服增量索引機制跟索引實時性之間的矛盾,通過系統內存中的更新時索引、合併時索引和磁碟索引的配合實現的一種分布式實時搜尋引擎。本發明採用的技術方案如下
一種分布式實時搜尋引擎,其系統構建和運行至少包括以下步驟 A.設計系統的功能性結構,該功能性結構是在基於Master/Slave的集群式系統中創建,包括以下功能節點中心控制節點、索引數據存儲節點和對外服務節點,其中,所述的中心控制節點創建於Master系統中,所述的索引數據存儲節點和對外服務節點創建於Slave 系統中,所述的中心控制節點,用於數據索引結構中索引的屬性信息的存儲和維護,以及索引數據存儲節點的屬性信息的存儲和維護,所述的索引數據存儲節點用於數據索引結構中索引分片的創建、更新和檢索,所述的對外服務節點用於接收索引的創建、更新和檢索請求並將該請求轉發至中心控制節點進行處理;
B.設計系統的數據索引結構,該索引結構從上到下的樹形層次構成是索引、索引分片、段、文檔和域,其中,所述的索引在一個系統中可以有多個,所述的一個索引分片是所述索引被分割後的一個數據塊,其中,屬於同一索引的各個索引分片存儲在索引數據存儲節點上,所述的一個索引分片是由一至多個段構成,所述的一個段是由一至多個文檔構成,一個段中所含的各個文檔可以是不同的數據對象類型,所述的一個文檔在系統全局中具有唯一標識的鍵值,所述的文檔的結構包含用於描述文檔類型的域;
C.索引的創建,包括以下步驟
Cl.對外服務節點接收到索引創建請求後將該請求轉發至中心控制節點,中心控制節點解析該索引創建請求,從中提取待創建索引的屬性信息,並驗證該屬性信息是否是完備的和有效的,如果該屬性信息完備並且有效,則進行步驟C2的處理,如果該屬性信息不完備或者無效,則發送應答失敗信息至對外服務節點;
C2.中心控制節點根據步驟Cl中生成的待創建索引的屬性信息中的索引分片數將待創建索引分割為若干分片,同時,根據存儲於中心控制節點中的索引數據節點的屬性信息, 來判斷每個索引數據節點的狀態和負載情況,並依此來確定每個索引分片在哪個索引數據節點中存儲和創建,然後將待創建索引的屬性信息發送至各個相對應的索引數據存儲節點。索引數據存儲節點根據收到的待創建索引的屬性信息,在該索引數據存儲節點上構建中心控制節點分派的所述待創建索引的索引分片,如果該索引數據存儲節點創建該索引分片失敗,則中心控制節點將該索引分片分派給其他的狀態良好、負載相對比較小的索引數據節點來創建,直至該待創建索引的全部索引分片在索引數據存儲節點中創建完成或者創建創建失敗,進行步驟C3的處理;
C3.如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建完成,中心控制節點更新存儲於其中的索引數據存儲節點屬性信息,並發送索引分片創建成功的應答信息至對外服務節點;如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建失敗,則向對外服務節點發送創建索引失敗的應答;
D.索引的更新,包括以下步驟
Dl.對外服務節點接收到索引更新請求後將該請求轉發至中心控制節點,中心控制節點根據存儲於其中的索引屬性信息和索引數據存儲節點屬性信息,將該索引更新請求發送至該索引的索引分片所在的索引數據存儲節點;
D2.索引數據存儲節點根據收到的索引更新請求,在待更新索引所在索引數據存儲節點的索引分片上,將更新文檔存儲於新的段中,如果更新文檔存儲成功,則將該更新文檔相對應的舊文檔在新的段中標記為刪除狀態,並返回索引更新成功信息至中心控制節點,如果更新文檔存儲失敗,則返回索引更新失敗信息至中心控制節點,中心控制節點最後將索引更新成功或失敗的信息發送至對外服務節點;
該步驟D的索引更新,還包括文檔的刪除步驟當索引更新請求僅為刪除文檔命令時, 在待刪除文檔所在的索引數據存儲節點的存儲分片上,在新的段中將該文檔標記為刪除; 該步驟D的索引更新,還包括構建實時索引的步驟在系統的內存中同時構建更新時索引和合併時索引,索引的檢索是通過訪問該更新時索引和合併時索引進行,在進行索引更新時,更新中的索引為所述的更新時索引,當該更新時索引的文檔數量達到閾值或者該更新時索引的更新時間達到閾值時,系統提交該更新時索引到磁碟索引中,之後變更該更新時索引為合併時索引並同時變更之前的合併時索引為更新時索引; E.索引的檢索,包括以下步驟
El.對外服務節點接收索引的檢索請求後將其發送至中心控制節點,中心控制節點解析該檢索請求並判斷其所針對的目標索引,然後根據索引數據存儲節點屬性信息和目標索引的屬性信息,查找該目標索引的所有索引分片,並向存儲每個分片的索引數據存儲節點分派檢索請求;
E2.索引數據存儲節點根據收到的檢索請求,在其存儲的相應索引分片上檢索相關文檔,最後將檢索結果排序後發送至對外服務節點;
E3.對外服務節點將接收到的各個索引數據存儲節點的檢索結果整合、排序後發送至客戶端。進一步的,步驟A所述系統的功能性結構,還包括一備用中心控制節點,所述中心控制節點實時地將其存儲的數據同步備份至備用中心控制節點,當中心控制節點發生故障期時,該備用中心控制節點變更為中心控制節點,當原中心控制節點從故障中恢復,原中心控制節點變更為新的備用中心控制節點。進一步的,所述的索引數據存儲節點和對外服務節點周期性地向所述中心控制節點發送表徵其狀態信息的心跳信號,如果中心控制節點在預設的時間內沒有收到心跳信號,則標記該索引數據存儲節點或對外服務節點為死亡,同時,中心控制節點會將標記為死亡的索引數據存儲節點中存儲的所有索引分片,從其他索引數據節點中存儲的這些索引分片的副本中再拷貝一份到其他的未存儲任何該索引分片副本的索引數據節點中,使得索引分片的副本數保持不變,以保證索引分片在任意時刻都是可用的。進一步的,所述的索引數據節點向中心控制節點中發生的心跳信號中,包含該索引數據節點的負載信息,在索引創建的過程中,中心控制節點會將索引分片儘量分配給負載小的索引數據節點存儲,同樣,在索引檢索的過程中,中心控制節點會將檢索請求儘量提交給負載小的索引分片或該分片副本所在的索引數據存儲節點處理。進一步的,所述的索引數據存儲節點屬性信息包括節點的ID、節點的名稱、節點的類型、節點的狀態、節點的負載和節點的位置,所述的索引屬性信息包括索引的名稱、索引中文檔的結構定義、索引的分片數、索引分片的副本數和索引分片及索引分片副本的存儲節點ID。進一步的,步驟B所述系統的數據索引結構中,每一個索引分片還具有複數個索引分片副本,該索引分片副本在步驟C所述的索引創建時創建,在步驟D所述的索引更新時在原索引分片更新後異步更新,其跟原索引分片存儲在不同的索引數據存儲節點上;原索引分片所在的索引數據存儲節點負責處理針對該索引分片的更新請求,當原索引分片更新完畢後,原索引分片所在的索引數據節點負責將更新請求異步地發送給對應的索引分片副本所在的索引數據節點進行索引分片副本的更新;索引分片副本與對應的原索引分片都支持索引檢索,中心控制節點根據原索引分片和索引分片副本所在索引數據存儲節點的負載情況,將索引檢索請求提交給負載小的索引分片或索引分片副本所在索引數據存儲節點處理。更進一步的,中心控制節點定期檢查全部的索引中各個索引的索引分片副本的數目,當索引分片副本的數目低於預設的設定個數時,系統自動複製該索引分片的副本到其他數據節點中;當存儲原索引分片的索引數據存儲節點出現故障時,系統從對應的索引分片副本中選取一個接替原索引分片的索引更新工作,該索引分片副本成為新的原索引分片,然後在其他索引數據節點中在生成一個索引分片副本,保證該索引分片的副本數保持不變;當存儲索引分片副本的索引數據節點出現故障時,系統會在其他索引數據節點中生成一個與原索引分片一樣的副本,保證該索引分片的副本數保持不變。更進一步的,所述同一索引的各個索引分片和索引分片副本創建和存儲在索引數據存儲節點上,是按照如下的策略進行中心控制節點根據索引數據存儲節點的屬性信息中節點的負載信息,將所述索引分片和索引分片副本分配至負載最輕的索引數據存儲節點,當可用的索引數據存儲節點的數目少於索引分片的數目時,中心控制節點分配多個索引分片至同一個索引數據存儲節點,中心控制節點不分配索引分片的索引分片副本;當可用的索引數據存儲節點的數目多於索引分片的數目時,中心控制節點分配部分或全部索引分片的索引分片副本至剩餘的索引數據存儲節點。進一步的,步驟D所述索引的更新中,還包括段的合併的步驟在所述更新中的索引的索引分片中段的數目達到閾值或距離上一次索引合併的間隔時間達到閾值,該索引分片所在的索引數據存儲節點讀取較小的幾個段中的文檔並將其存儲於一個新段,然後將這幾個較小的段物理刪除。進一步的,步驟D所述更新文檔在索引分片上的存儲,是通過計算更新文檔的鍵值的哈希值,將該哈希值跟文檔所在索引的索引分片數取模後,最後將文檔分配到跟該取模的數值對應編號的索引分片進行存儲。進一步的,步驟B所述的文檔的不同數據對象類型,包括文本數據對象、圖像數據對象、音頻數據對象、視頻數據對象、可執行程序數據對象,每一種數據對象類型的屬性信息存儲於文檔的域的結構中。本發明通過採用上述技術方案,具有的有益效果是
1.在系統的內存中同時構建更新時索引和合併時索引,索引檢索時通過同時訪問更新時索引和合併時索引,當更新時索引的文檔數量積累到閾值後,更新索引提交到磁碟索引並變更為合併時索引,原有的合併時索引變更為新的更新時索引,保證了正在更新中的數據也能夠被檢索到,提高了搜尋引擎可檢索數據的實時性;
2.本系統的中心控制節點、備用中心控制節點、對外服務節點以及索引數據存儲節點是在基於Master/Slave的集群式系統創建,具有高度容錯性,適合部署在廉價機器上,並且能夠提供高吞吐量的數據訪問;
3.通過對存儲於索引數據存儲節點的索引分片創建索引分片副本,增強系統的容錯性。


圖1是本發明一優選實施例的功能性結構示意圖。圖2是本發明數據索引結構的示意圖。
圖3是本發明索引分片和索引分片副本存儲策略的實施例示意圖。
具體實施例方式現結合附圖和具體實施方式
對本發明進一步說明。一種分布式實時搜尋引擎,其系統構建和運行是由以下步驟構成
步驟A 設計系統的功能性結構,參閱附圖1所示,該功能性結構是在基於Master/ Slave的集群式系統中創建,包括以下功能節點中心控制節點、索引數據存儲節點和對外服務節點,其中,所述的中心控制節點創建於Master系統中,所述的索引數據存儲節點和對外服務節點創建於Slave系統中,所述的中心控制節點在系統中為主節點,用於數據索引結構中索引的屬性信息的存儲和維護,以及索引數據存儲節點的屬性信息的存儲和維護,所述的索引數據存儲節點在系統中為數據節點,用於數據索引結構中索引分片層的創建、更新和檢索,所述的對外服務節點在系統中為客戶節點,用於接收索引的創建、更新和檢索請求並將該請求轉發至中心控制節點進行處理;
步驟B:設計系統的數據索引結構,參閱附圖2所示,該索引結構從上到下的樹形層次構成是索引、索引分片、段、文檔和域,其中,所述的索引在一個系統中可以有多個,所述的一個索引分片是所述索引被分割後的一個數據塊,其中,屬於同一索引的各個索引分片存儲在索引數據存儲節點上,所述的一個索引分片是由一至多個段構成,所述的一個段是由一至多個文檔構成,一個段中所含的各個文檔可以是不同的數據對象類型,所述的一個文檔在系統全局中具有唯一標識的鍵值,所述的文檔的結構包含用於描述文檔不同屬性的域;其中,所述的索引是提供檢索支持的多種數據對象的集合,所述的索引分片分散存儲在系統的索引數據存儲節點上,這可以提高系統的檢索數據效率; 步驟C:索引的創建,是由以下的步驟構成
Cl.對外服務節點接收到索引創建請求後將該請求轉發至中心控制節點,中心控制節點解析該索引創建請求,從中提取待創建索引的屬性信息,並驗證該屬性信息是否是完備的和有效的,如果該屬性信息完備並且有效,則進行步驟C2的處理,如果該屬性信息不完備或者無效,則發送應答失敗信息至對外服務節點;
C2.中心控制節點根據步驟Cl中生成的待創建索引的屬性信息中的索引分片數將待創建索引分割為若干分片,同時,根據存儲於中心控制節點中的索引數據節點的屬性信息, 來判斷每個索引數據節點的狀態和負載情況,並依此來確定每個索引分片在哪個索引數據節點中存儲和創建,然後將待創建索引的屬性信息發送至各個相對應的索引數據存儲節點;索引數據存儲節點根據收到的待創建索引的屬性信息,在該索引數據存儲節點上構建中心控制節點分派的所述待創建索引的索引分片,如果該索引數據存儲節點創建該索引分片失敗,則中心控制節點將該索引分片分派給其他的狀態良好、負載相對比較小的索引數據節點來創建,直至該待創建索引的全部索引分片在索引數據存儲節點中創建完成或者創建創建失敗,進行步驟C3的處理;
C3.如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建完成,中心控制節點更新存儲於其中的索引數據存儲節點屬性信息,並發送索引分片創建成功的應答信息至對外服務節點;如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建失敗,則向對外服務節點發送創建索引失敗的應答;步驟D 索引的更新,是由以下步驟構成
Dl.對外服務節點接收到索引更新請求後將該請求轉發至中心控制節點,中心控制節點根據存儲於其中的索引屬性信息和索引數據存儲節點屬性信息,將該索引更新請求發送至該索引的索引分片所在的索引數據存儲節點;
D2.索引數據存儲節點根據收到的索引更新請求,在待更新索引所在索引數據存儲節點的索引分片上,將更新文檔存儲於新的段中,如果更新文檔存儲成功,則將該更新文檔相對應的舊文檔在新的段中標記為刪除狀態,並返回索引更新成功信息至中心控制節點,如果更新文檔存儲失敗,則返回索引更新失敗信息至中心控制節點,中心控制節點最後將索引更新成功或失敗的信息發送至對外服務節點;
該步驟D的索引更新,還包括文檔的刪除步驟當索引更新請求僅為刪除文檔命令時, 在待刪除文檔所在的索引數據存儲節點的存儲分片上,在新的段中將該文檔標記為刪除;
該步驟D的索引更新,還包括構建實時索引的步驟在系統的內存中同時構建更新時索引和合併時索引,索引的檢索是通過訪問該更新時索引和合併時索引進行,在進行索引更新時,更新中的索引為所述的更新時索引,當該更新時索引的文檔數量達到閾值或者該更新時索引的更新時間達到閾值時,系統提交該更新時索引到磁碟索引中,之後變更該更新時索引為合併時索引並同時變更之前的合併時索引為更新時索引; 步驟E 索引的檢索,是由以下步驟構成
El.對外服務節點接收索引的檢索請求後將其發送至中心控制節點,中心控制節點解析該檢索請求並判斷其所針對的目標索引,然後根據索引數據存儲節點屬性信息和目標索引的屬性信息,查找該目標索引的所有索引分片,並向存儲每個分片的索引數據存儲節點分派檢索請求;
E2.索引數據存儲節點根據收到的檢索請求,在其存儲的相應索引分片上檢索相關文檔,最後將檢索結果排序後發送至對外服務節點;
E3.對外服務節點將接收到的各個索引數據存儲節點的檢索結果整合、排序後發送至客戶端。作為一優選的實施方式,步驟A所述系統的功能性結構,還包括一備用中心控制節點,所述中心控制節點實時地將其存儲的數據同步備份至備用中心控制節點,當中心控制節點發生故障期時,該備用中心控制節點變更為中心控制節點,當原中心控制節點從故障中恢復,原中心控制節點變更為新的備用中心控制節點;由於中心控制節點在系統中為主節點,其一旦出現故障,就會導致整個系統癱瘓,因此,通過增加備用中心控制節點,可以實現對中心控制節點的故障轉移,提高系統的容錯性。作為一優選的實施方式,所述的索引數據存儲節點和對外服務節點周期性地向所述中心控制節點發送表徵其狀態信息的心跳信號,如果中心控制節點在預設的時間內沒有收到心跳信號,則標記該索引數據存儲節點或對外服務節點為死亡,同時,中心控制節點會將標記為死亡的索引數據存儲節點中存儲的所有索引分片,從其他索引數據節點中存儲的這些索引分片的副本中再拷貝一份到其他的未存儲任何該索引分片副本的索引數據節點中,使得索引分片的副本數保持不變,以保證索引分片在任意時刻都是可用的。作為一優選的實施方式,所述的索引數據節點向中心控制節點中發生的心跳信號中,包含該索引數據節點的負載信息,在索引創建的過程中,中心控制節點會將索引分片儘量分配給負載小的索引數據節點存儲,同樣,在索引檢索的過程中,中心控制節點會將檢索請求儘量提交給負載小的索引分片或該分片副本所在的索引數據存儲節點處理。作為一優選的實施方式,所述的索引數據存儲節點屬性信息包括節點的ID、節點的名稱、節點的類型、節點的狀態、節點的負載和節點的位置,所述的索引屬性信息包括 索引的名稱、索引中文檔的結構定義、索引的分片數、索引分片的副本數和索引分片及索引分片副本的存儲節點ID ;該索引數據存儲節點屬性信息和索引屬性信息在系統中為元數據,該元數據存儲於中心控制節點上,系統的中心控制節點、索引數據存儲節點和對外服務節點可以跟據這些元數據推演每一個索引分片在集群中的位置。作為一優選的實施方式,步驟B所述系統的數據索引結構中,每一個索引分片還具有複數個索引分片副本,該索引分片副本在步驟C所述的索引創建時創建,在步驟D所述的索引更新時在原索引分片更新後異步更新,其跟原索引分片存儲在不同的索引數據存儲節點上。原索引分片所在的索引數據存儲節點負責處理針對該索引分片的更新請求,當原索引分片更新完畢後,原索引分片所在的索引數據節點負責將更新請求異步地發送給對應的索引分片副本所在的索引數據節點進行索引分片副本的更新。索引分片副本與對應的原索引分片都支持索引檢索,中心控制節點根據原索引分片和索引分片副本所在索引數據存儲節點的負載情況,將索引檢索請求提交給負載小的索引分片或索引分片副本所在索引數據存儲節點處理。。進一步的,中心控制節點定期檢查全部的索引中各個索引的索引分片副本的數目,當索引分片副本的數目低於預設的設定個數時,系統自動複製該索引分片的副本到其他數據節點中。當存儲原索引分片的索引數據存儲節點出現故障時,系統從對應的索引分片副本中選取一個接替原索引分片的索引更新工作,該索引分片副本成為新的原索引分片,然後在其他索引數據節點中在生成一個索引分片副本,保證該索引分片的副本數保持不變。當存儲索引分片副本的索引數據節點出現故障時,系統會在其他索引數據節點中生成一個與原索引分片一樣的副本,保證該索引分片的副本數保持不變。進一步的,所述同一索引的各個索引分片和索引分片副本創建和存儲在索引數據存儲節點上,是按照如下的策略進行中心控制節點根據索引數據存儲節點的屬性信息中節點的負載信息,將所述索引分片和索引分片副本分配至負載最輕的索引數據存儲節點, 當可用的索引數據存儲節點的數目少於索引分片的數目時,中心控制節點分配多個索引分片至同一個索引數據存儲節點,中心控制節點不分配索引分片的索引分片副本;當可用的索引數據存儲節點的數目多於索引分片的數目時,中心控制節點分配部分或全部索引分片的索引分片副本至剩餘的索引數據存儲節點;參閱附圖3所示的該策略的一個舉例說明, 其為一個索引分片數為2、每個索引分片的索引分片副本數為1的索引在索引數據存儲節點的存儲的情況當系統的索引數據存儲節點數為1時,該索引的索引分片1和索引分片 2都存儲在索引數據存儲節點1中,而且每個分片沒有索引分片副本,因為副本和原分片只有存儲在不同的節點中才能對系統的可用性和可靠性起作用,當系統中的索引數據存儲節點數為2個時,存儲在索引數據存儲節點1中的索引分片1和索引分片2都具有存儲在索引數據存儲節點2上的索引分片副本1』和索引分片副本2』,索引數據存儲節點2可以提供跟索引數據存儲節點1所一樣的服務,因此增加索引數據存儲節點可以擴展系統的服務性能;當系統的索引數據存儲節點數為4個時,索引分片1、索引分片2、索引分片副本1』和索引分片副本2』是分開存儲在這4個索引數據存儲節點上。作為一優選的實施方式,步驟D所述索引的更新中,還包括段的合併的步驟在所述更新中的索引的索引分片中段的數目達到閾值或距離上一次索引合併的間隔時間達到閾值,該索引分片所在的索引數據存儲節點讀取較小的幾個段中的文檔並將其存儲於一個新段,然後將這幾個較小的段物理刪除;在索引的構建過程中會不斷產生新的段,當索引分片中段的數目太多時,會影響索引檢索邏輯的檢索效率,因此,該步驟將多個小的段合併成一個大的段,並剔除標記刪除的數據,優化了索引的存儲空間,減少索引檢索邏輯同時操作的索引段的數目,從而提高了索引檢索邏輯的檢索效率。作為一優選的實施方式,步驟D所述更新文檔在索引分片上的存儲,是通過計算更新文檔的鍵值的哈希值,將該哈希值跟文檔所在索引的索引分片數取模後,最後將文檔分配到跟該取模的數值對應編號的索引分片進行存儲。作為一優選的實施方式,步驟B所述的文檔的不同數據對象類型是文本數據對象、圖像數據對象、音頻數據對象、視頻數據對象、可執行程序數據對象,每一種數據對象類型的屬性信息存儲於文檔的域的結構中,文檔的域的結構用於存儲文檔的屬性信息,例如, 對於文本類型的文檔,可以包含如下信息文件名稱、關鍵詞、作者、文件大小、類別、文件描述等;而對於音頻類型的文檔,可以包含如下信息文件名稱、比特率(bps)、文件大小、持續時間、作者或藝術家姓名、歌曲名稱、流派、專輯名稱等。儘管結合優選實施方案具體展示和介紹了本發明,但所屬領域的技術人員應該明白,在不脫離所附權利要求書所限定的本發明的精神和範圍內,在形式上和細節上可以對本發明做出各種變化,均為本發明的保護範圍。
權利要求
1. 一種分布式實時搜尋引擎,其系統構建和運行至少包括以下步驟A.設計系統的功能性結構,該功能性結構是在基於Master/Slave的集群式系統中創建,包括以下功能節點中心控制節點、索引數據存儲節點和對外服務節點,其中,所述的中心控制節點創建於Master系統中,所述的索引數據存儲節點和對外服務節點創建於Slave 系統中,所述的中心控制節點,用於數據索引結構中索引的屬性信息的存儲和維護,以及索引數據存儲節點的屬性信息的存儲和維護,所述的索引數據存儲節點用於數據索引結構中索引分片的創建、更新和檢索,所述的客戶節點用於接收索引的創建、更新和檢索請求並將該請求轉發至中心控制節點進行處理;B.設計系統的數據索引結構,該索引結構從上到下的樹形層次構成是索引、索引分片、段、文檔和域,其中,所述的索引在一個系統中可以有多個,所述的一個索引分片是所述索引被分割後的一個數據塊,其中,屬於同一索引的各個索引分片存儲在索引數據存儲節點上,所述的一個索引分片是由一至多個段構成,所述的一個段是由一至多個文檔構成,一個段中所含的各個文檔可以是不同的數據對象類型,所述的一個文檔在系統全局中具有唯一標識的鍵值,所述的文檔的結構包含用於描述文檔類型的域;C.索引的創建,包括以下步驟Cl.對外服務節點接收到索引創建請求後將該請求轉發至中心控制節點,中心控制節點解析該索引創建請求,從中提取待創建索引的屬性信息,並驗證該屬性信息是否是完備的和有效的,如果該屬性信息完備並且有效,則進行步驟C2的處理,如果該屬性信息不完備或者無效,則發送應答失敗信息至對外服務節點;C2.中心控制節點根據步驟Cl中生成的待創建索引的屬性信息中的索引分片數將待創建索引分割為若干分片,同時,根據存儲於中心控制節點中的索引數據節點的屬性信息, 來判斷每個索引數據節點的狀態和負載情況,並依此來確定每個索引分片在哪個索引數據節點中存儲和創建,然後將待創建索引的屬性信息發送至各個相對應的索引數據存儲節 點;索引數據存儲節點根據收到的待創建索引的屬性信息,在該索引數據存儲節點上構建中心控制節點分派的所述待創建索引的一個索引分片,如果該索引數據存儲節點創建該索引分片失敗,則中心控制節點將該索引分片分派給其他的狀態良好、負載相對比較小的索引數據節點來創建,直至該待創建索引的全部索引分片在索引數據存儲節點中創建完成或者創建失敗,進行步驟C3的處理;C3.如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建完成,中心控制節點更新存儲於其中的索引數據存儲節點屬性信息,並發送索引分片創建成功的應答信息至對外服務節點;如果步驟C2中待創建索引的全部索引分片在索引數據存儲節點中創建失敗,則向對外服務節點發送創建索引失敗的應答;D.索引的更新,包括以下步驟Dl.對外服務節點接收到索引更新請求後將該請求轉發至中心控制節點,中心控制節點根據存儲於其中的索引屬性信息和索引數據存儲節點屬性信息,將該索引更新請求發送至該索引的索引分片所在的索引數據存儲節點;D2.索引數據存儲節點根據收到的索引更新請求,在待更新索引所在索引數據存儲節點的索引分片上,將更新文檔存儲於新的段中,如果更新文檔存儲成功,則將該更新文檔相對應的舊文檔在新的段中標記為刪除狀態,並返回索引更新成功信息至中心控制節點,如果更新文檔存儲失敗,則返回索引更新失敗信息至中心控制節點,中心控制節點最後將索引更新成功或失敗的信息發送至對外服務節點;該步驟D的索引更新,還包括文檔的刪除步驟當索引更新請求僅為刪除文檔命令時, 在待刪除文檔所在的索引數據存儲節點的存儲分片上,在新的段中將該文檔標記為刪除;該步驟D的索引更新,還包括構建實時索引的步驟在系統的內存中同時構建更新時索引和合併時索引,索引的檢索是通過訪問該更新時索引和合併時索引進行,在進行索引更新時,更新中的索引為所述的更新時索引,當該更新時索引的文檔數量達到閾值或者該更新時索引的更新時間達到閾值時,系統提交該更新時索引到磁碟索引中,之後變更該更新時索引為合併時索引並同時變更之前的合併時索引為更新時索引;E.索引的檢索,包括以下步驟El.對外服務節點接收索引的檢索請求後將其發送至中心控制節點,中心控制節點解析該檢索請求並判斷其所針對的目標索引,然後根據索引數據存儲節點屬性信息和目標索引的屬性信息,查找該目標索引的所有索引分片,並向存儲每個分片的索引數據存儲節點分派檢索請求;E2.索引數據存儲節點根據收到的檢索請求,在其存儲的相應索引分片上檢索相關文檔,最後將檢索結果排序後發送至對外服務節點;E3.對外服務節點將接收到的各個索引數據存儲節點的檢索結果整合、排序後發送至客戶端。
2.如權利要求1所述的分布式實時搜尋引擎,其特徵在於步驟A所述系統的功能性結構,還包括一備用中心控制節點,所述中心控制節點實時地將其存儲的數據同步備份至備用中心控制節點,當中心控制節點發生故障期時,該備用中心控制節點變更為中心控制節點,當原中心控制節點從故障中恢復,原中心控制節點變更為新的備用中心控制節點。
3.如權利要求1所述的分布式實時搜尋引擎,其特徵在於所述的索引數據存儲節點和對外服務節點周期性地向所述中心控制節點發送表徵其狀態信息的心跳信號,如果中心控制節點在預設的時間內沒有收到心跳信號,則標記該索引數據存儲節點或對外服務節點為死亡,同時,中心控制節點會將標記為死亡的索引數據存儲節點中存儲的所有索引分片, 從其他索引數據節點中存儲的這些索引分片的副本中再拷貝一份到其他的未存儲任何該索引分片副本的索引數據節點中,使得索引分片的副本數保持不變,以保證索引分片在任意時刻都是可用的;所述的索引數據節點向中心控制節點中發生的心跳信號中,包含該索引數據節點的負載信息,在索引創建的過程中,中心控制節點會將索引分片儘量分配給負載小的索引數據節點存儲,同樣,在索引檢索的過程中,中心控制節點會將檢索請求儘量提交給負載小的索引分片或該分片副本所在的索引數據存儲節點處理。
4.如權利要求1所述的分布式實時搜尋引擎,其特徵在於所述的索引數據存儲節點屬性信息包括節點的ID、節點的名稱、節點的類型、節點的狀態、節點的負載和節點的位置,所述的索引屬性信息包括索引的名稱、索引中文檔的結構定義、索引的分片數、索引分片的副本數和索引分片及索引分片副本的存儲節點ID。
5.如權利要求1所述的分布式實時搜尋引擎,其特徵在於步驟B所述系統的數據索引結構中,每一個索引分片還具有複數個索引分片副本,該索引分片副本在步驟C所述的索引創建時創建,在步驟D所述的索引更新時在原索引分片更新後異步更新,其跟原索引分片存儲在不同的索引數據存儲節點上;原索引分片所在的索引數據存儲節點負責處理針對該索引分片的更新請求,當原索引分片更新完畢後,原索引分片所在的索引數據節點負責將更新請求異步地發送給對應的索引分片副本所在的索引數據節點進行索引分片副本的更新;索引分片副本與對應的原索引分片都支持索引檢索,中心控制節點根據原索引分片和索引分片副本所在索引數據存儲節點的負載情況,將索引檢索請求提交給負載小的索引分片或索引分片副本所在索引數據存儲節點處理。
6.如權利要求5所述的分布式實時搜尋引擎,其特徵在於中心控制節點定期檢查全部的索引中各個索引的索引分片副本的數目,當索引分片副本的數目低於預設的設定個數時,系統自動複製該索引分片的副本到其他數據節點中;當存儲原索引分片的索引數據存儲節點出現故障時,系統從對應的索引分片副本中選取一個接替原索引分片的索引更新工作,該索引分片副本成為新的原索引分片,然後在其他索引數據節點中在生成一個索引分片副本,保證該索引分片的副本數保持不變;當存儲索引分片副本的索引數據節點出現故障時,系統會在其他索引數據節點中生成一個與原索引分片一樣的副本,保證該索引分片的副本數保持不變。
7.如權利要求5所述的分布式實時搜尋引擎,其特徵在於所述同一索引的各個索引分片和索引分片副本創建和存儲在索引數據存儲節點上,是按照如下的策略進行中心控制節點根據索引數據存儲節點的屬性信息中節點的負載信息,將所述索引分片和索引分片副本分配至負載最輕的索引數據存儲節點,當可用的索引數據存儲節點的數目少於索引分片的數目時,中心控制節點分配多個索引分片至同一個索引數據存儲節點,中心控制節點不分配索引分片的索引分片副本;當可用的索引數據存儲節點的數目多於索引分片的數目時,中心控制節點分配部分或全部索引分片的索引分片副本至剩餘的索引數據存儲節點。
8.如權利要求1所述的分布式搜尋引擎,其特徵在於步驟D所述索引的更新中,還包括段的合併的步驟在所述更新中的索引的索引分片中段的數目達到閾值或距離上一次索引合併的間隔時間達到閾值,該索引分片所在的索引數據存儲節點讀取較小的幾個段中的文檔並將其存儲於一個新段,然後將這幾個較小的段物理刪除。
9.如權利要求1所述的分布式實時搜尋引擎,其特徵在於步驟D所述更新文檔在索引分片上的存儲,是通過計算更新文檔的鍵值的哈希值,將該哈希值跟文檔所在索引的索引分片數取模後,最後將文檔分配到跟該取模的數值對應編號的索引分片進行存儲。
10.如權利要求1所述的分布式實時搜尋引擎,其特徵在於步驟B所述的文檔的不同數據對象類型,包括文本數據對象、圖像數據對象、音頻數據對象、視頻數據對象、可執行程序數據對象,每一種數據對象類型的屬性信息存儲於文檔的域的結構中。
全文摘要
本發明涉及搜尋引擎技術領域,尤其涉及一種分布式實時搜尋引擎。本發明的分布式實時搜尋引擎,其系統構建和運行至少包括以下步驟A.設計系統的功能性結構,B.設計系統的數據索引結構,C.索引的創建,D.索引的更新,E.索引的檢索。本發明的分布式實時搜尋引擎能夠在系統的內存中同時構建更新時索引和合併時索引,索引檢索時通過同時訪問更新時索引和合併時索引,當更新時索引的文檔數量積累到閾值後,更新索引提交到磁碟索引並變更為合併時索引,原有的合併時索引變更為新的更新時索引,保證了正在更新中的數據也能夠被檢索到,提高了搜尋引擎可檢索數據的實時性。
文檔編號G06F17/30GK102169507SQ20111013778
公開日2011年8月31日 申請日期2011年5月26日 優先權日2011年5月26日
發明者季剛, 時宜, 程行榮, 陳青溪 申請人:廈門雅迅網絡股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀