本發(fā)明屬于數據檢索領域,尤其涉及一種基于求交算法的搜索方法及搜索系統(tǒng)。
背景技術:
實時搜索(Real Time Search),簡而言之就是對互聯(lián)網上的一些信息進行即時、快速地搜索,實現即搜即得的效果?,F有實時搜索技術方案,通常僅支持倒排求交,即基于每個關鍵詞對應的文檔集合。
在實時搜索的索引建立過程中,每篇文檔分配一個的32位整形數字作為唯一標識,每個詞采用B+的倒排格式存儲這些文檔標識,倒排內部按照文檔標識從小到大排列。例如文檔DOC1包含關鍵詞(A,B,D),Doc2包含關鍵詞(B,C),Doc3包含關鍵詞(C,D),Doc4包括關鍵詞(A,B,C)。其建立的倒排結構如圖1所示。在這種情況下,當發(fā)起檢索串如“AB”時,只要取出A與B的倒排,并采用二分查找的方法,在A或者B中找出相同的文檔集合,即完成倒排求交,最終得到結果“Doc1,Doc4”。
由于高頻詞文檔比較多,倒排比較長,而低頻詞文檔雖然少但是分布非常離散。因此當低頻詞與高頻詞求交時,基本上需要判斷高頻詞所有倒排塊,才可以得到相同集合。如高頻詞有N個倒排塊,低頻詞只有m篇文檔(分布在高頻詞若干個倒排塊里),低頻詞與高頻詞求交需要2N次判斷獲取命中范圍的倒排塊,并且每個倒排塊內部進行l(wèi)og(倒排塊中文檔個數)次比較,才可以判斷是否命中文檔。高頻詞越長,檢索越耗時。
因此現有實時搜索技術方案對高頻詞倒排同時還采用位圖存儲格式,雖然可以提高檢索效率,但是非常耗內存,而且難以擴展和靈活使用;
技術實現要素:
有鑒于此,本發(fā)明的目的在于提供一種基于求交算法的搜索方法及搜索系統(tǒng),可以解決現有技術中消耗內存、難以擴展、且耗時長的技術問題。
為解決上述技術問題,本發(fā)明實施例提供了一種基于求交算法的搜索方法,包括:
對搜索的關鍵詞進行分析,以生成語法樹;
對所述語法樹進行扁平化處理,并選取倒排塊最短的文檔集合作為最小候選集;
遍歷所述最小候選集,并對遍歷結果進行評估,以分別生成倒排求交次數和順排求交次數;
對比所述倒排求交次數和所述順排求交次數,取其次數小者為最優(yōu)求交算法;以及
按照所述最優(yōu)求交算法生成搜索結果。
為解決上述技術問題,本發(fā)明實施例提供了一種基于求交算法的搜索系統(tǒng),包括:
語法樹生成模塊,用于對搜索的關鍵詞進行分析,以生成語法樹;
最小候選集選取模塊,用于對所述語法樹進行扁平化處理,并選取倒排塊最短的文檔集合作為最小候選集;
次數預估模塊,用于遍歷所述最小候選集,并對遍歷結果進行評估,以分別生成倒排求交次數和順排求交次數;
最優(yōu)求交算法選擇模塊,用于對比所述倒排求交次數和所述順排求交次數, 取其次數小者為最優(yōu)求交算法;以及
搜索模塊,用于按照所述最優(yōu)求交算法生成搜索結果。
相對于現有技術,本發(fā)明中的基于求交算法的搜索方法及系統(tǒng),通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
附圖說明
圖1是背景技術提供的倒排求交的結構示意圖;
圖2是本發(fā)明實施例提供的順排求交的結構示意圖;
圖3是本發(fā)明實施例一提供的基于求交算法的搜索方法的工作流程示意圖;
圖4是本發(fā)明實施例二提供的基于求交算法的搜索方法的工作流程示意圖;
圖5是本發(fā)明實施例二提供的語法樹示例圖;
圖6是本發(fā)明實施例三提供的基于求交算法的搜索系統(tǒng)的模塊示意圖;
圖7是本發(fā)明實施例四提供的基于求交算法的搜索系統(tǒng)的模塊示意圖。
具體實施方式
請參照附圖中的圖式,其中相同的組件符號代表相同的組件,本發(fā)明的原理是以實施在一適當的運算環(huán)境中來舉例說明。以下的說明是基于所示例的本發(fā)明的具體實施例,其不應被視為限制本發(fā)明未在此詳述的其它具體實施例。
本發(fā)明原理以上述文字來說明,其并不代表為一種限制,本領域測試人員將可了解到以下所述的多種步驟及操作亦可實施在硬件當中。本發(fā)明的原理使用許多其它泛用性或特定目的運算、通信環(huán)境或組態(tài)來進行操作。
請參閱圖1和圖2,分別倒排求交的結構示意圖和順排求交的結構示意圖。
以下以一實例對倒排求交和順排求交進行對比展示,可以理解的是,所述實施例不應視為對本發(fā)明的限制。其中,假設候選集中共有4個文檔,分別為DOC1、DOC2、DOC3和DOC4;以及4個搜索用的關鍵詞,分別為A、B、C和D。
參照圖1所示的倒排求交結構,展示的為每個關鍵詞A、B和C及其對應的文檔DOC1、DOC2、DOC3和DOC4集合。
參照圖2所示本發(fā)明所提供的順排求交結構,展示的是每篇文檔DOC1、DOC2、DOC3和DOC4對應的關鍵詞A、B、和D集合。
本發(fā)明提供的基于求交算法的搜索方法及系統(tǒng),旨在基于對上述倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法??蓱糜趯崿F實時搜索的產品,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
請參照以下實施例,實施例一側重于基于求交算法的搜索方法的基礎步驟,實施例二側重于基于求交算法的搜索方法的優(yōu)化步驟,實施例三側重于基于求交算法的搜索系統(tǒng)的基礎模塊;而實施例四側重于基于求交算法的搜索系統(tǒng)的優(yōu)化模塊。可以理解的是:雖然各實施例的側重不同,但其設計思想是一致的。且,在某個實施例中沒有詳述的部分,可以參見說明書全文的詳細描述,不再贅述。
實施例一
請參閱圖3,所示為基于求交算法的搜索方法的工作流程示意圖。在本實施例中主要闡述所述基于求交算法的搜索方法的基礎步驟,包括:
在步驟S301中,對搜索的關鍵詞進行分析,以生成語法樹。
其中,所述生成語法樹的步驟,具體包括:
(1)預設分析規(guī)則,所述分析規(guī)則至少包括:詞義分析或語義分析之一者;
(2)按照所述分析規(guī)則對搜索的關鍵詞進行分析;以及
(3)將分析所產生的關鍵詞的集合生成語法樹。
在步驟S302中,對所述語法樹進行扁平化處理,并選取倒排塊最短的文檔集合作為最小候選集。
其中,上述扁平化處理并選取所述最小候選集的步驟具體包括:
(1)對所述語法樹進行扁平化處理,以形成初級候選集;
(2)將所述初級候選集按照倒排塊的長度進行排序,其中,所述倒排塊的長度可以理解為文檔數量的多少;以及
(3)選取倒排塊最短的文檔集合作為最小候選集。
在步驟S303中,遍歷所述最小候選集,并對遍歷結果進行評估,以分別生成倒排求交次數和順排求交次數。
其中,所述順排求交次數,通過關鍵詞個數、最小候選集的文檔個數、以及平均每篇文檔的關鍵詞個數來進行計算。
所述倒排求交次數,通過關鍵詞個數、倒排塊個數、以及倒排塊中文檔個數來進行計算。
在步驟S304中,對比所述倒排求交次數和所述順排求交次數,取其次數小者為最優(yōu)求交算法。
其中,所述選取最優(yōu)求交算法的步驟具體包括:
(1)對比所述倒排求交次數和所述順排求交次數;
(2)若所述倒排求交次數小于順排求交次數,則所述倒排求交次數為最優(yōu)求交算法;
(3)若所述倒排求交次數大于等于順排求交次數,則所述順排求交次數為最 優(yōu)求交算法。
可以理解的是,對比倒排求交次數和順排求交次數相等,則默認優(yōu)先采用順序求交,這樣默認設置的好處是:順序求交在搜索過程中所占內存更小。
其中,通過對倒排求交和順排求交進行評估,以選擇搜索所采用的最優(yōu)求交算法,可以有效的提高搜索的反應速度。
在步驟S305中,按照所述最優(yōu)求交算法生成搜索結果。
本發(fā)明中的基于求交算法的搜索方法,通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
實施例二
請參閱圖4,所示為基于求交算法的搜索方法的工作流程示意圖。在本實施例中主要闡述所述基于求交算法的搜索方法的優(yōu)化步驟??梢岳斫獾氖?,在本圖中,基礎步驟仍以S30開頭,優(yōu)化步驟以S40開頭,以示更好的區(qū)分其異同。其中步驟的執(zhí)行順序可參照下述的出現順序或圖4中的箭頭順序。
在本實施例中,所述基于求交算法的搜索方法的包括:
在步驟S401中,接收檢索串,并對所述檢索串進行切分以生成關鍵詞。
其中,所述生成關鍵詞的步驟,具體包括:
(1)預設切詞規(guī)則,所述切詞規(guī)則至少包括:基于字符串匹配切詞法、基于詞義切詞法、以及基于統(tǒng)計的切詞法中的一種;以及
(2)將檢索串按照所述切詞規(guī)則切分成若干關鍵詞。
在步驟S301中,對所述關鍵詞進行分析,以生成語法樹。
以圖5為例,所示為一語法樹的示例,表述為:
(A∩((B∩C)∪(D)∪(E∩F))),其中A、B、C、D、 E、和F皆為關鍵詞。
在步驟S402中,對所述語法樹進行扁平化處理,以生成初級候選集。
扁平化處理,主要把語法樹中多層語法關系簡化成通過交集關系進行連接的兩層語法樹。仍以圖5的語法樹為例,
(A∩((B∩C)∪(D)∪(E∩F)))簡化為:(A∩(B∪D∪E)∩(B∪D∪F)∩(C∪D∪E)∩(C∪D∪F)。
這樣簡化成兩層語法樹后,在求交過程中不需要緩存其他組合的結果。求交過程只需要判斷所有文檔的集合中,任意關鍵詞是否命中即可。
在步驟S403中,在所述初級候選集中選取倒排塊最短的文檔集合,作為最小候選集。
其中,將所述初級候選集按照倒排塊的長度進行排序,具體包括:
(1)判斷所述初級候選集是否是復合集合,其中,若存在并集關系則視為復合集合,若不存在并集關系則視為非復合集合;
(2)若是所述復合集合,則所述倒排塊的長度等于初級候選集所有關鍵詞的文檔數量的累加值;或
(3)若不是復合集合,則所述倒排塊的長度等于文檔的數量;以及
(4)將所述初級候選集按照所述倒排塊長度從小到大進行排列。
可以理解的是,選擇最小候選集,即選擇文檔數量最小的集合,可以大大降低比較的次數,從而提高搜索的反應速度。
仍以圖5的語法樹為例,用公式表述所述最小候選集的選取為:
Candidate=MIN(A,(B,D,E),(B,D,F),(C,D,E),(C,D,F))。
在步驟S404中,按照倒排求交遍歷所述最小候選集,并對所述最小候選集 進行預估,生成倒排求交次數。
其中,生成倒排求交次數的步驟,具體包括:
(1)遍歷所述最小候選集中的文檔;
(2)按照每個集合中的關鍵詞,依次尋找命中所述關鍵詞的倒排塊;
(3)在所述倒排塊中采用二分查找的方法查找命中所述關鍵詞的文檔;以及
(4)當查找到所述命中所述關鍵詞的文檔后,計算命中所述關鍵詞的文檔的所用的次數,得到倒排求交次數。
可以理解的是,所述倒排求交次數,通過關鍵詞個數、倒排塊個數、以及倒排塊中文檔個數來進行計算。用公式表述為:
在步驟S405中,按照順排求交遍歷所述最小候選集,并對所述最小候選集進行預估,以生成順排求交次數。
其中,所述生成順排求交次數,具體包括:
(1)對所述最小候選集所中的文檔和關鍵詞建立索引,所述索引包括:對每個關鍵詞建立倒排的文檔集合、對每篇文檔建立順排的關鍵詞集合;
(2)通過所述索引計算所述關鍵詞在各文檔中的緊鄰度、完全匹配度;
(3)根據所述關鍵詞的緊鄰度、完全匹配度來計算各文檔的排序順序;
(4)按照所述排序順序遍歷所述最小候選集中的文檔;
(5)依次判斷每個集合的關鍵詞是否命中所述最小候選集中的文檔;以及
(6)當命中所述最小候選集中的文檔后,計算命中所述最小候選集中的文檔的所用的次數即為倒排求交次數。
可以理解的是,所述順排求交次數,通過關鍵詞個數、候選集的文檔個數、 以及平均每篇文檔的關鍵詞個數來進行計算。用公式表述為:
在步驟S406中,判斷所述倒排求交次數是否小于所述順排求交次數。
在步驟S407中,在倒排求交次數與順排求交次數中取其次數小者為最優(yōu)求交算法,并按照所述最優(yōu)求交算法生成搜索結果。
其中,通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,可以有效的提高搜索的反應速度。
本發(fā)明中的基于求交算法的搜索方法,通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
實施例三
請參閱圖6,所示為基于求交算法的搜索系統(tǒng)的模塊示意圖。在本實施例中主要闡述所述基于求交算法的搜索系統(tǒng)600的基礎模塊,包括:語法樹生成模塊10、最小候選集選取模塊20、次數預估模塊30、最優(yōu)求交算法選擇模塊40、以及搜索模塊50。
語法樹生成模塊10,用于對搜索的關鍵詞進行分析,以生成語法樹。
最小候選集選取模塊20,用于對所述語法樹進行扁平化處理,并選取倒排塊最短的文檔集合作為最小候選集。
次數預估模塊30,用于遍歷所述最小候選集,并對遍歷結果進行評估,以分別生成倒排求交次數和順排求交次數。
其中,順排求交次數,通過關鍵詞個數、最小候選集的文檔個數、以及平均每篇文檔的關鍵詞個數來進行計算。所述倒排求交次數,通過關鍵詞個數、倒排塊個數、以及倒排塊中文檔個數來進行計算。
最優(yōu)求交算法選擇模塊40,用于對比所述倒排求交次數和所述順排求交次數,取其次數小者為最優(yōu)求交算法。
搜索模塊50,用于按照所述最優(yōu)求交算法生成搜索結果。
本發(fā)明中的基于求交算法的搜索系統(tǒng),通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
實施例四
請參閱圖7,所示為基于求交算法的搜索系統(tǒng)的模塊示意圖。在本實施例中主要闡述所述基于求交算法的搜索系統(tǒng)700的優(yōu)選模塊,包括:語法樹生成模塊10、最小候選集選取模塊20、次數預估模塊30、最優(yōu)求交算法選擇模塊40、搜索模塊50、以及關鍵詞切詞模塊60。
其中,所述關鍵詞切詞模塊60,用于接收檢索串,并對所述檢索串進行切分以生成搜索的關鍵詞。
具體而言,所述關鍵詞切詞模塊60,包括:切詞規(guī)則子模塊61和切詞子模塊62。其中,所述切詞規(guī)則子模塊61,用于預設切詞規(guī)則,所述切詞規(guī)則至少包括:基于字符串匹配切詞法、基于詞義切詞法、以及基于統(tǒng)計的切詞法中的一種。所述切詞子模塊62,用于將檢索串按照所述切詞規(guī)則切分成若干關鍵詞。
語法樹生成模塊10,用于對搜索的關鍵詞進行分析,以生成語法樹。
具體而言,所述語法樹生成模塊10,包括:分析規(guī)則子模塊11、分析子模塊12、以及集合子模塊13。其中,分析規(guī)則子模塊11,用于預設分析規(guī)則,所述分析規(guī)則至少包括:詞義分析或語義分析之一者。分析子模塊12,按照所述分析規(guī)則對所述搜索的關鍵詞進行分析。集合子模塊13,用于將分析所產生 的關鍵詞的集合生成語法樹。最小候選集選取模塊20,用于對所述語法樹進行扁平化處理,并選取倒排塊最短的文檔集合作為最小候選集。
具體而言,所述最小候選集選取模塊20包括:初級候選集子模塊21及最小候選集子模塊22。
其中,所述初級候選集子模塊21,用于對所述語法樹進行扁平化處理,以形成初級候選集。其中所述初級候選集為通過交集關系進行連接的兩層語法樹。
所述最小候選集子模塊22,用于將所述初級候選集按照倒排塊的長度進行排序,并選取倒排塊最短的文檔集合作為最小候選集??梢岳斫獾氖牵古艍K最短,即文檔數最少的集合。
次數預估模塊30,用于遍歷所述最小候選集,并對遍歷結果進行評估,以分別生成倒排求交次數和順排求交次數。
其中,順排求交次數,通過關鍵詞個數、最小候選集的文檔個數、以及平均每篇文檔的關鍵詞個數來進行計算。所述倒排求交次數,通過關鍵詞個數、倒排塊個數、以及倒排塊中文檔個數來進行計算。
最優(yōu)求交算法選擇模塊40,用于對比所述倒排求交次數和所述順排求交次數,取其次數小者為最優(yōu)求交算法。
其中,當二者相等時,默認選擇順排求交,因其占內存相對較小。
搜索模塊50,用于按照所述最優(yōu)求交算法生成搜索結果。
本發(fā)明中的基于求交算法的搜索系統(tǒng),通過對倒排求交和順排進行求交進行評估以選擇搜索所采用的最優(yōu)求交算法,具有內存占用少、易于擴展、且搜索反應快速及時的優(yōu)勢。
本發(fā)明實施例提供的基于求交算法的搜索方法及系統(tǒng)屬于同一構思,其具體實現過程詳見說明書全文,此處不再贅述。
綜上所述,雖然本發(fā)明已以優(yōu)選實施例揭露如上,但上述優(yōu)選實施例并非用以限制本發(fā)明,本領域的普通測試人員,在不脫離本發(fā)明的精神和范圍內,均可作各種更動與潤飾,因此本發(fā)明的保護范圍以權利要求界定的范圍為準。