一種建立索引的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)處理的技術(shù)領(lǐng)域,尤其涉及一種建立索引的方法及裝置。
【背景技術(shù)】
[0002]在實時搜索的索引建立過程中會在內(nèi)存和磁盤的存儲中產(chǎn)生大量的索引碎片,在這種情況下,現(xiàn)在的策略是對索引碎片進行合并,這種方法在碎片合并到一定大小后對現(xiàn)有的索引碎片的合并會造成較大的合并代價,這種索引合并的方式無法避免因為碎片問題引起的更新實時性和查詢QPS性能損耗問題。
[0003]構(gòu)建索引和搜索服務均屬于1密集型的應用,對于同一臺機器上部署這兩個應用就會造成1競爭的問題,嚴重影響索引構(gòu)建和搜索服務的性能。同時,隨著搜索業(yè)務規(guī)模的增大,業(yè)務數(shù)據(jù)呈現(xiàn)爆炸式的增長。在原有的服務器架構(gòu)下構(gòu)建龐大的業(yè)務數(shù)據(jù)索引所花費的時間越來越長,嚴重影響了搜索服務的用戶體驗。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例的目的在于提出一種建立索引的方法及裝置,旨在解決如何提高搜索引擎的索引合并的效率問題。
[0005]為達此目的,本發(fā)明實施例采用以下技術(shù)方案:
[0006]一種建立索引的方法,所述方法包括:
[0007]監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索弓I ;
[0008]將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索弓I,所述新的全量索引用于用戶進行數(shù)據(jù)搜索。
[0009]優(yōu)選地,所述監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引,包括:
[0010]監(jiān)控當前磁盤中存儲的刷入索引文件,獲取η個大小一致的刷入索引,合并獲取到的η個大小一致的刷入索引,生成合并索引。
[0011]優(yōu)選地,所述監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引,包括:
[0012]監(jiān)控磁盤中存儲的刷入索引,根據(jù)所述刷入索引生成的速度預估設置合并影響因子;
[0013]當所述刷入索引大小一致的個數(shù)達到指定的合并影響因子時,則合并指定的合并影響因子的大小一致的刷入索引,生成合并索引。
[0014]優(yōu)選地,所述將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索,包括:
[0015]將所述合并索引與當前的全量索引進行合并,生成新的全量索引和新的合并任務,建立所述新的全量索引和所述新的合并任務的連接;
[0016]將所述新的全量索引存儲到存儲模塊中,監(jiān)控是否完成所述當前全量索引對應的搜索任務;
[0017]在監(jiān)控到已完成所述當前全量對應的搜索任務后,刪除所述當前全量索引。
[0018]優(yōu)選地,所述方法在將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索之前,還包括:
[0019]判斷是否達到構(gòu)建全量索引的時間間隔,若是,則執(zhí)行將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索。
[0020]一種建立索引的裝置,所述裝置包括:
[0021]第一生成單元,用于監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引;
[0022]第二生成單元,用于將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索。
[0023]優(yōu)選地,所述第一生成單元,用于:
[0024]監(jiān)控當前磁盤中存儲的刷入索引文件,獲取η個大小一致的刷入索引,合并獲取到的η個大小一致的刷入索引,生成合并索引。
[0025]優(yōu)選地,所述第一生成單元,用于:
[0026]監(jiān)控磁盤中存儲的刷入索引,根據(jù)所述刷入索引生成的速度預估設置合并影響因子;
[0027]當所述刷入索引大小一致的個數(shù)達到指定的合并影響因子時,則合并指定的合并影響因子的大小一致的刷入索引,生成合并索引。
[0028]優(yōu)選地,所述第二生成單元,用于:
[0029]將所述合并索引與當前的全量索引進行合并,生成新的全量索引和新的合并任務,建立所述新的全量索引和所述新的合并任務的連接;
[0030]將所述新的全量索引存儲到存儲模塊中,監(jiān)控是否完成所述當前全量索引對應的搜索任務;
[0031]在監(jiān)控到已完成所述當前全量對應的搜索任務后,刪除所述當前全量索引。
[0032]優(yōu)選地,所述裝置還包括:
[0033]判斷單元,用于判斷是否達到構(gòu)建全量索引的時間間隔,若是,則執(zhí)行將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索。
[0034]本發(fā)明實施例通過監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引;將所述合并索引與當前的全量索引根據(jù)預設的算法進行合并,生成新的全量索引,所述新的全量索引用于用戶進行數(shù)據(jù)搜索,通過對現(xiàn)有生成的較小的索引按照一定的規(guī)則進行合并,從而減少較小的索引的個數(shù),當索引碎片的大小達到一定的閾值后,則采用全量索引構(gòu)建的策略,從而降低了搜索引擎的性能消耗,影響整個搜索任務和索引建立等任務的效率。
【附圖說明】
[0035]圖1是本發(fā)明建立索引的方法第一實施例的方法流程示意圖;
[0036]圖2是本發(fā)明建立索引的方法第二實施例的方法流程示意圖;
[0037]圖3是本發(fā)明建立索引的裝置的功能模塊示意圖;
[0038]圖4是本發(fā)明建立索引的裝置的功能模塊示意圖。
【具體實施方式】
[0039]下面結(jié)合附圖和實施例對本發(fā)明實施例作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋本發(fā)明實施例,而非對本發(fā)明實施例的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明實施例相關(guān)的部分而非全部結(jié)構(gòu)。
[0040]實施例一
[0041]參考圖1,圖1是本發(fā)明建立索引的方法第一實施例的方法流程示意圖。
[0042]在實施例一中,所述建立索引的方法包括:
[0043]步驟101,監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引;
[0044]優(yōu)選地,所述監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引,包括:
[0045]監(jiān)控當前磁盤中存儲的刷入索引文件,獲取η個大小一致的刷入索引,合并獲取到的η個大小一致的刷入索引,生成合并索引。
[0046]優(yōu)選地,所述監(jiān)控磁盤中存儲的刷入索引,合并滿足預設的合并策略的刷入索引,生成合并索引,包括:
[0047]監(jiān)控磁盤中存儲的刷入索引,根據(jù)所述刷入索引生成的速度預估設置合并影響因子;
[0048]當所述刷入索引大小一致的個數(shù)達到指定的合并影響因子時,則合并指定的合并影響因子的大小一致的刷入索引,生成合并索引。
[0049]具體的,在實時索引不斷生成的同時,內(nèi)存中會觸發(fā)內(nèi)存索引寫盤的動作,當內(nèi)存中的實時索引的大小達到一定的閾值后,則將索引寫入到磁盤中進行持久化,也就產(chǎn)生了刷入索引。當寫入磁盤的刷入索引不斷增多的時候,會導致搜索任務和索引任務的性能的降低。通過對現(xiàn)有的刷入索引進行合并,減少索引文件的個數(shù),達到性能的優(yōu)化。
[0050]存儲到磁盤的索引文件,本文采取index_flush_0、index_flush_l......等方式命名,當刷入的索引文件增多時,這些文件就必須通過合并的方式來減少文件的個數(shù)。
[0051]對于刷入索引的合并策略:監(jiān)控當前磁盤中存儲的刷入索引文件,采取當出現(xiàn)η個大小一致的刷入索引時,就對當前的刷入索引進行合并,其中的因子η可以通過測試進行選擇。
[0052]合并因子η的選擇策略:刷入索引生成速度較快,則需