專利名稱:用于搜索引擎索引的混合分布模型的制作方法
用于搜索引擎索引的混合分布模型
背景技術:
可以在因特網上獲得的信息和內容的數量持續快速增多。在海量信息的情況下, 已經開發出搜索引擎以便于搜索電子文檔。具體來說,用戶可以通過輸入包括其可能感興趣的一項或更多項的搜索查詢來搜索信息和文檔。在接收到來自用戶的搜索查詢之后,搜索引擎基于搜索查詢識別出相關的文檔和/或網頁。由于其實用性,web搜索(即針對用戶發出的搜索查詢找到相關的網頁和文檔的處理)可證明地已經成為當今因特網上的其中一項最為普及的服務。此外,搜索引擎通常使用一步處理,其基于所接收到的搜索查詢利用搜索索引識別出相關文檔以便返回給用戶。但是搜索引擎排序功能已經變成非常復雜的功能,如果其被用于所索引的每一個文檔的話可能不僅費時而且代價高昂。此外,對于這些復雜的公式所需要的數據存儲也可以會帶來問題,特別當以通常由單詞或短語索引的倒排索引存儲時尤其如此。當以倒排索引存儲時,提取對于復雜公式所需的相關數據的效率很低。
發明內容
提供本概要是為了以簡化形式介紹所選概念,下面在具體實施部分中將對其進行進一步的描述。本概要不意圖標識所要求保護的主題內容的關鍵特征或實質特征,也不意圖被用來幫助確定所要求保護的主題內容的范圍。本發明的實施例涉及在相同的節點集合上采用原子碎片化(sharded)和文檔碎片化分布二者,從而使得每一個節點或機器存儲倒排索引的一部分(其例如由原子碎片化)和正排索引的一部分(其例如由文檔碎片化)。可以為片段指定其所負責的文檔群組。所述文檔群組由原子和文檔二者索引,從而存在與該文檔群組相關聯的倒排索引和正排索引。每一個片段包括多個節點,并且可以為每一個節點指定倒排和正排索引二者的不同部分。此外,每一個節點負責利用存儲在其上的倒排和正排索引部分二者執行多項排序計算。舉例來說,初步排序處理可以利用倒排索引,并且最終排序處理可以利用正排索引。這些排序處理形成被采用來基于所接收到的搜索查詢識別最具相關性的文檔的總體排序處理。
下面將參照附圖詳細描述本發明,其中
圖1是適用于實施本發明的實施例的示例性計算環境的方框圖; 圖2是可以在其中采用本發明的實施例的示例性系統的方框圖; 圖3是根據本發明的實施例的混合分布系統的示例圖; 圖4是根據本發明的實施例的示出了有效載荷要求的混合分布系統的示例圖; 圖5是示出了根據本發明的實施例的用于根據搜索查詢利用混合分布系統來識別相關文檔的方法的流程圖6是示出了根據本發明的實施例的用于為多處理文檔檢索系統生成混合分布系統的方法的流程圖;以及圖7是示出了根據本發明的實施例的用于根據搜索查詢利用混合分布系統來識別相關文檔的方法的流程圖。
具體實施例方式在這里將詳細描述本發明的主題內容以滿足法定要求。但是這里的描述本身不意圖限制本專利的范圍。相反,本發明的發明人已經設想到還可以按照其他方式來具體實現所要求保護的主題內容,以便與其他的現有或未來技術相結合地包括與本文獻中所描述的類似的不同步驟或步驟組合。此外,雖然在這里可以使用術語“步驟”和/或“方框”來指代所采用的方法的不同元素,但是除非明確地描述各個單獨步驟的順序,否則所述術語不應被解釋為意味著這里所公開的各個步驟當中或之間的任何特定順序。如前所述,本發明的實施例提供形成片段的各個節點以便分別存儲用于該片段的倒排索引和正排索引的一部分。舉例來說,在將要索引的文檔總量(例如一萬億)當中,可以為每一個片段分配特定文檔部分,從而使得該片段負責對這些文檔進行索引并且執行排序計算。存儲在該特定片段上的倒排索引和正排索引的所述部分是關于被指定給該片段的文檔的完整倒排和正排索引。每一個片段由多個節點構成,所述節點實質上是具有存儲能力的機器或計算設備。為片段中的每一個節點指定倒排索引和正排索引的獨立部分,從而使得可以采用每一個節點來執行各種排序計算。因此,每一個節點已經在其上存儲所述片段的倒排索引和正排索引的子集,并且負責在該片段內的各種排序處理中訪問其中的每一項。舉例來說,總體排序處理可以包括匹配階段、初步排序階段和最終排序階段。匹配/初步階段可能需要采用其倒排索引對來自搜索查詢的特定原子進行了索引的那些節點來識別與搜索查詢相關的第一文檔集合。第一文檔集合是來自被分配給所述片段的文檔的文檔集合。隨后可以采用其正排索引對與第一文檔集合中的某一文檔相關聯的文檔標識進行了索引的那些節點來識別與搜索查詢相關性更高的第二文檔集合。在一個實施例中,第二文檔集合是第一文檔集合的子集。這一總體處理可以被采用來把文檔集合限制到被發現具有相關性的那些文檔,從而采用通常比初步排序處理更加耗時并且成本更高的最終排序處理來對與不管相關與否都對索引中的每一個文檔進行排序的情況相比較少的文檔進行排序。相應地,在一個方面,本發明的一個實施例是針對存儲計算機可用指令的一種或更多種計算機存儲介質,當由計算設備使用時,所述計算機可用指令使得計算設備執行一種基于搜索查詢利用混合分布系統來識別相關文檔的方法。所述方法包括為片段分配文檔群組,所述文檔群組在倒排索引中由原子索引并且在正排索引中由文檔索引;以及在形成所述片段的多個節點當中的每一個節點上存儲倒排索引和正排索引的不同部分。此外, 所述方法還包括訪問存儲在第一節點集合當中的每一個節點上的倒排索引部分,以便識別與搜索查詢相關的第一文檔集合。所述方法附加地還包括基于與第一文檔集合相關聯的文檔標識,訪問存儲在第二節點集合當中的每一個節點上的正排索引部分,以便把第一文檔集合中的相關文檔的數量限制到第二文檔集合。在另一個實施例中,本發明的一方面是針對存儲計算機可用指令的一種或更多種計算機存儲介質,當由計算設備使用時,所述計算機可用指令使得計算設備執行一種為多處理文檔檢索系統生成混合分布系統的方法。所述方法包括接收關于被指定給片段的文檔群組的指示,所述片段包括多個節點。對于所述片段,所述方法還包括通過原子索引所分配的文檔群組以便生成倒排索引,并且通過文檔索引所分配的文檔群組以便生成正排索引。所述方法附加地還包括將倒排索引的一部分和正排索引的一部分指定給形成所述片段的多個節點當中的每一個,從而使得所述多個節點當中的每一個存儲正排索引的不同部分和倒排索引的不同部分。本發明的另一個實施例是針對存儲計算機可用指令的一種或更多種計算機存儲介質,當由計算設備使用時,所述計算機可用指令使得計算設備執行一種基于搜索查詢利用混合分布系統來識別相關文檔的方法。所述方法包括接收搜索查詢;識別搜索查詢中的一個或更多原子;以及向分別被指定由原子和文檔二者索引的文檔群組的多個片段傳送所述一個或更多原子,從而使得在所述多個片段當中的每一個片段處生成并存儲倒排索引和正排索引。所述多個片段當中的每一個由多個節點構成,所述節點分別被指定正排索引和倒排索引的一部分。基于所述一個或更多原子,所述方法在第一片段處識別出其倒排索引部分包含來自搜索查詢的所述一個或更多原子當中的至少一個的第一節點集合。此外, 所述方法還包括訪問存儲在第一節點集合當中的每一個節點處的倒排索引部分,以便識別出被發現與所述一個或更多原子相關的第一文檔集合;以及基于與第一文檔集合相關聯的文檔標識,識別出其正排索引部分包含與第一文檔集合相關聯的其中一個或更多文檔標識的第二節點集合。所述方法還包括訪問存儲在第二節點集合當中的每一個節點處的正排索引部分,以便識別出作為第一文檔集合的子集的第二文檔集合。在簡要描述了本發明的實施例的總覽之后,下面將描述可以在其中實施本發明的實施例的示例性操作環境,以便提供對應于本發明的各個方面的一般情境。首先特別參照圖1,其中用于實施本發明的實施例的示例性操作環境被示出并且總體上標記為計算設備 100。計算設備100僅僅是適當的計算環境的一個示例,其不意圖暗指對于本發明的使用范圍或功能的任何限制。計算設備100也不應當被解釋為具有與所示出的任一個組件或組件組合有關的任何依賴性或要求。可以在計算機代碼或機器可用指令的一般情境中描述本發明,其中包括諸如程序模塊之類的計算機可執行指令,其由計算機或其他機器執行,比如個人數字助理或其他手持式設備。一般來說,包括例程、程序、對象、組件、數據結構等等的程序模塊指代執行特定任務或者實施特定抽象數據類型的代碼。可以在多種系統配置中實踐本發明,其中包括手持式設備、消費電子設備、通用計算機、更加專業的計算設備等等。還可以在分布式計算環境中實踐本發明,其中各項任務由通過通信網絡鏈接的遠程處理設備執行。參照圖1,計算設備100包括直接或間接地耦合以下設備的總線110 存儲器112、 一個或更多處理器114、一個或更多呈現組件116、輸入/輸出(I/O)端口 118、輸入/輸出組件120以及說明性電源122。總線110代表一種或更多種總線(比如地址總線、數據總線或其組合)。雖然圖1的各個方框出于簡單起見是用線條示出的,但是在實際情況中各個組件的邊界并不是如此明確的,并且比方來說所述線條更準確地將是灰色且模糊的。舉例來說,可以把諸如顯示設備之類的呈現組件視為I/O組件。此外,處理器具有存儲器。本發明的發明人認識到這正是本領域的性質,并且重申圖1的圖示僅僅是為了說明可以結合本發明的一個或更多實施例使用的示例性計算設備。在諸如“工作站”、“服務器”、“膝上型計算機”、“手持式設備”等等之間不做區分,這是因為所有這些都被設想在圖1的范圍內并且被稱作“計算設備”。
計算設備100通常包括多種計算機可讀介質。計算機可讀介質可以是能夠由計算機設備100訪問的任何可用介質,其包括易失性和非易失性介質、可移除和不可移除介質。 作為示例而非限制,計算機可讀介質可以包括計算機存儲介質和通信介質。計算機存儲介質包括在用于存儲諸如計算機可讀指令、數據結構、程序模塊或其他數據之類的信息的任何方法或技術中所實施的易失性和非易失性、可移除和不可移除介質。計算機存儲介質包括(但不限于)RAM、ROM、EEPR0M、閃存或其他存儲器技術、CD-ROM、數字通用盤(DVD)或其他光盤存儲、磁盒、磁帶、磁盤存儲或其他磁存儲設備或者可以被用來存儲所期望的信息并且可以由計算設備100訪問的任何其他介質。通信介質通常在諸如載波之類的已調數據信號或其他傳輸機制中具體實現計算機可讀指令、數據結構、程序模塊或其他數據,并且包括任何信息遞送介質。術語“已調數據信號”是指其一項或更多項特性被設定或改變來在其中編碼信息的信號。作為示例而非限制,通信介質包括諸如有線網絡或直接布線連接之類的有線介質,以及諸如聲學、RF、紅外和其他無線介質之類的無線介質。任何前述內容的各種組合也應當被包括在計算機可讀介質的范圍內。存儲器112包括具有易失性和/或非易失性存儲器的形式的計算機存儲介質。所述存儲器可以是可移除的、不可移除的或者其組合。示例性的硬件設備包括固態存儲器、硬盤驅動器、光盤驅動器等等。計算設備100包括從諸如存儲器112或者I/O組件120之類的各種實體讀取數據的一個或更多處理器。(多個)呈現組件116向用戶或其他設備呈現數據指示。示例性的呈現組件包括顯示設備、揚聲器、打印組件、振動組件等等。I/O端口 118允許計算設備100邏輯地耦合到包括I/O組件120在內的其他設備, 其中一些可以是內建的。說明性組件包括麥克風、操縱桿、游戲手柄、碟形衛星天線、掃描儀、打印機、無線設備等等。現在參照圖2,該圖提供了示出可以在其中采用本發明的實施例的示例性系統 200的方框圖。應當理解的是,這里所描述的該種設置和其他設置僅僅是作為示例來闡述的。作為所示設置和元件的補充或替換可以使用其他設置和元件(例如機器、接口、功能、順序以及功能分組等等),并且可以完全省略某些元件。此外,這里所描述的許多元件是可以被實施為分立或分布式組件或者結合其他組件實施并且以任何適當組合和位置實施的功能實體。在這里被描述為由一個或更多實體執行的各項功能可以由硬件、固件和/或軟件實施。舉例來說,各項功能可以由執行存儲在存儲器中的指令的處理器實施。在未示出的其他組件當中,系統200包括用戶設備202、片段204以及混合分布系統服務器206。圖2中所示的每一個組件可以是任何類型的計算設備,比如例如參照圖1描述的計算設備100。各個組件可以通過網絡208彼此通信,所述網絡可以包括(而不限于) 一個或更多局域網(LAN)和/或廣域網(WAN)。這樣的聯網環境在辦公室、企業范圍計算機網絡、內聯網和因特網中是常見的。應當理解的是,在本發明的范圍內,在系統200內可以采用任意數目的用戶設備、片段以及混合分布系統服務器。其中的每一項可以包括單個設備或者在分布式環境中協作的多個設備。舉例來說,所述片段可以包括設置在分布式環境中的多個設備,其共同提供這里所描述的片段204的功能。此外,在系統200內還可以包括未示出的其他組件,而在某些實施例中則可以省略圖2中所示的組件。用戶設備202可以是由可以訪問網絡208的末端用戶所擁有和/或操作的任何類型的計算設備。舉例來說,用戶設備202可以是臺式計算機、膝上型計算機、平板計算機、移動設備或者具有網絡接入的任何其他設備。一般來說,末端用戶可以特別采用用戶設備202 來通過向搜索引擎提交搜索查詢而訪問電子文檔。舉例來說,末端用戶可以采用用戶設備 202上的web瀏覽器來訪問并查看存儲在系統中的電子文檔。片段204通常包括多個節點,其也被稱作葉片。在圖2中示出了兩個節點,其中包括編號為210的節點1和編號為212的節點2。雖然在圖2的實施例中示出了兩個節點, 但是各個片段可以包括遠多于兩個節點(例如10、40、100個)。兩個節點僅僅是出于示例性的目的而示出的。每一個片段(比如片段204)被分配其所負責的文檔群組。這樣,在片段 204處生成并存儲倒排索引和正排索引。雖然可以在片段204本身處生成用于該特定片段的倒排索引和正排索引,但是在一個替換實施例中,可以在某一其他位置處或者在某一其他計算設備上生成所述索引并且將其發送到片段204。此外,一旦基于被分配給片段204的文檔群組生成倒排索引和正排索引,就把全部兩項索引分成各個部分。在一個實施例中,所述部分的數目等于與特定片段相關聯的節點的數目。因此,在特定片段中有40個節點的情況下,全部兩項索引都被分成40個部分,從而使得每一個節點負責倒排索引和正排索引當中的每一項的不同部分。如圖所示,節點1具有倒排索引部分214和正排索引部分216。節點2也具有倒排索引部分218和正排索引部分220。雖然被顯示為與節點分開,但是在一個實施例中,所述索引被存儲在節點本身之上。在任何情況下,每一個節點都負責基于被指定給該片段的文檔群組而被索引的倒排索引和正排索引的一部分。如前所述,索引可以通過原子來索引或碎片化(倒排索引)或者通過文檔來碎片化 (正排索引)。這里所使用的碎片化(sharding)指的是通過原子或文檔對文檔集合進行索引的處理。單獨利用每一種方法而不利用另一種有其優點和缺點。舉例來說,當通過文檔碎片化時,優點包括各個碎片之間的處理隔離,從而只需要合并結果即可。此外,每文檔的信息很容易與匹配對準。另外,網絡通信量較小。與此相對,缺點包括需要每一個碎片來處理任何特定查詢。如果將倒排索引數據放置在一張盤上,則對于N個碎片上的K原子查詢需要最少O(KN)次盤尋找。當通過原子碎片化時,優點包括減少了計算,從而只需要K個碎片來處理K原子查詢。如果將倒排索引數據放置在一張盤上,則對于K原子查詢需要O(K)次盤尋找。但是與此相對,缺點包括需要連接的處理,從而存儲參與查詢的原子的所有碎片都需要合作。除了每文檔的信息不容易管理之外,網絡通信量也很大。本發明的實施例與傳統方法相比需要對每文檔數據的較少管理。造成這一結果的原因包括預先計算了一些分數并且在諸如倒排索引的索引中進行評分,并且對于文檔的進一步細化和過濾也在匹配階段 (LO)之后發生。因此,在對于每文檔數據的管理方面,前面所描述的缺點被大大減少。此外,特定片段中的每一個節點都能夠執行各種功能,包括允許識別相關搜索結果的排序功能。在一些實施例中,搜索引擎可以采用分級處理來選擇用于搜索查詢的搜索結果。在這里,每一個節點可以能夠采用總體排序處理的多個級。下面將描述一個示例性排序處理,但是其僅僅是可以由每一個節點采用的排序處理的一個示例。當接收到搜索查詢時可以執行總體排序處理,以便把匹配文檔的數量減少到可管理的大小。當接收到搜索查詢時,對搜索查詢進行分析以便識別出原子。隨后可以在總體排序處理的各級期間使用所述原子。這些級可以被稱作LO級(匹配級),其用來查詢搜索索引并且識別出包含來自搜索查詢的原子的初始匹配文檔集合。這一初始處理可以把來自搜索索引中所索引的所有文檔的候選文檔的數目減少到與來自搜索查詢的原子相匹配的那些文檔。舉例來說,搜索引
8擎可能搜索成百萬或者甚至成萬億的文檔以確定與特定搜索查詢最具相關性的文檔。一旦 LO匹配級完成之后,候選文檔的數目就大大減少。但是用于找到最具相關性的文檔的許多算法都耗時并且成本高。因此,可以采用兩個其他級,其中包括初步排序級和最終排序級
初步排序級也被稱作Ll級,其采用簡化評分功能,所述簡化評分功能被用來為從前面所描述的LO匹配級保留下來的候選文檔計算初步分數或排序。因此初步排序組件210負責為從LO匹配級保留下來的每一個候選文檔提供初步排序。可替代地,可以為候選文檔評分,從而給出絕對數字而不是排序。與最終排序級相比,初步排序級被簡化,這是因為其僅僅采用由最終排序級所使用的排序特征的子集。舉例來說,在最終排序級中所使用的其中一項或更多項(但是在一些實施例中并非所有的)排序特征被初步排序級所采用。此外,最終排序級沒有采用的特征也可以被初步排序級所采用。在本發明的實施例中,初步排序級所使用的排序特征沒有原子相依性,比如項目接近性和項目共生性。僅僅出于示例性目的, 在初步排序級中所使用的排序特征例如可以包括靜態特征和動態原子隔離分量。靜態特征通常是僅僅關注獨立于查詢的特征的那些分量。靜態特征的示例包括頁面排序、特定網頁的垃圾信息評定等等。動態原子隔離分量是每次僅僅關注與單個原子有關的特征的分量。 示例可以包括例如BM25f、特定原子在文檔中的頻率、原子在文檔中的位置(情境)(例如標題、URL、錨點、標題、主體、流量、分類、屬性)等等。一旦通過初步排序級再次減少候選文檔的數目,最終排序級(其也被稱作L2級)就對由初步排序級為之提供的候選文檔進行排序。與用在初步排序級中的排序特征相比,結合最終排序級使用的算法是具有數目更多的排序特征的更加昂貴的操作。但是最終排序算法被應用于數目少得多的候選文檔。最終排序級算法提供已排序文檔集合,并且根據所述已排序文檔集合響應于原始搜索查詢而提供搜索結果。在一些實施例中,這里所描述的最終排序級可以采用正排索引。回到圖2,混合分布系統服務器206由文檔分配組件222、查詢解析組件224、查詢分布組件2 和結果合并組件2 構成。文檔分配組件222通常負責向被用在給定排序系統中的各個片段分配文檔。僅僅出于示例性目的,如果需要索引1億個文檔并且有100個片段可用,則可以為每一個片段分派100萬個文檔。或者在更大的尺度上,如果需要索引1 萬億個文檔并且有10萬個片段可用,則可以為每一個片段分派1000萬個文檔。可以如前面的示例所表明的那樣均勻地在各個片段之間分派文檔,或者可以按照不同的方式劃分, 從而使得每一個片段所負責的文檔數目不完全相同。當通過用戶設備202上的用戶接口接收到搜索查詢時,查詢解析組件2M例如操作來重新制定所述查詢。基于如何在搜索索引中對數據進行索引,將所述查詢從其自由文本形式重新制定成便于對諸如倒排索引和正排索引之類的搜索索引進行查詢的格式。在各實施例中,對搜索查詢的各項進行解析及分析,以便識別出可以被用來查詢搜索索引的原子。識別所述原子所使用的技術可以類似于在搜索索引中對文檔進行索引時被用來識別文檔中的原子的技術。舉例來說,可以基于項目統計量和查詢分布信息來識別原子。查詢解析組件2M可以提供原子聯結集合以及這些原子的級聯變體。這里所使用的原子或原子單元可以指代查詢或文檔的多種單元。這些單元例如可以包括項目、n元語法、η元組、k鄰近η元組等等。項目向下映射到由所使用的特定令牌化器技術定義的單個符號或單詞。在一個實施例中,項目是單個字符。在另一個實施例中,項
9目是單個單詞或單詞分組。η元語法是可以從文檔中提取的由“η”個接連的或幾乎接連的項目構成的序列。如果其對應于一系列連續項目則說η元語法是“緊密的”,并且如果其按照各個項目出現在文檔中的順序包含所述項目但是所述項目不一定是接連的,則說η元語法是“松散的”。松散的η元語法通常被用來代表一類等效短語,所述短語只有無關緊要的單詞不同(例如“如果下雨我就會變濕”和“如果下雨則我就會變濕”)。這里所使用的η元組是由共同出現(與順序無關)在文檔中的“η”個項目構成的集合。此外,這里所使用的k 鄰近η元組指代在文檔中的由“ k”個項目構成的窗口內共同出現的由“η ”個項目構成的集合。因此,原子通常被定義為所有上述內容的一般化。本發明的各個實施例的實現方式可以使用不同種類的原子,但是這里所使用的原子通常描述前述各類當中的每一類。查詢分布組件2 實質上負責接收所提交的搜索查詢并且將其分布在各個片段當中。在一個實施例中,每一項搜索查詢被分布到每一個片段,從而使得每一個片段提供初步搜索結果集合。舉例來說,當片段接收到搜索查詢時,該片段或者該片段內的組件確定將為哪些節點分派利用存儲在所述節點上的倒排索引部分執行初步排序功能的任務。在一種情況下,作為第一節點集合的一部分的所選節點是其倒排索引已經索引了從搜索查詢中解析出的一個或更多原子的那些節點,正如前面所描述的那樣。因此,當重新制定搜索查詢時,識別出一個或更多原子并且將其發送到每一個片段。第一節點集合當中的每一個節點基于初步排序功能返回被發現與搜索查詢相關的第一文檔集合,正如前面簡要描述的那樣。隨后確定第二節點集合。在一個實施例中,這些節點當中的每一個都在其對應的正排索引中存儲了第一文檔集合當中的至少一個文檔。第二節點集合當中的每一個節點利用正排索引數據和其他考慮因素執行最終排序功能,并且作為結果識別出第二文檔集合。在一個實施例中,第二集合當中的每一個文檔都被包括在第一集合中,因為在最終排序級中使用了與第一文檔集合相關聯的文檔標識。為結果合并組件2 提供來自每一個片段的搜索結果(例如文檔標識和摘錄),并且從這些結果形成合并的最終搜索結果列表。有多種方式用以形成最終搜索結果列表,其中包括簡單地去除任何重復文檔并且按照由最終排序確定的順序將每一個文檔放入列表中。在一個實施例中,在每一個片段上都存在類似于結果合并組件2 的組件,從而在該片段處把由每一個節點產生的結果合并到單個列表中,并且隨后把所述列表發送到結果合并組件2觀。現在參照圖3,圖中示出了根據本發明的實施例的混合分布系統300的示例圖。圖 3示出了各個組件,其中包括語料庫管理器310、語料庫根部312以及兩個片段,即片段314 和片段316。可以提供多于兩個片段,正如省略號318所表明的那樣。語料庫管理器310保持哪些處理服務于正排索引和倒排索引的哪一個碎片的狀態。其還保持每一個處理的溫度和狀態。該數據被用來生成用于將查詢向外聯合到不同片段的處理集合。語料庫根部312 是頂層根部處理,其還執行查詢規劃功能。語料庫根部312將把查詢分散到所有所需片段上并且收集、合并結果,其可以包括定制邏輯。每一個片段具有片段根部,比如片段根部320 和片段根部322。片段根部充當用于聯合查詢并且聚集來自所聯合的處理的結果的處理。 片段根部322可能是被重新指定給對于最終查詢組配來說最優的葉片或節點的動態處理。如圖所示,每一個片段根部包括多個節點。由于空間約束,對于片段根部320和片段根部332示出了三個節點。片段根部320包括節點322、節點3 和節點326。省略號328表明在本發明的范圍內可以設想多于三個節點。片段根部334包括節點334、節點336 和節點338。由于可以由任意數目的節點構成片段根部,因此省略號340表明任意附加數量的節點。如前所述,每一個節點是能夠執行多項計算(比如排序功能)的機器或計算設備。 舉例來說,在一個實施例中,每一個節點包括LOl匹配器322A和L2排序器322B,正如在節點322處所示出的那樣。類似地,節點3;34包括LOl匹配器334A和L2排序器334B。這些內容在前面做了更加詳細的描述,但是總體排序處理的LO匹配和Ll排序階段(初步排序階段)可以被組合并且統稱為LOl匹配器。由于每一個節點包括LOl匹配器和L2排序器,因此每一個節點一定還存儲了倒排索引和正排索引的一部分,這是因為LOl匹配器在一個實施例中利用倒排索引,并且L2排序器利用正排索引。如前所述,每一個節點可以被指定屬于所述片段的倒排和正排索引的一部分。與片段314相關聯的片段通信總線330和與片段 316相關聯的片段通信總線342允許每一個節點在必要時例如與片段根部通信。圖4是根據本發明的一些實施例的示出了有效載荷要求的混合分布系統400的示例圖。系統400是具有多個節點的單個片段根部410的圖示。在這里示出了六個節點(其中包括編號為412、414、416、418、420和422的節點)。雖然示出了六個節點,但是可以利用任意數目的節點來實施本發明的實施例。如前所述,每一個節點具有執行各種排序計算的功能,其中包括匹配級(L0)、初步排序級(Li)和最終排序級(L2)中的那些排序計算。因此, 節點412例如具有用于這里所描述的LO和Ll級的LOl匹配器412A和用于這里所描述的 L2級的L2排序器412B。但是對應于不同各級的有效載荷可能有很大不同。為了更好地說明這一點,以第一種圖案示出了對應于LOl匹配器的有效載荷并且用數字似4標記,并且以第二種圖案示出了對應于L2匹配器的有效載荷并且用數字似6標記。被分配給特定片段的文檔群組通過原子(倒排索引)并且通過文檔(正排索引)而被索引或碎片化。這些索引被分成等于構成該特定片段的節點數目的部分。在一個實施例中有四十個節點,因此倒排索引和正排索引當中的每一項被分成四十個部分,并且被存儲在每一個對應的節點處。當搜索查詢被提交到搜索引擎時,所述查詢被發送到每一個片段。 片段的責任是識別出其倒排索引具有來自索引的查詢的其中一個或更多原子的第一節點集合。利用這種方法,如果查詢被解析成兩個原子,例如來自查詢“William Shakespeare" 的“William”和‘Shakespeare”,則片段中的對于LOl匹配器所將占用的最多節點數目將是兩個。這一點在圖4中示出,這是因為與節點412和節點416相關聯的LOl匹配器是被識別成用在LOl匹配處理中的僅有的兩個。由于被指定給每一個片段的文檔通過原子索引, 因此每一個原子在倒排索引中僅被索引一次,從而任何特定原子僅僅存在于被分配給該片段的各個節點的其中一個倒排索引部分中。在一種示例性情形中,一旦識別出第一節點集合,就把與倒排索引中的原子相匹配的來自搜索查詢的原子發送到適當的節點。該節點執行許多計算,從而識別出文檔集合。該第一文檔集合在一個實施例中包含接收到來自初步排序階段的最高排序的那些文檔。在片段根部410處從第一節點集合當中的每一個節點收集該第一文檔集合,第一節點集合包括節點412和416。按照許多方式中的任一種組合這些結果,從而使得片段根部410可以接下來識別出將結合最終排序級使用的第二節點集合。如圖所示,每一個L2排序器被采用在最終排序級(或L2級)中。這是因為每一個節點已經存儲了用于該片段的正排索引的一部分,因此在最終排序級中有很大的幾率將需要訪問大部分或所有正排索引。在最終排序級中,為第二節點集合當中的每一個節點提供在其正排索引中所包含的文檔標識,從而使得所述節點可以至少基于在正排索引中找到的數據來對該文檔進行排序。由于大多數或者所有節點都被采用在最終排序級中,因此如圖4的系統400中所示,最終排序級的有效載荷通常大于匹配/初步排序級的有效載荷。片段通信總線4 允許各個節點與其他組件通信,比如例如片段根部410。參照圖5,該流程圖示出了根據本發明的實施例的用于根據搜索查詢利用混合分布系統識別相關文檔的方法500。首先,在步驟510中為片段分配文檔群組。在所述片段處接收到所述文檔群組之前或之后,通過倒排索引中的原子并且通過正排索引中的文檔對所述文檔群組進行索引,正如步驟512中所表明的那樣。這樣,在正排索引中索引的文檔就是構成被分配給該片段的文檔群組的文檔,并且從這些文檔的內容解析倒排索引中的原子。 在步驟514中,在所述片段中的每一個節點處存儲倒排索引和正排索引的一部分。一般來說,各個片段由多個節點構成。每一個節點是能夠根據存儲在其上的倒排索引部分和正排索引部分執行排序計算的機器或計算設備。在一個實施例中,每一個節點存儲所述片段的倒排索引和正排索引的不同或獨特部分。步驟516表明,在第一節點集合當中的每一個節點處訪問倒排索引部分。第一節點集合當中的每一個節點已經被識別為索引了所接收到的搜索查詢的其中一個原子。在步驟518中識別出第一文檔集合。在一個實施例中,已經利用初步排序功能對這些文檔進行了排序,從而可以識別出最具相關性的文檔。該步驟例如可以對應于Ll初步排序階段和/ 或LO匹配階段。基于與第一文檔集合當中的文檔相關聯的文檔標識,在第二節點集合當中的每一個節點處訪問正排索引部分,正如步驟520中所示。該步驟可以對應于L2最終排序級。這樣有效地限制了對應于特定搜索查詢的相關文檔的數量。因此,文檔數量被限制到第二文檔集合,正如步驟522中所示。在許多或大多數情況中,第二集合中的節點數目多于第一集合中的節點數目,正如前面更加詳細地描述的那樣。這是因為搜索查詢可能只有兩個原子,從而對于LOl匹配階段最多需要兩個節點,但是成千的文檔被識別為與搜索查詢的所述兩個原子相關,并且因此可能采用多得多的節點以便使用其對應的正排索引來執行最終排序計算,從而識別出第二文檔集合。此外,在各個實施例中,由于最終排序功能利用了從初步排序功能產生的文檔標識,因此第二集合中的文檔數目少于第一集合中的文檔數目,從而第二集合當中的每一個文檔也被包含在第一集合中。在一個實施例中,總體處理可能涉及接收搜索查詢。識別出搜索查詢中的一個或更多原子,并且一旦每一個片段知曉所述一個或更多原子,就在該片段中識別出包含來自搜索查詢的一個或更多原子的至少其中之一的第一節點集合。第一節點集合當中的每一個節點向片段根部發送第一文檔集合(例如文檔標識),從而例如使得片段根部可以整合(例如刪除重復)及合并結果。第二節點集合隨后向片段根部發送第二文檔集合。類似地,片段根部整合及合并結果,從而生成響應于搜索查詢而被呈現給用戶的最終文檔集合。參照圖6,其中示出了根據本發明的實施例的用于為多處理文檔檢索系統生成混合分布系統的方法600的流程圖。在步驟610中,接收到關于文檔群組的指示,所述文檔群組被指定給接收該文檔群組的片段。所述片段包括多個節點(例如十個、四十個、五十個)。 通過原子索引所述文檔群組,從而生成倒排索引,正如步驟612中所示。在步驟614中,通過文檔索引所述文檔群組,從而生成正排索引。在步驟616中,將倒排索引的一部分和正排索引的一部分指定給構成所述片段的每一個節點。在各個實施例中,為每一個節點指定倒排和正排索引的不同部分,從而使得特定原子僅在片段內的一個節點的正排索引中被索引。在各個實施例中,在所述片段處接收到關于已從搜索查詢識別出的一個或更多原子的指示。識別出其倒排索引部分包括所述一個或更多原子的至少其中之一的第一節點集合。這些節點分別能夠執行各項排序功能。基于第一節點集合的倒排索引部分識別出第一文檔集合。第一集合當中的每一個節點可以產生第一集合并且將其發送到片段根部,從而可以整合及合并各個第一節點集合。在一個情況中,通過利用存儲在其上的倒排索引部分的多級排序處理的初步排序處理產生第一文檔集合。此外,隨后可以識別出其正排索引部分索引了對應于第一文檔集合的一個或更多文檔標識的第二節點集合。隨后可以部分地基于存儲在正排索引中的數據而識別出第二文檔集合,并且可以實時地而不是利用預先計算的分數來計算各項特征。可以基于利用正排索引的多級排序處理的最終排序處理來識別第二文檔集合。一旦來自第二節點集合當中的每一個節點的第二文檔集合被整合及合并,就將其與來自所有其他片段的第二文檔集合合并,從而形成最終文檔集合并且將其返回給用戶以作為搜索結果。圖7是示出了根據本發明的實施例的用于根據搜索查詢利用混合分布系統來識別相關文檔的方法700的流程圖。首先,在步驟710中,接收到搜索查詢。在步驟712中,識別出搜索查詢中的各個原子。在步驟714中,將所述原子傳送到各個片段。每一個片段已被指定文檔群組,所述文檔群組通過原子并且通過文檔而被索引從而形成存儲在每一個片段處的倒排索引和正排索引。每一個片段由多個節點構成,每一個節點都被指定正排索引和倒排索引的一部分。在步驟716中,識別出其倒排索引部分包含來自搜索查詢的至少其中一個原子的第一節點集合。在步驟718中,訪問第一節點集合當中的每一個節點的倒排索引部分,以便識別出第一相關文檔集合。基于與第一文檔集合當中的每一個文檔相關聯的文檔標識,在步驟720中識別出第二節點集合。第二節點集合當中的每一個節點已經在其對應的正排索引部分中存儲了至少其中一個所述文檔標識,從而該節點可以對每一個文檔執行排序處理。在步驟722中訪問第二節點集合當中的每一個節點處的正排索引部分, 以便限制相關文檔的數目。在一個實施例中,第二文檔集合當中的每一個文檔也被包含在第一文檔集合中。基于第二文檔集合,(例如通過編輯來自該多個片段的第二文檔集合)生成搜索結果并且呈現給用戶。前面關于具體實施例描述了本發明,所述實施例意圖在所有方面都是說明性而非限制性的。在不背離本發明的范圍的情況下,本領域普通技術人員將認識到替換實施例。從前述內容可以看出,本發明非常適合于實現前面所闡述的所有目標和目的,并且同時具有所述系統和方法所明顯固有的其他優點。應當理解的是,某些特征和子組合具有實用性,并且可以在不參照其他特征和子組合的情況下被采用。這一點被設想在權利要求書的范圍內。
權利要求
1.一種基于搜索查詢利用混合分布系統來識別相關文檔的方法,所述方法包括 為片段分配510文檔群組,所述文檔群組在倒排索引中由原子索引并且在正排索引中由文檔索引;在形成所述片段的多個節點當中的每一個節點上存儲514倒排索引和正排索引的不同部分;訪問516存儲在第一節點集合當中的每一個節點上的倒排索引部分,以便識別與搜索查詢相關的第一文檔集合;以及基于與第一文檔集合相關聯的文檔標識,訪問520存儲在第二節點集合當中的每一個節點上的正排索引部分,以便把第一文檔集合中的相關文檔的數量限制到第二文檔集合。
2.權利要求1的方法,其中,節點是能夠基于其所存儲的倒排索引部分和正排索引部分來執行排序計算的機器。
3.權利要求1的方法,其中,第二節點集合當中的節點數量大于第一節點集合當中的節點數量。
4.權利要求1的方法,其中,通過作為多級排序處理的一部分的初步排序處理將第一文檔集合識別為與搜索查詢相關,其中初步排序處理利用倒排索引部分。
5.權利要求4的方法,其中,第二文檔集合當中的每一個文檔被包含在第一文檔集合中。
6.權利要求5的方法,其中,通過作為總體排序處理的一部分的最終排序處理識別出第二文檔集合,其中最終排序處理利用正排索引部分。
7.權利要求1的方法,還包括 接收搜索查詢;識別出搜索查詢中的一個或更多原子;以及在所述片段中識別出包含所述一個或更多原子的至少其中之一的第一節點集合。
8.權利要求1的方法,其中,存儲在第二節點集合當中的每一個節點上的正排索引部分包含至少其中一個與第一文檔集合相關聯的文檔標識。
9.權利要求1的方法,其中,合并來自多個片段的第二文檔集合以便生成響應于搜索查詢而被呈現給用戶的最終文檔集合。
10.一種為多處理文檔檢索系統生成混合分布系統的方法,所述方法包括 接收610關于被指定給片段的文檔群組的指示,所述片段包括多個節點; 對于所述片段,(1)通過原子索引612所分配的文檔群組以便生成倒排索引,并且(2)通過文檔索引614所分配的文檔群組以便生成正排索引;以及將倒排索引的一部分和正排索引的一部分指定616給形成所述片段的多個節點當中的每一個,從而使得所述多個節點當中的每一個存儲正排索引的不同部分和倒排索引的不同部分。
11.權利要求10的方法,還包括在所述片段處接收關于已從搜索查詢識別的一個或更多原子的指示; 識別出其倒排索引部分包括所述一個或更多原子的至少其中之一的第一節點集合;以及部分地基于第一節點集合的倒排索引部分識別出第一文檔集合。
12.權利要求11的方法,還包括識別出其正排索引部分包括對應于第一文檔集合的一個或更多文檔標識的第二節點集合;以及至少基于正排索引部分中的數據識別出第二文檔集合。
13.權利要求11的方法,其中,基于利用倒排索引部分的多級排序處理的初步排序處理來識別第一文檔集合。
14.權利要求12的方法,其中,基于利用正排索引部分的多級排序處理的最終排序處理來識別第二文檔集合。
15.權利要求12的方法,其中,基于搜索查詢被傳送以供呈現給用戶的搜索結果是基于接收自多個片段的第二文檔集合。
16.一種基于搜索查詢利用混合分布系統來識別相關文檔的方法,所述方法包括 接收710搜索查詢;識別712搜索查詢中的一個或更多原子;向分別被指定由原子和文檔二者索引的文檔群組的多個片段傳送714所述一個或更多原子,從而使得在所述多個片段當中的每一個片段處生成并存儲倒排索引和正排索引, 其中所述多個片段當中的每一個由多個節點構成,所述節點分別被指定正排索引和倒排索引的一部分;基于所述一個或更多原子,在第一片段處識別出716其倒排索引部分包含來自搜索查詢的所述一個或更多原子當中的至少一個的第一節點集合;訪問718存儲在第一節點集合當中的每一個節點處的倒排索引部分,以便識別出被發現與所述一個或更多原子相關的第一文檔集合;基于與第一文檔集合相關聯的文檔標識,識別出720其正排索引部分包含其中一個或更多與第一文檔集合相關聯的文檔標識的第二節點集合;以及訪問722存儲在第二節點集合當中的每一個節點處的正排索引部分,以便識別出作為第一文檔集合的子集的第二文檔集合。
17.權利要求16的方法,其中,第二文檔集合中的文檔被發現是第一文檔集合中的文檔當中最具相關性的。
18.權利要求16的方法,還包括基于第二文檔集合傳送搜索結果以供呈現給用戶。
19.權利要求16的方法,還包括接收來自所述多個片段當中的每一個的第二文檔集合
20.權利要求19的方法,還包括合并每一個第二文檔集合,從而生成相關文檔合并列表。
21.存儲計算機可用指令的一種或更多種計算機存儲介質,當由計算設備使用時,所述計算機可用指令使得計算設備執行如權利要求1-20中的任一個的方法。
全文摘要
本發明提供了用于搜索引擎索引的混合分布模型,并且還提供了基于搜索查詢使用混合分布系統來識別相關文檔的方法和系統。為特定片段指定文檔群組。所述文檔群組由原子和文檔索引,從而形成倒排索引和正排索引。全部兩項索引被劃分在該片段中的每一個節點當中,從而使得每一個節點負責存儲及訪問倒排索引和正排索引二者的不同部分。在第一節點集合當中的每一個節點上訪問倒排索引部分,以便識別出與特定搜索查詢相關的第一文檔集合。使用與第一文檔集合相關聯的文檔標識來識別出第二節點集合,所述第二節點集合訪問其正排索引部分以便把相關文檔的數目限制到第二文檔集合。
文檔編號G06F17/30GK102402605SQ20111037339
公開日2012年4月4日 申請日期2011年11月22日 優先權日2010年11月22日
發明者P. 沃特斯 C., O. 彼得森 J., 貝內特 J., M. 里斯維克 K., 卡亞納拉曼 K., 霍普克羅夫特 M., 基林比 T., 帕里克 V. 申請人:微軟公司