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