專利名稱::用于搜索的用戶定義的相關(guān)性排序的制作方法用于搜索的用戶定義的相關(guān)性排序背景數(shù)字信息的基本問題之一在于如何有效地對大量數(shù)據(jù)進(jìn)行排序,以便在任何給定時刻找出那些最相關(guān)的信息片段。為解決該問題,搜索引擎包括關(guān)聯(lián)或排序函數(shù)。這些關(guān)聯(lián)函數(shù)用于將不同的權(quán)重給予需要搜索準(zhǔn)則的文檔;所分配的權(quán)重或排名然后可用于進(jìn)一步操縱信息池,例如通過按特定次序顯示結(jié)果。許多搜索引擎,特別是那些用于與數(shù)據(jù)庫交互的搜索引擎,使用tf-idf權(quán)重方案的某些變體,其中一項出現(xiàn)在特定文檔中的頻率針對逆文檔頻率,即對該項出現(xiàn)在文檔池中的頻率的度量來加權(quán)。不同的示例引擎將實現(xiàn)該方案的不同變體,且優(yōu)化單獨的搜索引擎以使用其特定關(guān)聯(lián)函數(shù)。概述此處詳細(xì)描述了一種特別地允許搜索引擎利用用戶定義的關(guān)聯(lián)函數(shù)的技術(shù)。在本技術(shù)的一種方法中,描述了-種應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)的方法。在該方法中,將復(fù)雜的搜索查詢分解成簡單運算符。將簡單運算符與用戶定義的關(guān)聯(lián)函數(shù)相關(guān)聯(lián)。檢索與搜索査詢匹配的文檔,并使用該用戶定義的關(guān)聯(lián)函數(shù)來為該文檔計算排名。在本技術(shù)的另一種方法中,描述了一種具有計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì)。在該方法中,接收用戶定義的排序函數(shù),并接收搜索查詢。將該搜索査詢分解成多個簡單運算。這些簡單運算中的每一個都與關(guān)聯(lián)函數(shù)相關(guān)聯(lián)。檢索對應(yīng)于這些較簡單的運算的多個結(jié)果,并使用相關(guān)聯(lián)的關(guān)聯(lián)函數(shù)來為這些結(jié)果中的每一個計算排名。在本技術(shù)的另一種方法中,一種具有總線、處理器、存儲器和數(shù)據(jù)存儲設(shè)備的系統(tǒng)被配置成接收復(fù)雜搜索査詢。該系統(tǒng)還被配置成將該復(fù)雜搜索査詢解析成若干較簡單的運算。該系統(tǒng)還被配置成檢索對應(yīng)于這些較簡單的運算的結(jié)果,并通過應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)來為每一個結(jié)果計算排名。提供本概述以便以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。附圖簡述合并在本說明書中并形成其一部分的附圖示出了各實施例,并且與說明書一起用于解釋所要求保護(hù)的主題的原理圖1是其上可實現(xiàn)各實施例的示例性計算系統(tǒng)的框圖。圖2是其上可實現(xiàn)各實施例的示例數(shù)據(jù)庫表。圖3是根據(jù)一個實施例的應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)的方法的流程圖。圖4A是根據(jù)一個實施例的示例數(shù)據(jù)庫查詢。圖4B是根據(jù)一個實施例的搜索樹的描繪。圖4C是根據(jù)一個實施例的中間搜索樹的描繪。圖4D是根據(jù)一個實施例的查詢樹的描繪。詳細(xì)描述現(xiàn)在將詳細(xì)參考若干實施例。盡管本主題將結(jié)合各替換實施例來描述,但將理解,它們并不旨在將所要求保護(hù)的主題限于這些實施例。相反,所要求保護(hù)的主題旨在涵蓋可被包括在權(quán)利要求書所定義的所要求保護(hù)的主題的精神和范圍內(nèi)的替換、修改和等效技術(shù)方案。此外,在以下詳細(xì)描述中,闡明了眾多具體細(xì)節(jié)以提供對所要求保護(hù)的主題的全面理解。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識到各實施例可以在沒有這些具體細(xì)節(jié)或具有其等效物的情況下實施。在其它情況下,未詳細(xì)描述公知的方法、過程、組件和電路以免不必要地使主題的各方面和特征顯得晦澀難懂。以下詳細(xì)描述中的各部分按照一種方法來呈現(xiàn)和討論。盡管其步驟和排序在此處描述該方法的各操作的附圖(例如,圖3)中公開,但這些步驟和排序是示例性的。各實施例很好地適用于執(zhí)行各種其他步驟或此處附圖的流程圖中所述的步驟的變型,并且按照與此處所描繪和描述的不同的順序。本詳細(xì)描述的某些部分按照過程、步驟、邏輯塊、處理、以及對可在計算機(jī)存儲器上執(zhí)行的數(shù)據(jù)位的操作的其它符號表示來呈現(xiàn)。這些描述和表示是數(shù)據(jù)處理領(lǐng)域技術(shù)人員用來將其工作的實質(zhì)最有效地傳達(dá)給本領(lǐng)域的其他技術(shù)人員的手段。過程、計算機(jī)執(zhí)行的步驟、邏輯塊、處理等在此處且通常被認(rèn)為是導(dǎo)致所需結(jié)果的自相一致的步驟或指令的序列。步驟是需要對物理量的物理操縱的那些步驟。盡管并非必需,但這些物理量通常采用能夠在計算機(jī)系統(tǒng)中被存儲、傳輸、組合、比較、或以其它方式操縱的電或磁信號的形式。原則上出于常見用法的原因?qū)⑦@些信號稱作位、值、元素、符號、字符、項、數(shù)字等被證明有時是方便的。然而,應(yīng)當(dāng)記住,所有這些和類似術(shù)語都應(yīng)與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián)并且僅僅是應(yīng)用于這些物理量的方便的標(biāo)簽。如從以下討論中清楚的,除非具體地另外指明,否則可以理解,貫穿本發(fā)明,利用諸如"訪問"、"編寫"、"包括"、"存儲"、"發(fā)送"、"遍歷"、"關(guān)聯(lián)"、"標(biāo)識"等術(shù)語的討論涉及計算機(jī)系統(tǒng)或類似的電子計算設(shè)備的動作和處理,其操縱計算機(jī)系統(tǒng)的寄存器和存儲器中被表示為物理(電子)量的數(shù)據(jù)并將其變換成計算機(jī)系統(tǒng)存儲器或寄存器或其他這樣的信息存儲、傳輸或顯示設(shè)備中類似地被表示為物理量的其他數(shù)據(jù)。諸如計算系統(tǒng)環(huán)境10等計算設(shè)備通常包括至少某些形式的計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以是可由計算機(jī)訪問的任何可用介質(zhì)。作為示例而非限制,計算機(jī)可讀介質(zhì)可以包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。計算機(jī)存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲器、盒式磁帶、磁帶、磁盤存儲或其它磁存儲設(shè)備,或者任何其它可用于存儲所需信息并可由計算機(jī)訪問的介質(zhì)。通信介質(zhì)通常以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任意信息傳送介質(zhì)。術(shù)語"已調(diào)制數(shù)據(jù)信號"指的是以在信號巾編碼信息的方式設(shè)定或更改其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、RF、紅外、和其它無線介質(zhì)。以上的任何組合也應(yīng)包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。某些實施例可以在由一個或多個計算機(jī)或其他設(shè)備執(zhí)行的諸如程序模塊等計算機(jī)可執(zhí)行指令的通用上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,程序模塊的功能可以按需在各個實施例中進(jìn)行組合或分布。參考圖1,用于實現(xiàn)各實施例的示例性系統(tǒng)包括通用計算系統(tǒng)環(huán)境,如計算系統(tǒng)環(huán)境10。在其最基本的配置中,計算系統(tǒng)環(huán)境IO通常包括至少一個處理單元12和存儲器14。取決于計算系統(tǒng)環(huán)境的確切配置和類型,存儲器14可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等)或是兩者的某種組合。該最基本配置在圖1中由虛線16來示出。另外,計算系統(tǒng)環(huán)境IO還可具有附加的特征/功能。例如,計算系統(tǒng)環(huán)境10還可包含附加存儲(可移動和/或不可移動),包括但不限于磁或光盤或磁帶。這樣的附加存儲在圖1中由可移動存儲18和不可移動存儲20示出。計算機(jī)存儲介質(zhì)包括以用于存儲諸如計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)來實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。存儲器14、可移動存儲18和不可移動存儲20都是計算機(jī)存儲介質(zhì)的示例。計算系統(tǒng)環(huán)境10還可包含允許其與其它設(shè)備進(jìn)行通信的通信連接22。通信連接22是通信介質(zhì)的一個示例。在所描繪的實施例中,計算系統(tǒng)環(huán)境IO被示為通過通信連接22來與數(shù)據(jù)庫30進(jìn)行通信。數(shù)據(jù)庫30的特性和內(nèi)容可跨不同的實施例而變化。此外,在某些實施例中,數(shù)據(jù)庫30可以是內(nèi)置數(shù)據(jù)庫,例如,在可移動存儲18和/或不可移動存儲20中實現(xiàn)。計算裝置10還可具有輸入設(shè)備24,諸如鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等等。還可包括輸出設(shè)備26,諸如顯示器、揚聲器、打印機(jī)等等。此處所討論的各具體實施例將觸摸輸入設(shè)備與顯示器進(jìn)行組合,例如,觸摸屏。所有這些設(shè)備在本領(lǐng)域是公知的并且不必在此詳細(xì)討論。W定,關(guān)翻,雖然關(guān)聯(lián)函數(shù)是搜索引擎的必需且有價值的部分,但單個關(guān)聯(lián)函數(shù)可能不適用于每一種情形。如以下實施例中所描述的,具有允許用戶修改由搜索引擎應(yīng)用的關(guān)聯(lián)函數(shù)的搜索引擎將會是有價值的。此外,在某些實施例中,用戶將能夠完全替換關(guān)聯(lián)函數(shù)的部分或全部,以便定制搜索引擎以更好地反映用戶的特定需求。因此,在以下的實施例中,將描述一種允許用戶指定供與搜索引擎一起使用的排序函數(shù)的方法。在某些實施例中,這通過向排序函數(shù)的編寫者展示關(guān)聯(lián)函數(shù)的基本構(gòu)建塊(例如,多路歸并聯(lián)結(jié)邏輯運算符)來實現(xiàn)。教薪録現(xiàn)在參考圖2,描繪了根據(jù)一個實施例的示例性數(shù)據(jù)庫表200。雖然數(shù)據(jù)庫表200被示為結(jié)合具體、枚舉的特征和元素,但可以理解,各實施例很好地適用于涉及更多、更少或不同的特征或元素的應(yīng)用。具體而言,雖然數(shù)據(jù)庫表200被示為是只包含兩列的簡單表格,但可以理解,各實施例適用于跨各種各樣的搜索類型和數(shù)據(jù)類型的應(yīng)用。數(shù)據(jù)庫表200被示為包括多個數(shù)據(jù)庫行或條目,例如,行210到260。每一數(shù)據(jù)庫行都包括文檔鍵列,例如,文檔鍵212,其包含存儲在該行中的的文檔的唯一標(biāo)識符。每一數(shù)據(jù)庫行還包括一文檔列,例如,文檔214,其包含對應(yīng)于特定文檔鍵的文檔的文檔文本。在所描繪的實施例中,若干文檔列條目被示為包括若干項,它們在以下將用于示出其他示例。關(guān)薪湯教在不同的實施例中,接受不同類型的查詢或搜索。例如,在一個實施例中,支持布爾搜索,例如,使用諸如AND(與)、OR(或)或ANDNOT(與非)等布爾邏輯運算符來組合項的搜索。在另一實施例中,支持向量指定,例如,搜索多個項,且這些項的部分或全部被分配不同的權(quán)重。在例如web搜索的另一實施例中,,對所返回的搜索文檔的最終排名可部分地取決于與該文檔相關(guān)聯(lián)的外部考慮事項,例如,元數(shù)據(jù)。在另一實施例中,利用其它搜索方法。在許多應(yīng)用中,用戶能操縱或修改搜索引擎所應(yīng)用的關(guān)聯(lián)函數(shù),而不依賴內(nèi)置到特定搜索引擎中的關(guān)聯(lián)函數(shù)是有利的,例如,用戶可選擇對不同的情況或數(shù)據(jù)集應(yīng)用不同的關(guān)聯(lián)函數(shù),或者可以修改排序函數(shù),以更改應(yīng)用于搜索結(jié)果的排名以滿足某一合乎需要的準(zhǔn)則。這種操縱的自由向用戶提供了優(yōu)點。在某些實施例中,用戶可選擇提供對應(yīng)于不同的可用運算符的若干排序函數(shù)。例如,在處理布爾邏輯運算符時,用戶可為AND和OR運算符提供單獨的關(guān)聯(lián)函數(shù)。此外,在若干這樣的實施例中,可向搜索引擎提供默認(rèn)關(guān)聯(lián)函數(shù)以便與未被用戶提供的關(guān)聯(lián)函數(shù)覆蓋的運算符一起使用。應(yīng)娜戶定乂戲翻教現(xiàn)在參考圖3,描繪了根據(jù)一個實施例的應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)的方法的流程圖300。盡管在流程圖300中公開了具體步驟,但這些步驟是示例性的。即,這些實施例很好地適用于執(zhí)行各種其它(附加)步驟或流程圖300中所述的步驟的變體。可以理解,流程圖300中的步驟可以按與所呈現(xiàn)的次序不同的次序執(zhí)行,且并非流程圖300中的所有步驟都要被執(zhí)行。現(xiàn)在參考步驟310,接收用戶指定的排序函數(shù)。在不同的實施例中,利用提供這一關(guān)聯(lián)函數(shù)的不同方法。例如,在某些實施例中,用戶可提供用編程語言(例如,T-SQL)編寫的關(guān)聯(lián)函數(shù)。在若干這樣的實施例中,對于用戶定義的關(guān)聯(lián)函數(shù)使用聲明性語言,例如,SQL或方言。而且,在不同的實施例中,排序函數(shù)的運算可以變化。例如,在一個實施例中,排序函數(shù)可應(yīng)用于布爾運算符AND,并對搜索結(jié)果應(yīng)用TF-IDF方案。現(xiàn)在參考步驟320,分解査詢。在某些實施例中,將復(fù)雜查詢分解成較簡單的運算符的樹。在其它一些實施例中,將査詢分解成若干較簡單的運算。例如,在一個實施例中,將全文査詢分成包含通過聯(lián)結(jié)來連接的若干簡單運算的樹。在這一實施例中,聯(lián)結(jié)類型基于連接簡單運算的邏輯運算符。例如,AND被視作內(nèi)聯(lián)結(jié),OR被視作外聯(lián)結(jié),而ANDNOT作為不存在來處理。在某些實施例中,每一較簡單的運算都包含同質(zhì)邏輯運算符,例如,僅AND或OR。在一個這樣的實施例中,用于同質(zhì)邏輯運算符的排序函數(shù)被視作是可交換的?,F(xiàn)在參考步驟330,將簡單運算與排序函數(shù)相關(guān)聯(lián)。在某些實施例中,簡單運算可與用戶提供的排序函數(shù)相關(guān)聯(lián)。在若干實施例中,簡單運算可與用戶提供的排序函數(shù)(如果有用戶提供的排序函數(shù)可用的話)或默認(rèn)排序函數(shù)鏈接。在某些實施例中,排序函數(shù)具有共同的簽名,且將用于索引訪問的語言元素用作基本工具;在這些實施例中,為排序函數(shù)提供上下文信息,該上下文信息進(jìn)而被傳遞給執(zhí)行索引訪問的元素。此外,上下文信息可被傳遞到其它表值函數(shù)(TVF),以獲取對于排序函數(shù)而言是重要的但不存在于索弓I中的信息。現(xiàn)在參考?xì)i驟340,執(zhí)行搜索并檢索對應(yīng)的結(jié)果。在不同的實施例中,該搜索和檢索操作以不同的方式執(zhí)行。可以理解,各實施例很好地適用于具有許多不同的搜索和結(jié)果檢索方法的應(yīng)用。在某些實施例中,檢索到的結(jié)果包括關(guān)聯(lián)函數(shù)計算這些結(jié)果的排名所必需的信息。這些信息可包括諸如文檔計數(shù)、項頻率、項權(quán)重和其它信息等元素。在某些實施例中,利用上述分解的簡單運算來執(zhí)行多次搜索。在一個這樣的實施例中,提供上下文信息允許索引訪問元素檢索與對應(yīng)于較簡單的運算的部分査詢相匹配的行?,F(xiàn)在參考步驟350,根據(jù)一個或多個適當(dāng)?shù)呐判蚝瘮?shù)來對檢索到的結(jié)果進(jìn)行排序。在某些實施例中,排序函數(shù)使用諸如聚集和標(biāo)量用戶定義的函數(shù)等標(biāo)準(zhǔn)SQL編程構(gòu)造來為每一個文檔計算分?jǐn)?shù)。在某些實施例中,査詢分解以及排序函數(shù)與簡單運算符的關(guān)聯(lián)在編譯階段期間執(zhí)行,而搜索、檢索和排序在運行時階段執(zhí)行。在其它實施例中,這些操作的定時可以變化。流式表澄雄在實現(xiàn)上述方法的某些實施例中,索引訪問使用流式表值函數(shù)(streamingtablevaluedfunction,STVF)來提供。在這一實施例中,對STVF的使用提供了某些優(yōu)點。其中有多路AND和OR在倒排索引上的高效實現(xiàn),以及輸出以遞增文檔標(biāo)識符次序排序的高效倒置,即使該文檔標(biāo)識符是倒排索引中的內(nèi)部列。在其它實施例中,可利用其它搜索結(jié)果排序,例如,相關(guān)性次序。此外,使用STVF允許基于用戶請求來在不同的層進(jìn)行解壓縮,例如,對于文檔標(biāo)識符解壓縮在層1進(jìn)行解壓縮,或者對于出現(xiàn)解壓縮在等級2進(jìn)行解壓縮。另外,使用STVF允許高效地檢索排序所需信息,例如,文檔計數(shù)、項頻率、項權(quán)重或列權(quán)重。此外,使用STVF允許準(zhǔn)確的基數(shù)估計,進(jìn)而允許數(shù)據(jù)庫査詢優(yōu)化器來進(jìn)行有效優(yōu)化。飾分,現(xiàn)在參考圖4A,描繪了根據(jù)一個實施例的示例數(shù)據(jù)庫査詢400。雖然查詢400被示為結(jié)合具體、定義的元素,但可以理解各實施例很好地適用于涉及更多、更少或不同元素或者表征不同的元素排列的應(yīng)用。在所描繪的實施例中,查詢400被示為針對SQL數(shù)據(jù)庫的全文查詢。在該實施例中,查詢400經(jīng)過多次變換,這些變換以該査詢被精簡為若千較簡單的運算并允許包括用戶提供的排序函數(shù)的方式來構(gòu)造。在所描繪的實施例中,T是數(shù)據(jù)庫表,諸如表200。文檔和文檔鍵是數(shù)據(jù)庫表中的列。在所描繪的實施例中,搜索串是'applesANDorangesORgrapesANDpears'。CONTAINSTABLE(包含表)是T-SQLTVF,它返回符合(qualify)搜索串的行以及文檔相對于該搜索串的排名。在所描繪的實施例中,該查詢指示搜索引擎返回表T的所有行及其排名值,其中文檔列包含關(guān)鍵字apples(蘋果)和oranges(桔子)或者關(guān)鍵字grapes(葡萄)和pears(梨)。在一個實施例中,解析并綁定查詢。在解析和綁定過程期間,標(biāo)識CONTAINSTABLE函數(shù),并且調(diào)用全文查詢編譯器來處理搜索串。該全文查詢編譯器將搜索串變換成表示査詢關(guān)鍵字和綁定這些關(guān)鍵字的邏輯運算符的樹。圖4B描繪了一種這樣的棵樹,即,樹401。如樹401所示,來自查詢400的搜索串已被變換成樹結(jié)構(gòu)。組織樹401以使得邏輯運算符綁定由搜索串關(guān)聯(lián)的樹元素。以此方式,OR410將AND420與AND425綁定。AND420進(jìn)而將apples431與oranges433綁定,而AND425將grapes435與pears437綁定。在某些實施例中,在將搜索字符串精簡到簡化的樹結(jié)構(gòu)后,標(biāo)識同質(zhì)邏輯運算符,諸如AND和OR運算符。在若干這樣的實施例中,綁定簡單項(例如,關(guān)鍵字)的同質(zhì)邏輯表達(dá)式被變換成被實現(xiàn)為STVF的多路跳躍歸并聯(lián)結(jié)運算符。圖4C將一個這樣的實施例描繪為中間樹441。如中間樹441所示,樹401的AND部分已經(jīng)用被實現(xiàn)為STVF的多路跳躍歸并聯(lián)結(jié)運算符來替換。OR450現(xiàn)在綁定元素460和465,這兩個元素中的每一個都是多路跳躍歸并聯(lián)結(jié)運算符。在某些實施例中,在按此方式變換查詢后,系統(tǒng)將加載用戶為適當(dāng)?shù)倪\算符提供的排序函數(shù)。例如,參考中間樹441,系統(tǒng)將加載用戶為AND運算符提供的排序函數(shù)。在編譯排序函數(shù)期間,系統(tǒng)將在適當(dāng)時插入實際多路歸并聯(lián)結(jié)運算符。在其中用戶沒有為特定運算符提供排序函數(shù)的某些實施例中,改為加載并編譯默認(rèn)系統(tǒng)提供的函數(shù)。然后在更高的層,例如在圖4C中的OR450的層組合排序函數(shù)返回的排名值。在某些實施例中,該組合通過默認(rèn)系統(tǒng)操作來處理,例如,計算組合排名作為最大值(在OR運算符的情況下),或者作為最小值(在AND運算符的情況下)。在其它實施例中,用戶可按與用戶指定的排序函數(shù)類似的方式提供用戶指定的組合函數(shù)。在圖4D中,描繪了根據(jù)一個實施例的查詢樹471。查詢樹471示出了具有如上所述的組合函數(shù)的查詢400的最終狀態(tài)。在所描繪的實施例中,該全文查詢樹中的非葉節(jié)點被變換成關(guān)系運算符,例如,AND被變換成內(nèi)聯(lián)結(jié)、OR被變換成外聯(lián)結(jié)或者ANDNOT被變換成半聯(lián)結(jié)。如圖所示,OR450已被外聯(lián)結(jié)485替換。已分別為多路跳躍歸并聯(lián)結(jié)運算符492和497加載排序函數(shù)490和495。塊480描繪了組合函數(shù),此處被示為排序函數(shù)490和495所返回的排名值的最大值。在某些實施例中,該査詢樹被結(jié)合到總SQL查詢中,并作為整體來優(yōu)化。在若干這樣的實施例中,該優(yōu)化確保用戶定義的排序函數(shù)無論多復(fù)雜都如同該函數(shù)是用戶提供的查詢的一部分那樣得到系統(tǒng)的相同程度的優(yōu)化。盡管己以針對結(jié)構(gòu)特征和/或方法動作的語言描述了該主題,但可以理解,所附權(quán)利要求書中定義的主題不必限定于上述的特定特征或動作。相反,上述特定的特征和動作作為實現(xiàn)這些權(quán)利要求的示例性形式而予以公開。權(quán)利要求1.一種應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)的方法,包括將復(fù)雜搜索查詢分解成簡單運算符;將所述簡單運算符與所述用戶定義的關(guān)聯(lián)函數(shù)相關(guān)聯(lián);檢索與所述復(fù)雜搜索查詢相匹配的匹配文檔;以及使用所述用戶定義的關(guān)聯(lián)函數(shù)來為所述匹配文檔計算排名。2.如權(quán)利要求l所述的方法,其特征在于,還包括接收所述用戶定義的關(guān)聯(lián)函數(shù)。3.如權(quán)利要求1所述的方法,其特征在于,還包括在數(shù)據(jù)庫中搜索所述匹配文檔。4.如權(quán)利要求1所述的方法,其特征在于,所述匹配文檔包括由所述用戶定義的關(guān)聯(lián)函數(shù)用來計算所述排名的信息。5.如權(quán)利要求l所述的方法,其特征在于,所述計算包括所述用戶定義的關(guān)聯(lián)函數(shù)使用與所述匹配文檔相關(guān)聯(lián)的信息來計算所述排名。6.如權(quán)利要求1所述的方法,其特征在于,所述分解包括將同質(zhì)邏輯表達(dá)式分解成多路跳躍歸并聯(lián)結(jié)運算符。7.如權(quán)利要求1所述的方法,其特征在于,所述復(fù)雜搜索査詢包括布爾邏輯查詢。8.如權(quán)利要求1所述的方法,其特征在于,所述分解包括將所述復(fù)雜搜索查詢分解成運算符樹。9.--種具有用于執(zhí)行以下步驟的計算機(jī)可執(zhí)行指令的計算機(jī)可讀介質(zhì),所述步驟包括接收用戶定義的排序函數(shù);接收搜索査詢;將所述搜索査詢分解成多個簡單運算;將所述多個簡單運算中的每一個與所述用戶定義的排序函數(shù)相關(guān)聯(lián);檢索對應(yīng)于所述多個簡單運算的多個結(jié)果;以及使用所述用戶定義的排序函數(shù)來計算所述多個結(jié)果中的每一個的排名。10.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,還包括接收多個用戶定義的排序函數(shù);以及將所述多個用戶定義的排序函數(shù)與所述多個簡單運算相關(guān)聯(lián)。11.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,還包括組合所述多個結(jié)果的所述排名以產(chǎn)生所述多個結(jié)果中的每一個的總排名。12.如權(quán)利要求ll所述的計算機(jī)可讀介質(zhì),其特征在于,所述組合包括從所述多個結(jié)果的所述排名中計算最大排名值。13.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,所述分解包括將所述搜索查詢變換成搜索樹;標(biāo)識所述搜索樹中的同質(zhì)運算符;以及將所述同質(zhì)運算符變換成多路跳躍歸并聯(lián)結(jié)運算符。14.如權(quán)利要求13所述的計算機(jī)可讀介質(zhì),其特征在于,所述多路跳躍歸并聯(lián)結(jié)運算符包括流式表值函數(shù)(STVF)。15.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,所述搜索查詢包括向量查詢。16.如權(quán)利要求15所述的計算機(jī)可讀介質(zhì),其特征在于,所述向量查詢包括多個關(guān)鍵字,且每一個關(guān)鍵字都與搜索權(quán)重相關(guān)聯(lián)。17.—種系統(tǒng),包括總線;耦合到所述總線、用于處理信息的處理器;耦合到所述總線、用于存儲信息的存儲器;以及耦合到所述總線、用于存儲信息的數(shù)據(jù)存儲設(shè)備,其中所述系統(tǒng)被配置成接收復(fù)雜搜索查詢,將所述復(fù)雜搜索査詢解析成多個較簡單的運算,檢索對應(yīng)于所述多個較簡單的運算的多個結(jié)果,并通過應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)來計算所述多個結(jié)果中的每一個的排名。18.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述系統(tǒng)被配置成通過將所述復(fù)雜搜索査詢精簡為搜索樹,將所述樹中的同質(zhì)運算符變換成多路跳躍歸并聯(lián)結(jié)運算符,并將所述搜索樹的非葉節(jié)點變換成關(guān)系運算符,來解析所述復(fù)雜搜索查詢。19.如權(quán)利要求18所述的系統(tǒng),其特征在于,還被配置成將所述用戶定義的關(guān)聯(lián)函數(shù)作為所述搜索樹的一部分來優(yōu)化。20.如權(quán)利要求17所述的系統(tǒng),其特征在于,所述用戶定義的關(guān)聯(lián)函數(shù)包括用聲明性語言編寫的函數(shù)。全文摘要此處詳細(xì)描述了一種特別地允許搜索引擎使用用戶定義的關(guān)聯(lián)函數(shù)的技術(shù)。在本技術(shù)的一種方法中,描述了一種應(yīng)用用戶定義的關(guān)聯(lián)函數(shù)的方法。在該方法中,將復(fù)雜的搜索查詢分解成簡單運算符。將簡單運算符與用戶定義的關(guān)聯(lián)函數(shù)相關(guān)聯(lián)。檢索與搜索查詢匹配的文檔,并使用用戶定義的關(guān)聯(lián)函數(shù)來為該文檔計算排名。文檔編號G06F17/30GK101681377SQ200880017123公開日2010年3月24日申請日期2008年5月16日優(yōu)先權(quán)日2007年5月23日發(fā)明者D·丘林,F·田,J·陸,N·哈諾卡,S·納拉亞南,T·納亞克申請人:微軟公司