專利名稱:基于查詢部分來(lái)供應(yīng)高速緩存的查詢結(jié)果的制作方法
基于查詢部分來(lái)供應(yīng)高速緩存的查詢結(jié)果
背景
web搜索引擎將用戶的搜索或者査詢定向到分配服務(wù)器,該服務(wù)器又將該 査詢轉(zhuǎn)發(fā)給前端服務(wù)器。前端服務(wù)器可以包含查詢和相應(yīng)的結(jié)果,或可以咨詢 后端數(shù)據(jù)庫(kù)以獲得査詢結(jié)果。web搜索引擎通常從用戶輸入相同搜索項(xiàng)而接收 重復(fù)的查詢。新近査詢及其結(jié)果可以在前端服務(wù)器的前端高速緩存中保存一段 預(yù)定的時(shí)間,因?yàn)樽稍兦岸烁咚倬彺嬉垣@得所需結(jié)果比咨詢后端數(shù)據(jù)庫(kù)更有效 且耗時(shí)更少,其中該后端數(shù)據(jù)庫(kù)包含全部web索引且一般比前端高速緩存大。 全部web索引可以包括諸如網(wǎng)頁(yè)等所有可獲得的web結(jié)果;因此,由于索引 比存儲(chǔ)在前端高速緩存上的結(jié)果要大得多,會(huì)導(dǎo)致耗時(shí)的搜索。然而,如果在 前端高速緩存中沒(méi)有找到所需結(jié)果,就向后端數(shù)據(jù)庫(kù)咨詢。
除了存儲(chǔ)新近查詢和結(jié)果之外,前端高速緩存還可以用作有用搜索的記 錄,它可以包括用戶更頻繁地咨詢的結(jié)果或系統(tǒng)管理員相信將被咨詢的結(jié)果。
用戶通常必須輸入完整的搜索項(xiàng)或查詢以便呈現(xiàn)相關(guān)結(jié)果。如果輸入諸如 前幾個(gè)字符等査詢的一部分,通常會(huì)將錯(cuò)誤的消息或不正確的結(jié)果呈現(xiàn)給用 戶。另外,例如,如果用戶不確定為了接收結(jié)果而輸入的查詢,則用戶必須單 獨(dú)輸入若干査詢并篩選結(jié)果以找到所需網(wǎng)頁(yè)。如果用戶輸入査詢的一部分并接 收以所輸入的部分開(kāi)頭的一組査詢的相關(guān)結(jié)果將是理想的。另外,當(dāng)用戶繼續(xù) 輸入查詢時(shí)由此擴(kuò)展該部分時(shí),該結(jié)果隨著査詢改變而自動(dòng)調(diào)整將是理想的。
另外,如果通過(guò)進(jìn)一步利用前端高速緩存來(lái)保存資源且更快速地完成操 作,那么這種部分査詢機(jī)制則更理想。
概述
通過(guò)標(biāo)識(shí)以査詢的一部分開(kāi)頭的其他查詢并獲得其他查詢的結(jié)果來(lái)獲得 査詢的一部分的相關(guān)結(jié)果。該査詢的一部分可被分配給接收以該査詢的相同部 分開(kāi)頭的其他査詢的前端服務(wù)器。其他查詢可存儲(chǔ)在包括服務(wù)器高速緩存和一
組通用査詢的數(shù)據(jù)結(jié)構(gòu)中。其他查詢的結(jié)果可存儲(chǔ)在服務(wù)器高速緩存或后端數(shù) 據(jù)庫(kù)中。
通過(guò)編譯從服務(wù)器高速緩存刪除的已刪除査詢來(lái)形成一組通用查詢。該組 通用査詢還可以包括來(lái)自預(yù)定列表的額外査詢。
可以使用該組通用査詢來(lái)計(jì)算對(duì)服務(wù)器高速緩存的一組經(jīng)更新的查詢。遺 漏查詢可以是屬于服務(wù)器高速緩存但也許不存儲(chǔ)在服務(wù)器高速緩存中的查詢。 遺漏査詢可以是該組通用查詢的一部分。遺漏査詢可以在空閑或低活動(dòng)率期間 插入到隊(duì)列中并隨后被置于服務(wù)器高速緩存中。同樣地,從服務(wù)器高速緩存刪 除的過(guò)期查詢也可被插入隊(duì)列中并隨后被置于服務(wù)器高速緩存中。
提供本概述以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一 些概念。本概述并不旨在確定所要求保護(hù)的主題的關(guān)鍵特征或必要特征, 也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
附圖簡(jiǎn)述
結(jié)合各附圖閱讀以下詳細(xì)描述將更好地理解前述摘要和以下詳細(xì)描述。示 例性實(shí)施例在各圖中示出,然而應(yīng)當(dāng)理解,各實(shí)施例不局限于此處描述的具體 方法和手段中。在各圖中
圖1是表示一示例性計(jì)算設(shè)備的框圖2是表示一示例性服務(wù)器組織的框圖3是表示一查詢系統(tǒng)的框圖4是表示一查詢構(gòu)造系統(tǒng)的框圖5a和圖5b是示出提供查詢結(jié)果的方法的一實(shí)施例的流程圖; 圖6是示出構(gòu)造一組通用查詢的方法的一實(shí)施例的流程圖;以及 圖7是示出更新一組高速緩存查詢的方法的一實(shí)施例的流程圖。
詳細(xì)描述
參見(jiàn)圖1,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算 設(shè)備。計(jì)算機(jī)110的組件包括但不限于處理單元120、系統(tǒng)存儲(chǔ)器130和將 包括系統(tǒng)存儲(chǔ)器在內(nèi)的各個(gè)系統(tǒng)組件耦合到處理單元120的系統(tǒng)總線121。系 統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)
控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任何一種的局部總線。作
為例子而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通 道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié) 會(huì)(VESA)局部總線、以及外圍部件互連(PCI)總線(也被稱為夾層(Mezzanine) 總線)。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì) 算機(jī)110訪問(wèn)的任何可用介質(zhì),且包括易失性和非易失性介質(zhì)、以及可移動(dòng)和 不可移動(dòng)介質(zhì)。作為例子而非限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì) 和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以包括以用于存儲(chǔ)如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié) 構(gòu)、程序模塊或其他數(shù)據(jù)這樣的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失 性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、 ROM、 EEPROM、閃存或者其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或者 其它光盤存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或者其它磁存儲(chǔ)設(shè)備、或者能夠用來(lái) 存儲(chǔ)所需信息并且能夠由計(jì)算機(jī)110訪問(wèn)的任何其它介質(zhì)。通信介質(zhì)通常以諸 如載波或者其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié) 構(gòu)、程序模塊或者其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。術(shù)語(yǔ)"已調(diào)制數(shù)據(jù) 信號(hào)"是指以在該信號(hào)中編碼信息的方式來(lái)設(shè)置或改變其一個(gè)或多個(gè)特性的信 號(hào)。作為例子而非限制,通信介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或者直接線連 接,以及無(wú)線介質(zhì),諸如聲學(xué)、射頻(RF)、紅外以及其它無(wú)線介質(zhì)。任何上 述組合都應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器130包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)可讀存儲(chǔ) 介質(zhì),諸如只讀存儲(chǔ)器(ROM) 131和隨機(jī)存取存儲(chǔ)器(RAM) 132?;据?入/輸出系統(tǒng)133 (BIOS) —般被存儲(chǔ)在ROM 131中,BIOS包含有助于例如 在啟動(dòng)過(guò)程中在計(jì)算機(jī)110內(nèi)部的元件之間傳輸信息的基本例程。RAM 132 一般包含可由處理單元120立即訪問(wèn)和/或當(dāng)前正由處理單元120進(jìn)行操作的數(shù) 據(jù)和/或程序模塊。作為示例而非限制,圖1示出了操作系統(tǒng)134、應(yīng)用程序135、 其他程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110還可以包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存
儲(chǔ)介質(zhì)。僅僅作為示例,圖l示出了從不可移動(dòng)、非易失性磁介質(zhì)讀取或向其
寫入的硬盤驅(qū)動(dòng)器141,從可移動(dòng)、非易失性磁盤152讀取或向其寫入的磁盤 驅(qū)動(dòng)器151,以及從諸如CD-ROM或其它光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤 156讀取或向其寫入的光盤驅(qū)動(dòng)器155。能在示例性操作環(huán)境中使用的其它可 移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,盒式磁帶、 閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū) 動(dòng)器141通常通過(guò)諸如接口 140等不可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線121, 而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過(guò)諸如接口 150等可移動(dòng)存儲(chǔ)器接 口連接到系統(tǒng)總線121。
以上討論且示于圖1中的驅(qū)動(dòng)器及其相關(guān)聯(lián)計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110 提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊及其它數(shù)據(jù)的存儲(chǔ)。在圖1中, 例如,硬盤驅(qū)動(dòng)器141被示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其它程序模 塊146和程序數(shù)據(jù)147。應(yīng)當(dāng)注意,這些組件可以和操作系統(tǒng)134、應(yīng)用程序 135、其他程序模塊136和程序數(shù)據(jù)137相同或者相異。操作系統(tǒng)144、應(yīng)用程 序145、其他程序模塊146和程序數(shù)據(jù)147在此處被給予了不同的編號(hào)以示出 至少它們是不同的副本。用戶可以經(jīng)由輸入設(shè)備,諸如鍵盤162和通常稱之為 鼠標(biāo)、跟蹤球或者觸摸墊的指示設(shè)備161將命令和信息輸入到計(jì)算機(jī)110中。 其它輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、 掃描儀等。這些及其它輸入設(shè)備經(jīng)常經(jīng)由耦合到系統(tǒng)總線的用戶輸入接口 160 耦合到處理單元120,但是可以通過(guò)其它接口和總線結(jié)構(gòu),諸如并行端口、游 戲端口或通用串行總線(USB)進(jìn)行連接。監(jiān)視器191或其他類型的顯示設(shè)備 也通過(guò)諸如視頻接口 190等接口耦合到系統(tǒng)總線121。除了監(jiān)視器之外,計(jì)算 機(jī)還可以包括諸如揚(yáng)聲器197和打印機(jī)196等其他外圍輸出設(shè)備,它們可以通 過(guò)輸出外圍接口 190進(jìn)行連接。
計(jì)算機(jī)110可以利用與諸如遠(yuǎn)程計(jì)算機(jī)180等一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏 輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路 由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或者其它常見(jiàn)的網(wǎng)絡(luò)節(jié)點(diǎn),而且通常包括許多或者 所有以上相對(duì)于計(jì)算機(jī)IIO所描述的元件,盡管在圖1中僅示出了存儲(chǔ)器存儲(chǔ) 設(shè)備181。所描述的邏輯連接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,
但是也可以包括其它網(wǎng)絡(luò)。這種網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、 內(nèi)聯(lián)網(wǎng)和因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110經(jīng)由網(wǎng)絡(luò)接口或適配器170連 接到LAN 171。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào) 器172或者用于經(jīng)由如因特網(wǎng)等WAN 173建立通信的其他裝置??梢允莾?nèi)置 或者外置的調(diào)制解調(diào)器172可經(jīng)由用戶輸入接口 160或者其他適當(dāng)?shù)臋C(jī)制連接 到系統(tǒng)總線121。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)IIO描述的程序模塊或其部 分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器設(shè)備中。作為示例而非限制,圖1將遠(yuǎn)程應(yīng)用程序185 示為駐留在存儲(chǔ)器設(shè)備181上。應(yīng)當(dāng)明白,所示網(wǎng)絡(luò)連接是示例性的,也可以 使用在計(jì)算機(jī)之間建立通信鏈路的其它手段。
以上所描述的本發(fā)明的各方法的全部或部分可以用硬件、軟件或兩者的組 合來(lái)實(shí)施。當(dāng)以軟件來(lái)實(shí)施時(shí),本發(fā)明的各方法或其某些方面或部分可用當(dāng)被 計(jì)算系統(tǒng)執(zhí)行時(shí)使該計(jì)算系統(tǒng)執(zhí)行本發(fā)明的各方法的程序代碼的形式來(lái)實(shí)施。 如上對(duì)該術(shù)語(yǔ)的定義,該程序代碼可存儲(chǔ)在任何計(jì)算機(jī)可讀介質(zhì)上。
圖2表示可用來(lái)為諸如通過(guò)例如計(jì)算機(jī)110輸入到因特網(wǎng)搜索引擎中的查 詢或查詢的部分等査詢提供結(jié)果的服務(wù)器組織200。査詢?cè)醋砸蛱鼐W(wǎng)210上, 其中用戶可以插入他們想要獲得的結(jié)果(諸如針對(duì)査詢的網(wǎng)頁(yè))的查詢??稍?搜索引擎上輸入査詢,搜索引擎可以允許用戶插入感興趣的查詢且可以顯示相 關(guān)結(jié)果供用戶訪問(wèn)。因特網(wǎng)210可以連接到從因特網(wǎng)210接收査詢的分配服務(wù) 器220。多個(gè)分配服務(wù)器220可以連接到因特網(wǎng)210。圖2示出了3個(gè)分配服 務(wù)器220 (220a、 220b和220c),但分配服務(wù)器220的數(shù)量不受限制。査詢可 以通過(guò)例如査詢的起源網(wǎng)際協(xié)議(IP)地址來(lái)分配給分配服務(wù)器220中的特定 一個(gè)??梢岳闷渌桨笇嗽兎峙浣o分配服務(wù)器220之一?;蛘撸梢噪S機(jī) 地將査詢發(fā)送給分配服務(wù)器220中的任何一個(gè)。
接收査詢的分配服務(wù)器220可以將査詢發(fā)送給前端服務(wù)器230,諸如圖2 的服務(wù)器組織220中所示的前端服務(wù)器230a、 230b、 230c和230n中的一個(gè)。 服務(wù)器組織200不受前端服務(wù)器230的特定個(gè)數(shù)的限制。從分配服務(wù)器220接 收查詢的前端服務(wù)器230可基于將査詢鏈接到前端服務(wù)器230的映射來(lái)做到這 一點(diǎn)。例如,査詢可被散列化以產(chǎn)生一個(gè)進(jìn)而被用于映射函數(shù)的值,該函數(shù)將 某個(gè)査詢置于特定前端服務(wù)器230中且可以確保相同查詢總是或幾乎總是被定 向到相同的前端服務(wù)器230。映射函數(shù)可以確定前端服務(wù)器230中的哪一個(gè)將 接收査詢。不需要基于映射函數(shù)來(lái)分配前端服務(wù)器230,而是可以例如且不限 于隨機(jī)地接收查詢。
高速緩存或本地存儲(chǔ)可以包含査詢及其相應(yīng)的結(jié)果。高速緩存可以是前端 服務(wù)器230的一部分,且高速緩存的査詢和結(jié)果可以是諸如來(lái)自一預(yù)定時(shí)間段 (如3小時(shí))的一組新近查詢和結(jié)果。當(dāng)前端服務(wù)器230從分配服務(wù)器220接 收査詢時(shí),前端服務(wù)器230可以搜索其高速緩存以確定該査詢及其相應(yīng)的結(jié)果 是否已存儲(chǔ)在高速緩存中。如果查詢?cè)诟咚倬彺嬷?,則前端服務(wù)器230則可以 返回來(lái)自高速緩存的結(jié)果。該結(jié)果可以被提供給輸入查詢的用戶。
前端服務(wù)器230可與包含例如網(wǎng)頁(yè)等現(xiàn)有結(jié)果的后端數(shù)據(jù)庫(kù)240通信。査 詢結(jié)果可被存儲(chǔ)在后端數(shù)據(jù)庫(kù)240中。如果輸入的査詢不在前端服務(wù)器230的 高速緩存中,則可以咨詢后端數(shù)據(jù)庫(kù)240以便向用戶返回相關(guān)的查詢結(jié)果。因 為后端數(shù)據(jù)庫(kù)240 —般比前端服務(wù)器230的高速緩存大得多,所以咨詢后端數(shù) 據(jù)庫(kù)比咨詢前端服務(wù)器230的高速緩存要花更長(zhǎng)的時(shí)間。因此,咨詢后端數(shù)據(jù) 庫(kù)240僅發(fā)生在例如當(dāng)前端服務(wù)器230不包含所請(qǐng)求的結(jié)果或當(dāng)前端服務(wù)器 230遇到諸如服務(wù)器故障等問(wèn)題的時(shí)候。
圖3是表示可用于獲得對(duì)查詢的一部分的結(jié)果的査詢系統(tǒng)300的框圖。査 詢系統(tǒng)300可以包括用于接收査詢的一部分的分配服務(wù)器220。查詢的一部分 可以是例如査詢的前3個(gè)字符。想得到查詢結(jié)果的用戶可以將查詢的一部分鍵 入或輸入到因特網(wǎng)搜索引擎中??苫诓樵兊囊徊糠炙鹪吹挠?jì)算機(jī)110的IP 地址將該査詢的該部分定向到分配服務(wù)器220。査詢的該部分可被隨機(jī)地定向 到分配服務(wù)器220。
分配服務(wù)器220可以負(fù)責(zé)將查詢的一部分分配給前端服務(wù)器230。為了這 項(xiàng)分配任務(wù),分配服務(wù)器220可以使用散列函數(shù)。例如,分配服務(wù)器220可以 將査詢的該部分分配給前端服務(wù)器230,從而具有相同部分的其他査詢將被分 配給相同的前端服務(wù)器230。在査詢的該部分被分配給前端服務(wù)器230之后, 分配服務(wù)器220可以將査詢的該部分發(fā)送給所分配的前端服務(wù)器230。
一旦前端服務(wù)器230接收了査詢的該部分,前端服務(wù)器230可以負(fù)責(zé)執(zhí)行
搜索以便獲得具有與查詢的該部分相同的部分的其他查詢。為了獲得這些查
詢,前端服務(wù)器230可以咨詢數(shù)據(jù)結(jié)構(gòu)310。雖然在圖3中被示為單獨(dú)的組件, 但是數(shù)據(jù)結(jié)構(gòu)310可以是前端服務(wù)器230的一部分。數(shù)據(jù)結(jié)構(gòu)310可以包括諸 如高速緩存査詢320等服務(wù)器高速緩存。高速緩存査詢320可以包括已被保存 在數(shù)據(jù)結(jié)構(gòu)310中一段預(yù)定時(shí)間的先前的查詢。因此,例如,高速緩存查詢320 可以包括最新近的查詢。高速緩存查詢320可以被保存在數(shù)據(jù)結(jié)構(gòu)310中以便 簡(jiǎn)單且快速地訪問(wèn)新近查詢。數(shù)據(jù)結(jié)構(gòu)310還可以包括一組通用査詢330。該 組通用查詢的形成將在以下更詳細(xì)地描述。
數(shù)據(jù)結(jié)構(gòu)可以是擴(kuò)充的特里(trie)結(jié)構(gòu),它是促進(jìn)與査詢或査詢的一部 分相關(guān)的信息的快速檢索的結(jié)構(gòu)。例如,査詢的可能部分以及與查詢的每個(gè)部 分相關(guān)的額外信息可以被存儲(chǔ)在該特里結(jié)構(gòu)中。與査詢的每個(gè)部分相關(guān)的信息 可以是例如以査詢的該部分開(kāi)頭的預(yù)定個(gè)數(shù)的最頻繁請(qǐng)求的査詢的列表。該列 表可按頻率降序排序,從而首先列出以查詢的該部分開(kāi)頭的最常請(qǐng)求的查詢。
當(dāng)從數(shù)據(jù)結(jié)構(gòu)310獲得可以包括查詢的該部分的其他査詢列表時(shí),就咨詢 一結(jié)果結(jié)構(gòu)340,該結(jié)構(gòu)可以是高速緩存結(jié)構(gòu)。該結(jié)果結(jié)構(gòu)可以是前端服務(wù)器 230的一部分。結(jié)果結(jié)構(gòu)340包含査詢的結(jié)果。在咨詢結(jié)果結(jié)構(gòu)340之后,獲 得以査詢的該部分開(kāi)頭的査詢結(jié)果并將其提供給用戶。這些結(jié)果可以是例如多 個(gè)網(wǎng)頁(yè)選集。
后端服務(wù)器240還可作為查詢系統(tǒng)300的一部分來(lái)包括。如果包括査詢的 該部分的查詢中的一個(gè)或多個(gè)的結(jié)果不位于結(jié)果結(jié)構(gòu)340中,則可以咨詢后端 數(shù)據(jù)庫(kù)240。如圖3所示,還將從后端數(shù)據(jù)庫(kù)240獲得的結(jié)果提供給用戶。
通用査詢構(gòu)造系統(tǒng)400的框圖表示在圖4中示出。系統(tǒng)400可被分配創(chuàng)建 通用查詢330的任務(wù),通用查詢可用于獲得具有與査詢的該部分相同的部分的 查詢。通用查詢構(gòu)造系統(tǒng)400可以包括從分配服務(wù)器220接收查詢的該部分的 前端服務(wù)器230。服務(wù)器高速緩存410可以是前端服務(wù)器230的一部分。服務(wù) 器高速緩存410可以是存儲(chǔ)諸如已被保存了一段預(yù)定時(shí)間的查詢等先前查詢的 前端服務(wù)器230的高速緩存結(jié)構(gòu)。前端服務(wù)器230的服務(wù)器高速緩存410可以 是與數(shù)據(jù)結(jié)構(gòu)310的高速緩存査詢320相同的組件,它可以是前端服務(wù)器230 的一部分。
查詢可以經(jīng)常從前端服務(wù)器230的服務(wù)器高速緩存410刪除。刪除可由于 服務(wù)器高速緩存410的大小限制而發(fā)生;可能需要?jiǎng)h除查詢以便為較新的查詢 (或査詢的一部分)創(chuàng)建存儲(chǔ)空間。或者,可以周期性地發(fā)生刪除。當(dāng)從服務(wù) 器高速緩存410刪除查詢時(shí),日志條目420可以接收并跟蹤被刪除的查詢。一 段預(yù)定時(shí)間過(guò)去之后,日志條目420可以向日志條目編譯器430提供被刪除的 査詢,后者編譯被刪除的條目。日志條目編譯器430可以基于例如在一周內(nèi)出 現(xiàn)不止一次的條目等先前確定的準(zhǔn)則來(lái)編譯被刪除的條目。 一旦日志條目編譯 器430完成了對(duì)被刪除的條目的編譯,它就可以將此編譯提供給數(shù)據(jù)結(jié)構(gòu)310 的通用査詢330。數(shù)據(jù)結(jié)構(gòu)310然后存儲(chǔ)通用査詢以便用于將具有與搜索的査 詢的該部分相同的部分的査詢提供給結(jié)果結(jié)構(gòu)340。
通用查詢330可以用作高速緩存査詢320的補(bǔ)充。高速緩存査詢320可以 是更新近的査詢,而不一定是新近査詢的通用査詢330可以是從相對(duì)較長(zhǎng)的預(yù) 定時(shí)間(如一周)頻繁地請(qǐng)求的査詢。
圖5a和5b示出了提供查詢結(jié)果的方法。在505處,獲得查詢的一部分。 査詢的該部分可由想獲得與査詢相關(guān)的結(jié)果的用戶啟動(dòng),該用戶將査詢的該部 分輸入到例如因特網(wǎng)搜索引擎中??稍诜峙浞?wù)器220上獲得査詢的該部分。 在510處,檢査査詢的該部分以便確定査詢的該部分是否與預(yù)定條目匹配。如 果査詢的該部分與預(yù)定條目匹配,則在515處,將后續(xù)字符作為査詢的一部分 來(lái)分配。因?yàn)榭赡艽嬖谟脩舨o(wú)意使其成為查詢的一部分的多個(gè)頻繁出現(xiàn)的條 目,因此該比較可以排除提供對(duì)不需要的查詢的査詢結(jié)果。例如,如果用戶輸 入以"http"和"www"開(kāi)頭的此類査詢,則用戶一般不想搜索這些查詢,而 是對(duì)這些頻繁出現(xiàn)的條目之后的字符感興趣。因此,通過(guò)將諸如"www"之后 的3個(gè)字符等后續(xù)字符作為査詢的一部分來(lái)分配,可以搜索査詢的合適部分。 可將査詢的該部分與其他預(yù)定條目比較。
在后續(xù)字符作為査詢的一部分分配之后,如果査詢的該部分與預(yù)定條目不 匹配,則提供査詢結(jié)果的方法分別從515和510前進(jìn)到520。在520處,可以 計(jì)算査詢的該部分的表示。例如,該表示可以是查詢的該部分的散列函數(shù)。其 他表示也是可能的。
接著520,在525處,可將査詢的該部分分配給前端服務(wù)器230。當(dāng)在520
處計(jì)算査詢的該部分的表示時(shí),然后可使用該表示以便將查詢的該部分分配給
前端服務(wù)器230??墒褂闷渌峙錅?zhǔn)則來(lái)將査詢的該部分分配給前端服務(wù)器。 或者,分配可以是隨機(jī)選擇。在530處,可將查詢的該部分發(fā)送給指定的前端 服務(wù)器230。
535確定諸如以上根據(jù)圖3和圖4描述的數(shù)據(jù)結(jié)構(gòu)310等數(shù)據(jù)結(jié)構(gòu)是否包 含以查詢的該部分開(kāi)頭的查詢。如果數(shù)據(jù)結(jié)構(gòu)310 (它可以包括高速緩存査詢 320,而后者可以包括已被保存在數(shù)據(jù)結(jié)構(gòu)310中一段預(yù)定時(shí)間的先前查詢和 通用査詢330)不包含以査詢的該部分開(kāi)頭的查詢,則在540處向用戶提供空 結(jié)果列表。然而,如果數(shù)據(jù)結(jié)構(gòu)310包含以査詢的該部分開(kāi)頭的査詢,則該方 法前進(jìn)到545 (圖5b)。在545處,可從數(shù)據(jù)結(jié)構(gòu)310獲得以査詢的該部分開(kāi) 頭的查詢。
在550處,對(duì)每個(gè)獲得的以查詢的該部分開(kāi)頭的査詢作出判定以査明結(jié)果 是否被存儲(chǔ)在諸如結(jié)果結(jié)構(gòu)340等作為前端服務(wù)器230的一部分的服務(wù)器高速 緩存中。在560處,如果關(guān)于所獲得的以査詢的該部分開(kāi)頭的查詢的結(jié)果不在 結(jié)果結(jié)構(gòu)340中,則從后端數(shù)據(jù)庫(kù)240獲得結(jié)果。在555處,如果關(guān)于所獲得 的以查詢的該部分開(kāi)頭的査詢的結(jié)果在結(jié)果結(jié)構(gòu)340中,則從結(jié)果結(jié)構(gòu)340中 獲得結(jié)果。對(duì)每個(gè)所獲得的包括查詢的該部分的査詢執(zhí)行555處的判定。這可 以確保為包括査詢的該部分的每個(gè)查詢提供結(jié)果,而不管結(jié)果是來(lái)自后端數(shù)據(jù) 庫(kù)240還是來(lái)自結(jié)果結(jié)構(gòu)340。提供査詢的方法在提供結(jié)果的565處終止。
圖6是示出構(gòu)造一組通用查詢的方法的流程圖。在610處,基于預(yù)定列表 生成查詢。該預(yù)定列表可以包括系統(tǒng)管理員相信應(yīng)為一組通用査詢330的一部 分的査詢。例如,預(yù)定查詢可以是還沒(méi)有被用戶在査詢搜索中使用過(guò)但有望在 不久的將來(lái)變得流行且被廣泛搜索的一部新電影。通過(guò)將這種査詢添加到作為 數(shù)據(jù)結(jié)構(gòu)310 —部分的通用査詢330中,針對(duì)查詢或査詢的一部分的搜索就不 需向后端數(shù)據(jù)庫(kù)240的咨詢。
在615處,編譯從諸如前端服務(wù)器230的服務(wù)器高速緩存410或高速緩存 查詢320等服務(wù)器的高速緩存刪除的查詢??稍陬A(yù)定時(shí)間內(nèi)編譯被刪除的查詢。 如以上根據(jù)圖4的通用査詢構(gòu)造系統(tǒng)400所描述的,被刪除的查詢可由日志條 目420跟蹤并由日志編譯器430編譯。
在620處,形成一組通用査詢330。通用查詢可以包括在610處生成的預(yù) 定查詢的組合或編譯以及在615處生成的被刪除的査詢。在形成通用查詢330 之后,在625處,將通用査詢330分配給前端服務(wù)器230。如果被刪除的査詢 是從諸如圖2的前端服務(wù)器230b等特定前端服務(wù)器刪除的査詢,則通用査詢 則可被分配給系統(tǒng)200的其他前端服務(wù)器230a、 230c和230n。
圖7是示出更新可以作為前端服務(wù)器230的一部分的前端服務(wù)器的數(shù)據(jù)結(jié) 構(gòu)310的高速緩存查詢320的方法的流程圖。高速緩存查詢320可以包括新近 査詢。在710處,計(jì)算一組經(jīng)更新的査詢。該組經(jīng)更新的査詢可以包括來(lái)自通 用查詢330的查詢,該查詢將基于例如操作來(lái)將相同査詢和查詢的相同部分定 向到相同的前端服務(wù)器230的散列和映射函數(shù)而被分配給前端服務(wù)器230???以由前端服務(wù)器230來(lái)計(jì)算該組經(jīng)更新的查詢。在720處,該組經(jīng)更新的査詢 可與高速緩存查詢320 —起存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)310中。這有助于更新高速緩存査 詢320。
在730處,確定在該組經(jīng)更新的査詢中但不在高速緩存查詢320中的査詢 (遺漏查詢)。如果沒(méi)有査詢與此準(zhǔn)則匹配,則該方法繼而搜索與此準(zhǔn)則匹配 的查詢。方法繼續(xù)以使遺漏查詢被添加到高速緩存査詢320。在740處,將遺 漏査詢添加到隊(duì)列。
該方法可以前進(jìn)到750,其中分析系統(tǒng)以確定該系統(tǒng)是否為輕負(fù)荷。每次 前端服務(wù)器230向后端系統(tǒng)240發(fā)送請(qǐng)求時(shí),來(lái)自后端系統(tǒng)240的響應(yīng)可以包 括可用于確定后端240的當(dāng)前狀態(tài)的反饋,該狀態(tài)可以包括當(dāng)前后端負(fù)荷。例 如,反饋可以包括在隊(duì)列中等待被后端240處理的請(qǐng)求的平均數(shù)量或后端240 在査詢處理時(shí)間限制內(nèi)能夠獲得的答復(fù)的質(zhì)量。前端服務(wù)器230然后可以使用 一算法來(lái)基于反饋確定當(dāng)前后端240是應(yīng)被視為重負(fù)荷還是輕負(fù)荷。如果系統(tǒng) 為輕負(fù)荷,則該方法則前進(jìn)到760。
從740或750中任一個(gè)到760處,從隊(duì)列中移除遺漏查詢。在770處,可 將遺漏查詢傳送給后端數(shù)據(jù)庫(kù)240。在780處,后端數(shù)據(jù)庫(kù)240用遺漏查詢更 新高速緩存查詢320。遺漏查詢不再?gòu)母咚倬彺娌樵?20 "遺漏"。
應(yīng)當(dāng)理解,所公開(kāi)的各實(shí)施例可以被整體或部分地在一個(gè)或多個(gè)計(jì)算系統(tǒng) 或設(shè)備中實(shí)現(xiàn)。圖1示出了其中可實(shí)現(xiàn)或?qū)嵤└鞣矫娴挠?jì)算系統(tǒng)100的一個(gè)示
例的功能性組件。如此處所用的,術(shù)語(yǔ)"計(jì)算系統(tǒng)"、"計(jì)算機(jī)系統(tǒng)"以及"計(jì) 算機(jī)"是指包括能夠執(zhí)行或以別的方式處理程序代碼和/或數(shù)據(jù)的處理器的任何 機(jī)器、系統(tǒng)或設(shè)備。不旨在任何限制,計(jì)算系統(tǒng)的示例包括個(gè)人計(jì)算機(jī)(PC)、 微型計(jì)算機(jī)、大型計(jì)算機(jī)、瘦客戶機(jī)、網(wǎng)絡(luò)PC、服務(wù)器、工作站、膝上型電 腦、手持式計(jì)算機(jī)、可編程消費(fèi)者電子產(chǎn)品、多媒體控制臺(tái)、游戲控制臺(tái)、衛(wèi)
星接收器、機(jī)頂盒、自動(dòng)取款機(jī)、街機(jī)、移動(dòng)電話、個(gè)人數(shù)字助理(PDA)以 及任何其他基于處理器的系統(tǒng)或機(jī)器。術(shù)語(yǔ)"程序代碼"和"代碼"是指由處 理器執(zhí)行或以其他方式處理的任何指令集。程序代碼和/或數(shù)據(jù)可用執(zhí)行特定功 能的例程、程序、對(duì)象、模塊、數(shù)據(jù)結(jié)構(gòu)等的形式來(lái)實(shí)現(xiàn)。
應(yīng)當(dāng)注意,前述示例僅是出于解釋的目的提供的,且不應(yīng)被理解為限制性 的。雖然已參考各實(shí)施例描述了本發(fā)明,但是應(yīng)當(dāng)理解,此處所使用的詞是描 述和說(shuō)明性的詞,而非限制的詞。此外,雖然此處已經(jīng)參考具體方法、材料和 示例描述了各實(shí)施例,但是各實(shí)施例不旨在限于此處所公開(kāi)的細(xì)節(jié);相反,各 實(shí)施例可擴(kuò)展到所有功能上等效的結(jié)構(gòu)、方法和用途,這些都在所附權(quán)利要求 書的范圍內(nèi)。
權(quán)利要求
1. 一種提供查詢結(jié)果的方法,所述方法包括獲得一查詢的一部分;將所述查詢的所述部分分配給服務(wù)器(230);獲得以所述查詢的所述部分開(kāi)頭的其他查詢;以及基于所述查詢的所述部分獲得部分或所有所述其他查詢的結(jié)果。
2. 如權(quán)利要求l所述的方法,其特征在于,還包括 計(jì)算所述査詢的所述部分的表示;其中將所述查詢的所述部分分配給服務(wù)器(230)包括基于所述表示將 所述査詢的所述部分分配給服務(wù)器(230)。
3. 如權(quán)利要求l所述的方法,其特征在于,還包括 確定所述査詢的所述部分是否與一預(yù)定條目匹配;以及 將后續(xù)字符分配為所述查詢的所述部分。
4. 如權(quán)利要求l所述的方法,其特征在于,還包括 將高速緩存査詢(320)和一組通用查詢(330)存儲(chǔ)在一數(shù)據(jù)結(jié)構(gòu)(310)中;其中獲得以所述査詢的所述部分開(kāi)頭的其他查詢包括從所述數(shù)據(jù)結(jié)構(gòu) (310)獲得以所述查詢的所述部分開(kāi)頭的其他查詢。
5. 如權(quán)利要求4所述的方法,其特征在于,還包括 修改所述數(shù)據(jù)結(jié)構(gòu)(310)以反映對(duì)所述高速緩存査詢(320)所作的改變以及對(duì)所述一組通用查詢(330)所作的改變。
6. 如權(quán)利要求4所述的方法,其特征在于,還包括 根據(jù)使用頻率存儲(chǔ)所述高速緩存查詢(320)和所述一組通用査詢(330);以及按所述使用頻率的降序顯示以所述查詢的所述部分開(kāi)頭的所述其他査 詢中的每一個(gè)的結(jié)果。
7. 如權(quán)利要求l所述的方法,其特征在于,獲得以所述查詢的所述部 分開(kāi)頭的所述其他査詢中的每一個(gè)的結(jié)果包括從所述服務(wù)器(230)的高速緩存(410)獲得所述其他査詢中的每一個(gè)的結(jié)果。
8. 如權(quán)利要求l所述的方法,其特征在于,獲得以所述查詢的所述部 分開(kāi)頭的所述其他查詢中的每一個(gè)的結(jié)果包括從一后端服務(wù)器(240)獲得 所述其他査詢中的每一個(gè)的結(jié)果。
9. 如權(quán)利要求l所述的方法,其特征在于,還包括 如果不能獲得以所述查詢的所述部分開(kāi)頭的所述其他査詢,則提供一空結(jié)果。
10. —種査詢系統(tǒng)(300),包括 接收一査詢的一部分的分配服務(wù)器(220);存儲(chǔ)高速緩存査詢(320)和一組通用査詢(330)的數(shù)據(jù)結(jié)構(gòu)(310); 提供關(guān)于所述高速緩存査詢(320)和所述一組通用査詢組(330)的 結(jié)果的結(jié)果結(jié)構(gòu)(340);以及基于所述査詢的所述部分咨詢所述數(shù)據(jù)結(jié)構(gòu)(310)和所述結(jié)果結(jié)構(gòu) (340)以提供相關(guān)結(jié)果的前端服務(wù)器(230)。
11. 如權(quán)利要求10所述的系統(tǒng),其特征在于,還包括后端數(shù)據(jù)庫(kù)(240)。
12. 如權(quán)利要求IO所述的系統(tǒng),其特征在于,所述分配服務(wù)器(220) 將所述查詢的所述部分分配給所述前端服務(wù)器(230)。
13. 如權(quán)利要求IO所述的系統(tǒng),其特征在于,所述查詢的所述部分是 所述査詢的前綴。
14. 一種構(gòu)造一組通用査詢(330)的方法,所述方法包括 編譯從前端服務(wù)器(230)的高速緩存(410)刪除的條目; 形成由所述刪除的條目組成的一組通用査詢(330),其中所述刪除的條目來(lái)自一預(yù)定時(shí)間范圍;以及將所述一組通用查詢(330)分配給另一前端服務(wù)器(230)。
15. 如權(quán)利要求14所述的方法,其特征在于,將所述一組通用查詢(330) 分配給另一前端服務(wù)器(230)包括將所述一組通用查詢(330)分配給多 個(gè)前端服務(wù)器(230)。
16. 如權(quán)利要求14所述的方法,還包括 基于一預(yù)定列表生成額外的査詢;以及將所述額外的査詢添加到所述一組通用查詢(330)。
17. 如權(quán)利要求14所述的方法,還包括為前端服務(wù)器(230)計(jì)算一組經(jīng)更新的査詢,其中所述一組經(jīng)更新的 査詢由被分配給所述前端服務(wù)器(230)的所述一組通用查詢中的所分配的 查詢組成;以及為所述前端服務(wù)器(230)構(gòu)造一數(shù)據(jù)結(jié)構(gòu)(310),其中所述數(shù)據(jù)結(jié) 構(gòu)的內(nèi)容由所述一組經(jīng)更新的査詢和高速緩存查詢(320)組成。
18. 如權(quán)利要求17所述的方法,其特征在于,還包括 計(jì)算遺漏查詢,其中所述遺漏查詢屬于所述前端服務(wù)器(230)的高速緩存(410);以及將所述遺漏查詢插入到一隊(duì)列中。
19. 如權(quán)利要求18所述的方法,其特征在于,還包括 將所述遺漏査詢從所述隊(duì)列移除;將所述遺漏査詢從所述隊(duì)列發(fā)送到一后端數(shù)據(jù)庫(kù)(240);以及 將所述遺漏査詢插入到所述前端服務(wù)器(230)的所述高速緩存(410)中。
20. 如權(quán)利要求17所述的方法,其特征在于,還包括 確定從所述服務(wù)器(230)的所述高速緩存(410)過(guò)期的一過(guò)期査詢是否屬于所述一組經(jīng)更新的査詢;將所述過(guò)期査詢插入到一隊(duì)列中; 將所述過(guò)期査詢從所述隊(duì)列中移除;將所述過(guò)期查詢從所述隊(duì)列發(fā)送到一后端數(shù)據(jù)庫(kù)(240);以及 將所述過(guò)期査詢插入到所述前端服務(wù)器(230)的所述高速緩存(410)全文摘要
各實(shí)施例構(gòu)想了一種用于獲得關(guān)于查詢的一部分的相關(guān)結(jié)果并為服務(wù)器的高速緩存生成一組經(jīng)更新的查詢的系統(tǒng)和方法??梢詮陌ǚ?wù)器高速緩存和一組通用查詢的數(shù)據(jù)結(jié)構(gòu)中標(biāo)識(shí)并獲得以查詢的一部分開(kāi)頭的其他查詢。一旦其他查詢被標(biāo)識(shí),從服務(wù)器高速緩存或后端數(shù)據(jù)庫(kù)獲得關(guān)于其他查詢的結(jié)果??梢园ū粍h除的和額外的查詢的一組通用查詢可用于為服務(wù)器生成一組經(jīng)更新的查詢。將可能基于分配函數(shù)而屬于服務(wù)器的遺漏查詢和被刪除的查詢插入到一隊(duì)列中,該隊(duì)列隨后被傳送給服務(wù)器的高速緩存。該傳送可以發(fā)生在低活動(dòng)率或空閑狀態(tài)期間。
文檔編號(hào)G06F15/16GK101390080SQ200780006818
公開(kāi)日2009年3月18日 申請(qǐng)日期2007年2月23日 優(yōu)先權(quán)日2006年2月28日
發(fā)明者G·庫(kù)馬, G·薩瑞恩, M·A·伊薩德, Y·于 申請(qǐng)人:微軟公司