專利名稱:用于文檔搜索的搜索高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及文檔搜索技術(shù)。
背景技術(shù):
當(dāng)今由于計(jì)算設(shè)備減小的成本,許多個(gè)人具有多個(gè)計(jì)算設(shè)備,這些計(jì)算設(shè)備可包括但不限于臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、多媒體播放器、移動(dòng)電話、電子閱讀器以及其他計(jì)算設(shè)備。由于個(gè)人可具有多個(gè)計(jì)算設(shè)備,因此個(gè)人的文檔可跨這些多個(gè)設(shè)備分布。例如, 個(gè)人的文檔可包括文字處理文檔、多媒體文件、圖像、電子表格文檔、HTML頁面、高速緩存的 HTML頁面、以及其他文檔。此外,許多在線服務(wù)允許個(gè)人將文檔保留在在線存儲(chǔ)位置。由此, 對于任何特定個(gè)人,這樣的個(gè)人可使用多個(gè)計(jì)算設(shè)備并具有多個(gè)跨這些計(jì)算設(shè)備分布的多個(gè)文檔。當(dāng)前,對于用戶跨多個(gè)計(jì)算設(shè)備在她的所有文檔中進(jìn)行搜索是相對困難的或昂貴的(在電池壽命的使用、帶寬等方面)。在具體示例中,用戶可具有跨多個(gè)計(jì)算設(shè)備分布的文檔,并且可能希望通過利用移動(dòng)電話在計(jì)算設(shè)備中搜索文檔。如果移動(dòng)電話沒有被連接到網(wǎng)絡(luò),則在移動(dòng)電話上進(jìn)行的搜索的搜索結(jié)果將僅包括駐留在移動(dòng)電話上的文檔,而用戶在其他計(jì)算設(shè)備上的其他文檔將不被包括在搜索結(jié)果中。因此,為使移動(dòng)電話能夠跨多個(gè)計(jì)算設(shè)備搜索文檔,移動(dòng)電話必須被連接到網(wǎng)絡(luò)。在示例性體系結(jié)構(gòu)中,用戶的每一計(jì)算設(shè)備通過到網(wǎng)絡(luò)的連接來彼此通信。在這樣的體系結(jié)構(gòu)中,移動(dòng)電話的用戶可將查詢傳送給各計(jì)算設(shè)備中的每一個(gè),并且搜索結(jié)果可從用戶的每一計(jì)算設(shè)備被返回到移動(dòng)電話。在另一示例中,用戶的每一計(jì)算設(shè)備可將局部索引傳送給協(xié)調(diào)器設(shè)備,諸如云計(jì)算設(shè)備,并且該協(xié)調(diào)器設(shè)備可跨用戶的計(jì)算設(shè)備維護(hù)用戶的文檔的全局索引。在這一示例中,移動(dòng)電話的用戶將查詢發(fā)送給協(xié)調(diào)器設(shè)備,并且協(xié)調(diào)器設(shè)備將查詢的結(jié)果返回給移動(dòng)電話。然而,在以上提供的示例中,用戶的各計(jì)算設(shè)備中的每一個(gè)必須被連接到網(wǎng)絡(luò),并且對于每一搜索都要求各計(jì)算設(shè)備之間的某一形式的網(wǎng)絡(luò)通信。因此,執(zhí)行交互式搜索的能力由于網(wǎng)絡(luò)的等待時(shí)間而被禁止。另外,在必須將電能提供給用于建立和維護(hù)網(wǎng)絡(luò)連接的移動(dòng)設(shè)備的各組件時(shí),移動(dòng)設(shè)備的電池消耗得更快。此外,除非至少用于執(zhí)行該搜索的計(jì)算設(shè)備維護(hù)與協(xié)調(diào)器設(shè)備的網(wǎng)絡(luò)連接,否則跨計(jì)算設(shè)備對文檔的搜索無法進(jìn)行。
發(fā)明內(nèi)容
以下是在本文詳細(xì)描述的主題的簡要概述。本發(fā)明內(nèi)容不旨在是關(guān)于權(quán)利要求的范圍的限制。此處描述的是關(guān)于通過利用搜索高速緩存來搜索文檔的各種技術(shù)。更具體地,此處描述的是關(guān)于利用搜索高速緩存來在跨多個(gè)計(jì)算設(shè)備分布的文檔中進(jìn)行搜索的技術(shù),其中搜索高速緩存包括結(jié)果高速緩存、索引高速緩存和布爾高速緩存(諸如布隆過濾器)。在一示例中,搜索高速緩存可駐留在移動(dòng)計(jì)算設(shè)備上,使得移動(dòng)計(jì)算設(shè)備可搜索跨用戶的多個(gè)計(jì)算設(shè)備分布的文檔,而無需要求移動(dòng)計(jì)算設(shè)備經(jīng)由網(wǎng)絡(luò)來傳送查詢并從分開的設(shè)備接收查詢結(jié)果。然而,可以理解,可結(jié)合在通過萬維網(wǎng)可用的文檔中執(zhí)行搜索來采用搜索高速緩存。在示例性實(shí)施例中,協(xié)調(diào)器設(shè)備可維護(hù)特定用戶的跨該特定用戶的多個(gè)計(jì)算設(shè)備分布的文檔的全局索引,該協(xié)調(diào)設(shè)備可以是個(gè)人計(jì)算設(shè)備或基于云的設(shè)備。例如,協(xié)調(diào)器設(shè)備可從用戶的多個(gè)計(jì)算設(shè)備接收局部索引,并且可通過利用這樣的局部索引來創(chuàng)建全局索引。全局索引可以是倒排索引,該倒排索引包括關(guān)鍵詞以及與這些關(guān)鍵詞對應(yīng)的文檔的身份和位置。協(xié)調(diào)器設(shè)備隨后可從另一計(jì)算設(shè)備(例如移動(dòng)計(jì)算設(shè)備)接收指示對搜索高速緩存的空間約束的數(shù)據(jù)。協(xié)調(diào)器設(shè)備可生成符合移動(dòng)計(jì)算設(shè)備所指示的空間約束的搜索高速緩存,并且可將這一搜索高速緩存?zhèn)魉徒o移動(dòng)計(jì)算設(shè)備。例如,協(xié)調(diào)器設(shè)備可確定結(jié)果高速緩存、索引高速緩存、布爾高速緩存的大小和內(nèi)容。如上所述,搜索高速緩存可包括眾多不同類型的高速緩存,諸如結(jié)果高速緩存、索引高速緩存和布爾高速緩存(布隆過濾器)。結(jié)果高速緩存可包括用戶的多個(gè)頻繁使用的查詢以及與這些查詢對應(yīng)的搜索結(jié)果。由此,如果用戶使用結(jié)果高速緩存中的查詢來搜索文檔,則搜索結(jié)果被預(yù)先計(jì)算且駐留在結(jié)果搜索引擎中,并可被立即提供給用戶。索引高速緩存可以是倒排二維索引,該倒排二維索引包括多個(gè)關(guān)鍵詞以及與這些關(guān)鍵詞對應(yīng)的文檔的身份和位置。由此,如果用戶提供包括駐留在索引高速緩存中的關(guān)鍵詞的查詢,則可將與索引高速緩存中的這一關(guān)鍵詞對應(yīng)的文檔立即返回給用戶。布爾高速緩存可輸出對用戶所提供的查詢中的關(guān)鍵詞是否與文檔對應(yīng)的指示。由此,例如,如果用戶提供在結(jié)果高速緩存中未包括的查詢并且在索引高速緩存中未包括該查詢的關(guān)鍵詞,則可訪問布爾高速緩存來查明該關(guān)鍵詞是否存在于預(yù)定范圍的關(guān)鍵詞(以字母“A”開始至以字母“D”開始的關(guān)鍵詞)中。如果該關(guān)鍵詞在預(yù)定范圍中但沒有被表示在布爾高速緩存中,則可立即輸出對所提供的查詢的結(jié)果集為空的指示,而無需訪問協(xié)調(diào)器設(shè)備。在閱讀并理解了附圖和描述后,可以明白其他方面。
圖1是被配置有搜索高速緩存的示例性計(jì)算設(shè)備。圖2是示例性系統(tǒng)的功能框圖,該示例性系統(tǒng)便于創(chuàng)建對用戶的跨多個(gè)計(jì)算設(shè)備分布的文檔的全局索引。圖3是示例性系統(tǒng)的功能框圖,該示例性系統(tǒng)便于建立受限于空間約束的搜索高速緩存。圖4是示例性系統(tǒng)的功能框圖,該示例性系統(tǒng)便于在跨用戶的多個(gè)計(jì)算設(shè)備分布的多個(gè)文檔中進(jìn)行搜索。圖5是示出用于利用搜索高速緩存來執(zhí)行對駐留在多個(gè)不同計(jì)算設(shè)備上的文檔進(jìn)行搜索的示例性方法的流程圖。圖6是示出用于建立跨用戶的多個(gè)計(jì)算設(shè)備的文檔的全局索引的示例性方法的流程圖。圖7是示出用于生成并向移動(dòng)計(jì)算設(shè)備傳送搜索高速緩存的示例性方法的流程圖。
圖8是示出用于更新駐留在移動(dòng)計(jì)算設(shè)備上的搜索高速緩存的示例性方法的流程圖。圖9是示例性計(jì)算系統(tǒng)。
具體實(shí)施例方式現(xiàn)在將參考附圖來描述關(guān)于通過使用搜索高速緩存來在多個(gè)文檔中進(jìn)行搜索的各種技術(shù),在全部附圖中相同的附圖標(biāo)記表示相同的元素。另外,本文出于解釋的目的示出并描述了各示例性系統(tǒng)的若干功能框圖;然而可以理解,被描述為由特定系統(tǒng)組件執(zhí)行的功能可以由多個(gè)組件來執(zhí)行。類似地,例如,一組件可被配置成執(zhí)行被描述為由多個(gè)組件執(zhí)行的功能。另外,如此處所用的,術(shù)語“示例性”旨在表示用作某些事物的圖示或示例,而不意圖指示優(yōu)選。參考圖1,示出了配置有搜索高速緩存的示例性計(jì)算設(shè)備100,可結(jié)合搜索文檔來利用該搜索高速緩存。計(jì)算設(shè)備100可以是任何合適的計(jì)算設(shè)備,包括但不限于個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)或某一其他合適的計(jì)算設(shè)備。在特定示例中,計(jì)算設(shè)備100可以是諸如移動(dòng)電話、移動(dòng)媒體播放器、移動(dòng)游戲設(shè)備、電子閱讀器之類的移動(dòng)計(jì)算設(shè)備,或其他合適的計(jì)算設(shè)備此外,如此處使用的,術(shù)語“文檔”旨在包括多個(gè)不同類型的電子文檔,其中這樣的電子文檔可具有與其對應(yīng)的關(guān)鍵詞。由此,如此處使用的,文檔可以是文字處理文檔、圖像、 電子郵件、網(wǎng)頁、電子表格文檔、多媒體文件、或其他合適的文檔。此外,文檔可具有與其對應(yīng)的關(guān)鍵詞,其中關(guān)鍵詞可以是該文檔中所包括的文本的一部分、與該文檔對應(yīng)的元數(shù)據(jù)、 分配給該文檔的標(biāo)簽等。計(jì)算設(shè)備100包括從用戶接收查詢的接收器組件102,其中該查詢由用戶來制定以定位可跨用戶的各計(jì)算設(shè)備分布的一個(gè)或多個(gè)文檔。例如,查詢可包括一個(gè)或多個(gè)關(guān)鍵詞,并且用戶可通過合適的用戶界面將該查詢提供給計(jì)算設(shè)備100,該用戶界面包括按鈕、 鍵盤、接受語音命令的話筒等。搜索組件104與接收器組件102進(jìn)行通信,并且在駐留在計(jì)算設(shè)備100的存儲(chǔ)器中的搜索高速緩存106中執(zhí)行搜索。搜索組件104至少部分基于由接收器組件102所接收的查詢來在搜索高速緩存中執(zhí)行搜索。顯示器108與搜索組件104進(jìn)行通信,使得可將搜索組件108所檢索的搜索結(jié)果在計(jì)算設(shè)備100的顯示器108上顯示給用戶。顯示器108可在計(jì)算設(shè)備100外部或可與計(jì)算設(shè)備100集成。另外地或另選地,計(jì)算設(shè)備100可包括數(shù)據(jù)存儲(chǔ)介質(zhì),并且由搜索組件1014輸出的搜索結(jié)果可被保留在該數(shù)據(jù)存儲(chǔ)介質(zhì)中。在示例性實(shí)施例中,搜索緩存106包括多個(gè)不同類型的高速緩存。例如,搜索高速緩存106可包括結(jié)果高速緩存110、索引高速緩存112和布爾高速緩存114。在示例性實(shí)施例中,布爾高速緩存114可以是布隆過濾器。布隆過濾器是一數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)可用于測試元素是否駐留在集合中。結(jié)果高速緩存110可包括多個(gè)查詢以及與這些查詢對應(yīng)的預(yù)先計(jì)算的搜索結(jié)果。 例如,該多個(gè)查詢可以是由一個(gè)用戶或用戶集所頻繁提交的查詢。由此,如果用戶利用查詢 “計(jì)算機(jī)銷售”在文檔集中頻繁地搜索,則結(jié)果高速緩存110可包括這一查詢以及與這一查詢對應(yīng)的搜索結(jié)果。與該查詢對應(yīng)的搜索結(jié)果可指示通過使用該查詢所檢索的文檔的身份和位置。因此,如果結(jié)果高速緩存Iio中包括用戶所提供的查詢,則搜索組件104可將結(jié)果高速緩存110中的搜索結(jié)果返回給用戶,而無需通過網(wǎng)絡(luò)連接訪問另一計(jì)算設(shè)備。索引高速緩存112可以是倒排索引,該倒排索引包括多個(gè)關(guān)鍵詞以及文檔語料庫中對應(yīng)于這些關(guān)鍵詞的文檔。因此,在接收到該查詢之后,搜索組件104可首先檢查結(jié)果高速緩存110以確定結(jié)果高速緩存110中是否包括該查詢。如果結(jié)果高速緩存110中未包括該查詢,則搜索組件104可以搜索索引高速緩存112以尋找包括在該查詢中的關(guān)鍵詞。如果查詢中的關(guān)鍵詞在索引高速緩存112中存在,則搜索組件104可返回結(jié)果集并且使得這一結(jié)果集被顯示在計(jì)算設(shè)備110的顯示器108上,該結(jié)果集包括與該查詢的關(guān)鍵詞對應(yīng)的文檔的身份和位置。由此,如果搜索可基于索引高速緩存112的內(nèi)容來執(zhí)行,則不需要通過網(wǎng)絡(luò)連接將該查詢提交給另一計(jì)算設(shè)備,并且可在計(jì)算設(shè)備100處本地回答該查詢。布爾高速緩存114可被配置成指示查詢中的關(guān)鍵詞是否位于與特定文檔語料庫中的文檔對應(yīng)的元素集中??梢岳斫?,搜索組件104沒有利用布爾高速緩存114來返回搜索結(jié)果。相反,如果該查詢中的關(guān)鍵詞不與布爾高速緩存114所表示的特定文檔語料庫中的任何文檔相對應(yīng),則搜索組件104可返回空結(jié)果集。如以下將更詳細(xì)地描述的,布爾高速緩存114可與特定范圍相關(guān)聯(lián),使得由于布爾高速緩存114的大小約束而只有與文檔語料庫對應(yīng)的關(guān)鍵詞子集被包括在布爾高速緩存114中。例如,可將對應(yīng)于文檔語料庫以字母“A”開始的關(guān)鍵詞至對應(yīng)于該文檔語料庫以字母“D”開始的關(guān)鍵詞包括在布爾高速緩存 114中,而不將其他關(guān)鍵詞包括在布爾高速緩存114中。繼續(xù)這一示例,如果該查詢包括關(guān)鍵詞“計(jì)算機(jī)”并且該查詢未被包括在結(jié)果高速緩存110或索引高速緩存112中,則搜索組件104可確定這一關(guān)鍵詞是否被包括在對應(yīng)于布爾高速緩存114的范圍中。在這一示例中,關(guān)鍵詞“計(jì)算機(jī)”以字母“C”開始,并且由此被包括在布爾高速緩存114的范圍中。搜索組件104隨后可檢查布爾高速緩存114以確定關(guān)鍵詞“計(jì)算機(jī)”是否被包括在布爾高速緩存114所表示的關(guān)鍵詞集中。如果在布爾高速緩存114的元素集中沒有找到關(guān)鍵詞“計(jì)算機(jī)”,則感興趣的文檔語料庫中沒有對應(yīng)于這一關(guān)鍵詞的文檔,并且搜索組件104可經(jīng)由顯示器108向用戶返回空結(jié)果集。如果搜索組件104 確定關(guān)鍵詞“計(jì)算機(jī)”被包括在布爾高速緩存114中,則至少一個(gè)文檔與這一關(guān)鍵詞對應(yīng), 并且搜索組件104不能在計(jì)算設(shè)備100處本地完成該搜索。在這一情況下,搜索組件104 可被配置成將該查詢傳送給可以訪問較大索引的另一計(jì)算設(shè)備,使得可將搜索結(jié)果返回給用戶。盡管以上將搜索高速緩存106描述為包括結(jié)果高速緩存110、索引高速緩存112和布爾高速緩存114,但在某些情形中,這些高速緩存110、112或114中的一個(gè)或多個(gè)可被排除在搜索高速緩存106以外。例如,搜索高速緩存106可在空間方面受約束,并且可通過將索引高速緩存112和布爾高速緩存114包括在搜索高速緩存106中但從搜索高速緩存106 中省略結(jié)果高速緩存110來優(yōu)化或基本上優(yōu)化在計(jì)算設(shè)備100上本地完成搜索的能力。搜索高速緩存106的特定內(nèi)容可取決于與計(jì)算設(shè)備100對應(yīng)的存儲(chǔ)器約束以及搜索組件104 期望搜索的文檔語料庫的大小(例如文檔集中的文檔數(shù)量)?,F(xiàn)在將描述特定實(shí)施例,其中計(jì)算設(shè)備100是移動(dòng)計(jì)算設(shè)備,且期望搜索的文檔語料庫是跨用戶的多個(gè)計(jì)算設(shè)備分布的。例如,用戶可具有個(gè)人計(jì)算機(jī)、與工作有關(guān)的計(jì)算機(jī)、膝上型計(jì)算機(jī)和多個(gè)其他計(jì)算設(shè)備,并且文檔可跨這些計(jì)算設(shè)備分布。如以下將更詳細(xì)地描述的,協(xié)調(diào)器設(shè)備可創(chuàng)建全局索引,該全局索引使用這些文檔的身份和位置來對文檔的關(guān)鍵詞進(jìn)行索引。計(jì)算設(shè)備100可向協(xié)調(diào)器設(shè)備指示在計(jì)算設(shè)備100上對搜索高速緩存 106可用的存儲(chǔ)器中的空間量。協(xié)調(diào)器設(shè)備隨后可根據(jù)這樣的存儲(chǔ)器約束來生成搜索高速緩存106,并將搜索高速緩存106傳送給計(jì)算設(shè)備100,其中搜索高速緩存106可被保留在計(jì)算設(shè)備100的存儲(chǔ)器中。用戶隨后可使用計(jì)算設(shè)備100來在跨多個(gè)計(jì)算設(shè)備分布的文檔中執(zhí)行搜索,而無需將查詢傳送給協(xié)調(diào)器設(shè)備或傳送給用戶的其他計(jì)算設(shè)備。搜索的局部性可減少計(jì)算設(shè)備100的電池使用,并且可在計(jì)算設(shè)備100不通過網(wǎng)絡(luò)連接到協(xié)調(diào)器設(shè)備或用戶的其他計(jì)算設(shè)備的情況下執(zhí)行搜索的局部性。此外,由于可使用搜索高速緩存106 來相對快速地計(jì)算搜索,因此與常規(guī)系統(tǒng)相比,交互式搜索較不被禁止。例如,計(jì)算設(shè)備100可以是移動(dòng)電話,該移動(dòng)電話位于覆蓋范圍以外,但用戶可仍然希望確定可能或可能不駐留在計(jì)算設(shè)備100上的一個(gè)或多個(gè)文檔的位置。用戶可向計(jì)算設(shè)備100提供查詢,并且這一查詢可由接收器組件102來接收。搜索組件104最初搜索結(jié)果高速緩存110以尋找該查詢,并且如果該查詢被包括在結(jié)果高速緩存110中則可經(jīng)由顯示器108向用戶提供搜索結(jié)果。如果結(jié)果高速緩存110中未包括該查詢,則搜索組件104 可以搜索索引高速緩存112以尋找包括在該查詢中的關(guān)鍵詞。如果索引高速緩存112中包括該查詢中的關(guān)鍵詞,則搜索組件104可基于索引高速緩存112的內(nèi)容經(jīng)由顯示器108向用戶輸出搜索結(jié)果。如果索引高速緩存112中未包括該查詢中的關(guān)鍵詞,則搜索組件104 可訪問布爾高速緩存114。如果布爾高速緩存114的范圍中未包括該查詢的關(guān)鍵詞,則搜索組件104可發(fā)起網(wǎng)絡(luò)連接且該查詢可被傳送給協(xié)調(diào)器設(shè)備,使得可在用戶的文檔的全局索引中執(zhí)行搜索。如果一個(gè)或多個(gè)關(guān)鍵詞在布爾高速緩存114的范圍中,則搜索組件104可查明布爾高速緩存114是否包括該關(guān)鍵詞。如果布爾高速緩存114指示布爾高速緩存114 中不包括該查詢的關(guān)鍵詞,則搜索組件104可經(jīng)由顯示器108向用戶指示不存在與用戶所提交的查詢相對應(yīng)的文檔。如果布爾高速緩存114指示布爾高速緩存114中包括該查詢的至少一個(gè)關(guān)鍵詞,則搜索組件104可發(fā)起網(wǎng)絡(luò)連接且該查詢可被傳送給協(xié)調(diào)器設(shè)備或傳送給用戶的其他計(jì)算設(shè)備。同樣,這一體系結(jié)構(gòu)本質(zhì)上是示例性的,并且可以理解,可結(jié)合執(zhí)行web搜索來利用搜索高速緩存106。例如,計(jì)算設(shè)備100可與搜索引擎進(jìn)行通信。為減小搜索引擎的負(fù)載和/或?yàn)樵黾訄?zhí)行搜索的速度,搜索引擎可將搜索高速緩存106傳送給計(jì)算設(shè)備100。由此,如果用戶提供期望用于搜索web的內(nèi)容的查詢且結(jié)果高速緩存110中包括這一查詢,則計(jì)算設(shè)備100上的搜索組件104可向用戶返回搜索結(jié)果,而無需直接訪問搜索引擎。類似地,如果索引高速緩存112和搜索高速緩存106中包括一個(gè)或多個(gè)關(guān)鍵詞,則計(jì)算設(shè)備100 需要請求搜索引擎在一個(gè)或多個(gè)服務(wù)器上執(zhí)行搜索?,F(xiàn)在參考圖2,示出了便于生成搜索高速緩存106的示例性系統(tǒng)200。系統(tǒng)200包括屬于特定用戶或由特定用戶使用的多個(gè)計(jì)算設(shè)備202-204。如上所述,計(jì)算設(shè)備202-204 可包括臺式計(jì)算機(jī),膝上型計(jì)算機(jī),諸如多媒體播放器、移動(dòng)電話之類的移動(dòng)計(jì)算設(shè)備等。 另外,計(jì)算設(shè)備202-204之一可以是以上描述的計(jì)算設(shè)備100。系統(tǒng)200還包括協(xié)調(diào)器設(shè)備206。在一個(gè)示例中,協(xié)調(diào)器設(shè)備206可以是可通過合適的網(wǎng)絡(luò)連接對于計(jì)算設(shè)備202-204可訪問的云計(jì)算設(shè)備。在另一示例中,協(xié)調(diào)器設(shè)備 206可以是用戶擁有的或使用的計(jì)算設(shè)備,該用戶擁有或使用計(jì)算設(shè)備202-204。由此,例如,協(xié)調(diào)器設(shè)備206可以是臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)等。
計(jì)算設(shè)備202-204中的每一個(gè)都可具有保留在其上的用戶的文檔。計(jì)算設(shè)備 202-204可被配置成生成局部索引,這些局部索引對保留在相應(yīng)計(jì)算設(shè)備202-204上的文檔進(jìn)行索引。例如,計(jì)算設(shè)備202可生成索引,該索引使用保留在計(jì)算設(shè)備202上的文檔的身份和位置來對與這些文檔對應(yīng)的關(guān)鍵詞進(jìn)行索引,并且計(jì)算設(shè)備204可被配置成生成索引,該索引使用保留在計(jì)算設(shè)備204上的文檔的身份和位置來對與這些文檔對應(yīng)的關(guān)鍵詞進(jìn)行索引。計(jì)算設(shè)備202-204可被配置成將這些局部索引傳送給協(xié)調(diào)器設(shè)備206。協(xié)調(diào)器設(shè)備206可包括全局索引確定者組件208,該全局索引確定者組件從計(jì)算設(shè)備202-204接收局部索引、并為跨計(jì)算設(shè)備202-204(且還可能在協(xié)調(diào)器設(shè)備206上) 所保留的文檔生成全局索引。即,全局索引確定者組件208可生成索引,該索引使用跨計(jì)算設(shè)備202-206分布的文檔的身份和位置來對關(guān)鍵詞進(jìn)行索引。由此,駐留在協(xié)調(diào)器設(shè)備 206上且被配置成執(zhí)行對文檔的搜索的模塊可接收包括至少一個(gè)關(guān)鍵詞的查詢,并且可通過利用全局索引確定者組件208所生成的全局索引來標(biāo)識與這一關(guān)鍵詞對應(yīng)的跨計(jì)算設(shè)備202-204的文檔及其位置。協(xié)調(diào)器設(shè)備206還包括高速緩存優(yōu)化器組件210,該高速緩存優(yōu)化器組件對要傳送給計(jì)算設(shè)備202-204之中的計(jì)算設(shè)備100的搜索高速緩存106進(jìn)行基本優(yōu)化。例如,如以下將更詳細(xì)地描述的,高速緩存優(yōu)化器組件210可從計(jì)算設(shè)備100接收對搜索高速緩存 106的大小約束,之后可至少部分基于計(jì)算設(shè)備100所提供的大小約束來生成搜索高速緩存106。高速緩存優(yōu)化器組件210可通過分析全局索引確定者組件208所創(chuàng)建的全局索引、 用戶的搜索歷史、以及對應(yīng)于文檔的其他數(shù)據(jù)來生成這一高速緩存。所得的搜索高速緩存 106可由高速緩存優(yōu)化器組件210來配置,以便在給定對搜索高速緩存106的大小約束的情況下,基本上最大化用戶所期望執(zhí)行的搜索可在計(jì)算設(shè)備100處被本地完成的概率。具體地,高速緩存優(yōu)化器組件210可確定結(jié)果高速緩存110的大小和內(nèi)容、索引高速緩存112的大小和內(nèi)容、以及布爾高速緩存114的大小和內(nèi)容,使得在給定搜索高速緩存106的大小約束的情況下、在計(jì)算設(shè)備110上本地完成搜索的概率被基本上最大化。此外,協(xié)調(diào)器設(shè)備206可被配置成有時(shí)(例如,在已經(jīng)對用戶的文檔作出改變之后且在計(jì)算設(shè)備100與協(xié)調(diào)器設(shè)備206連接之后)將對搜索高速緩存106的更新傳送給計(jì)算設(shè)備100。如上所述,計(jì)算設(shè)備202-204可被配置成生成局部索引,這些局部索引使用其上的文檔身份和位置來對關(guān)鍵詞進(jìn)行索引。然而,計(jì)算設(shè)備202-204的內(nèi)容不保持靜態(tài)。艮口, 計(jì)算設(shè)備202-204的用戶可創(chuàng)建新文檔、刪除文檔、修改現(xiàn)有文檔等等。計(jì)算設(shè)備202-204 可被配置成更新其上的局部索引,并將這些更新傳送給協(xié)調(diào)器設(shè)備206。更新可以是對這些索引的改變(增量),而不是整個(gè)索引。全局索引確定者組件208可至少部分基于對計(jì)算設(shè)備202-204所提供的局部索引的改變來更新全局索引。高速緩存優(yōu)化器組件210可基于對全局索引的更改來執(zhí)行后續(xù)優(yōu)化,并且協(xié)調(diào)器設(shè)備206可將對搜索高速緩存106的更新傳送給計(jì)算設(shè)備100。同樣,協(xié)調(diào)器設(shè)備206不需要傳送整個(gè)新的搜索高速緩存,而是可傳送對計(jì)算設(shè)備100處的現(xiàn)有搜索高速緩存106的更新。現(xiàn)在參考圖3,示出了便于優(yōu)化搜索高速緩存106并且便于向計(jì)算設(shè)備100提供這一搜索高速緩存106的示例性系統(tǒng)300。系統(tǒng)300包括協(xié)調(diào)器設(shè)備206。協(xié)調(diào)器設(shè)備206 包括或可訪問數(shù)據(jù)存儲(chǔ)302,該數(shù)據(jù)存儲(chǔ)包括由全局索引確定者組件208生成的全局索引 304。系統(tǒng)300還包括計(jì)算設(shè)備100,該計(jì)算設(shè)備100通過諸如USB連接、網(wǎng)絡(luò)連接之類的合適的通信連接與協(xié)調(diào)器設(shè)備206進(jìn)行通信。計(jì)算設(shè)備100可能希望從協(xié)調(diào)器設(shè)備206接收搜索高速緩存,使得對多個(gè)不同計(jì)算設(shè)備中的文檔的搜索可在計(jì)算設(shè)備100處本地進(jìn)行, 其中這一計(jì)算設(shè)備100可具有與其相關(guān)聯(lián)的特定約束(例如,電池電量約束、存儲(chǔ)約束等)。
計(jì)算設(shè)備100可將期望的搜索高速緩存大小傳輸給協(xié)調(diào)器設(shè)備206。對搜索高速緩存大小的傳送可在計(jì)算設(shè)備100通過合適的通信鏈接與協(xié)調(diào)器設(shè)備206進(jìn)行通信之后由計(jì)算設(shè)備100或協(xié)調(diào)器設(shè)備206來發(fā)起。例如,計(jì)算設(shè)備200可被配置成具有以下功能允許計(jì)算設(shè)備100確定期望用于搜索高速緩存106的特定量的存儲(chǔ)器(例如閃存)。
協(xié)調(diào)器設(shè)備206包括高速緩存優(yōu)化器組件210,該高速緩存優(yōu)化器組件210可在給定大小約束的情況下為計(jì)算設(shè)備100優(yōu)化搜索高速緩存106。為執(zhí)行這一優(yōu)化,高速緩存優(yōu)化器組件210可訪問數(shù)據(jù)存儲(chǔ)302以查看全局索引304、用戶的搜索歷史、以及可與針對跨計(jì)算設(shè)備的用戶文檔的搜索有關(guān)的任何其他數(shù)據(jù)。高速緩存優(yōu)化器組件210包括確定結(jié)果高速緩存110的大小的高速緩存大小確定者組件306,索引高速緩存112,以及期望傳送給計(jì)算設(shè)備100的結(jié)果高速緩存114。根據(jù)一示例,計(jì)算設(shè)備100可指示為搜索高速緩存106分配IGB的存儲(chǔ)器空間。高速緩存大小確定者組件306可確定結(jié)果高速緩存110的大小b、索引高速緩存112的大小a,并且由此布爾高速緩存114的大小為lGB-a-b。這些大小可例如基于對全局索引304和用戶的搜索歷史以及其他數(shù)據(jù)的分析探查來確定。高速緩存優(yōu)化器組件210還包括結(jié)果高速緩存確定者組件308,該結(jié)果高速緩存確定者組件308被配置成在給定高速緩存大小確定者組件306所輸出的結(jié)果高速緩存110 的大小的約束下,確定結(jié)果高速緩存110的內(nèi)容。結(jié)果高速緩存確定者組件308可通過分析用戶所提供的歷史查詢來確定結(jié)果高速緩存110的內(nèi)容。例如,如果用戶頻繁地發(fā)出特定查詢,則只要考慮到結(jié)果高速緩存110的大小約束,結(jié)果高速緩存確定者組件308就可使得這一查詢和與其對應(yīng)的搜索結(jié)果被放置在結(jié)果高速緩存中。高速緩存優(yōu)化器組件210可附加地包括索引高速緩存確定者組件310,該索引高速緩存確定者組件310在給定對索引高速緩存112的大小約束下可確定該索引高速緩存的內(nèi)容。同樣,索引高速緩存確定者組件310可通過分析全局索引304、對于全局索引304的命中率、與文檔對應(yīng)的關(guān)鍵詞、用戶的先前搜索等來確定索引高速緩存112的內(nèi)容。此外, 在修剪全局索引304以生成索引高速緩存112時(shí),索引高速緩存確定者組件310可使用任何合適的技術(shù)。例如,索引高速緩存確定者組件310可利用已知技術(shù)來確保前k個(gè)搜索結(jié)果將與索引高速緩存112中所表示的關(guān)鍵詞相對應(yīng)。高速緩存優(yōu)化器組件210還可包括布爾高速緩存確定者組件312,該布爾高速緩存確定者組件312可至少部分基于對全局索引304、該用戶或其他用戶所提供的先前查詢等的分析性分析來確定布爾高速緩存的內(nèi)容。另外,布爾高速緩存確定者組件312可確定布爾高速緩存114的內(nèi)容,同時(shí)考慮由高速緩存大小確定者組件306所輸出的對布爾高速緩存114的大小約束。在某些情形中,高速緩存大小確定者組件306可輸出約束,使得全局索引304中的所有關(guān)鍵詞不能被包括在布爾高速緩存114中。布爾高速緩存確定者組件 312可分析由用戶進(jìn)行的先前搜索中的關(guān)鍵詞,并且可選擇要包括在布爾高速緩存114中的特定范圍的關(guān)鍵詞,以便考慮高速緩存大小確定者組件306所輸出的大小約束。例如,高速緩存大小確定者組件306可輸出對布爾高速緩存的大小為250MB的限制。布爾高速緩存確定者組件312可查明布爾高速緩存114中僅可包括特定范圍的關(guān)鍵詞以便考慮這一大小約束。因此,例如,布爾高速緩存確定者組件312可選擇將某一范圍的關(guān)鍵詞包括在布爾高速緩存114中(例如,以字母“D”開始的關(guān)鍵詞至以字母“M”開始的關(guān)鍵詞)。如上所述, 這一范圍可被選擇以便基本最大化移動(dòng)設(shè)備的用戶所請求的搜索可在計(jì)算設(shè)備100處被本地完成的概率??梢岳斫?,以上所描述的是用于確定搜索高速緩存的大小和內(nèi)容的部分的示例性機(jī)制,并且發(fā)明人構(gòu)想了用于基于用戶歷史和/或文檔內(nèi)容來確定這些大小和內(nèi)容的任何合適的方式,并且這些方式旨在落入本文所附的權(quán)利要求書的范圍之內(nèi)。
盡管已將高速緩存優(yōu)化器組件110描述為生成搜索高速緩存106來基本上最大化在計(jì)算設(shè)備100處進(jìn)行的對文檔的搜索可被本地完成的概率,但是可由高速緩存優(yōu)化器組件進(jìn)行的另一優(yōu)化是基本上最小化關(guān)于執(zhí)行搜索的成本。以下提供的是在確定搜索高速緩存106中高速緩存的大小時(shí)可由高速緩存優(yōu)化器組件210進(jìn)行基本最小化的成本函數(shù)的示例性公式。在以下提供的示例公式中,搜索高速緩存106僅包括索引高速緩存112和布爾高速緩存114。在這一公式中,1表示在索引高速緩存310中對查詢的命中率。1的等式可被寫成如下
權(quán)利要求
1.一種方法,包括在計(jì)算設(shè)備處接收來自用戶的查詢;以及至少部分基于所接收的查詢來執(zhí)行對一個(gè)或多個(gè)文檔的搜索,其中執(zhí)行所述搜索包括使得處理器通過利用保留在所述計(jì)算設(shè)備上的搜索高速緩存來執(zhí)行所述搜索,其中所述搜索高速緩存包括結(jié)果高速緩存、索引高速緩存和布爾高速緩存。
2.如權(quán)利要求1所述的方法,其特征在于,其中所述布爾高速緩存是布隆過濾器,所述計(jì)算設(shè)備是移動(dòng)計(jì)算設(shè)備。
3.如權(quán)利要求1所述的方法,其特征在于,所述搜索是對跨所述用戶的多個(gè)不同計(jì)算設(shè)備分布的文檔來執(zhí)行的。
4.如權(quán)利要求3所述的方法,其特征在于,所述結(jié)果高速緩存包括先前提交的查詢以及對所述先前提交的查詢的搜索結(jié)果,并且所述索引高速緩存使用跨所述用戶的多個(gè)不同計(jì)算設(shè)備分布的文檔的身份和位置來對關(guān)鍵詞進(jìn)行索引。
5.如權(quán)利要求1或4所述的方法,其特征在于,所述查詢包括至少一個(gè)關(guān)鍵詞,所述布爾高速緩存是數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)指示所述至少一個(gè)關(guān)鍵詞是否被包括在與跨所述用戶的多個(gè)不同計(jì)算設(shè)備分布的文檔相對應(yīng)的元素集中。
6.如權(quán)利要求5所述的方法,其特征在于,所述查詢包括至少一個(gè)關(guān)鍵詞,以及執(zhí)行所述搜索包括將所述查詢與所述結(jié)果高速緩存中的各查詢作比較;如果所述查詢駐留在所述結(jié)果高速緩存中,則輸出與所述結(jié)果高速緩存中的所述查詢相對應(yīng)的至少一個(gè)文檔的身份和位置;如果所述查詢不駐留在所述結(jié)果高速緩存中,則將所述索引高速緩存中的關(guān)鍵詞與所述查詢中的至少一個(gè)關(guān)鍵詞作比較;如果所述至少一個(gè)關(guān)鍵詞駐留在所述索引高速緩存中,則輸出與所述索引高速緩存中的關(guān)鍵詞相對應(yīng)的至少一個(gè)文檔的身份和位置;如果所述至少一個(gè)關(guān)鍵詞不駐留在所述索引高速緩存中,則確定所述關(guān)鍵詞是否在對應(yīng)于所述布爾高速緩存的范圍中;如果所述至少一個(gè)關(guān)鍵詞不在對應(yīng)于所述布爾高速緩存的范圍中,則將所述查詢傳送給協(xié)調(diào)器計(jì)算設(shè)備;如果所述至少一個(gè)關(guān)鍵詞在對應(yīng)于所述布爾高速緩存的范圍中,則搜索所述布爾高速緩存以尋找所述至少一個(gè)關(guān)鍵詞;如果所述至少一個(gè)關(guān)鍵詞被包括在所述布爾高速緩存中,則將所述查詢傳送給協(xié)調(diào)器計(jì)算設(shè)備;以及如果所述至少一個(gè)關(guān)鍵詞沒有被包括在所述布爾高速緩存中,則向所述用戶返回空結(jié)果集。
7.一種系統(tǒng),包括能夠由處理器來執(zhí)行的多個(gè)組件,所述組件包括接收來自用戶的查詢的接收器組件(102);以及通過利用搜索高速緩存至少部分基于所述查詢來執(zhí)行對文檔的搜索的搜索組件 (106),其中所述搜索高速緩存包括結(jié)果高速緩存、索引高速緩存和布爾高速緩存,并且所述搜索組件至少部分基于所述搜索來向所述用戶返回搜索結(jié)果集。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述布爾高速緩存是布隆過濾器。
9.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述搜索高速緩存包括數(shù)據(jù),所數(shù)據(jù)指示文檔是可通過萬維網(wǎng)獲得。
10.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述搜索高速緩存包括數(shù)據(jù),所述數(shù)據(jù)指示跨所述用戶的多個(gè)計(jì)算設(shè)備分布的用戶的文檔的身份和位置。
全文摘要
本發(fā)明涉及用于文檔搜索的搜索高速緩存。此處描述了包括在計(jì)算設(shè)備處接收來自用戶的查詢的方法。該方法還包括至少部分基于所接收的查詢來執(zhí)行對一個(gè)或多個(gè)文檔的搜索,其中執(zhí)行所述搜索包括使得處理器通過利用保留在所述計(jì)算設(shè)備上的搜索高速緩存來執(zhí)行所述搜索,其中所述搜索高速緩存包括結(jié)果高速緩存、索引高速緩存、布爾高速緩存。
文檔編號G06F17/30GK102419768SQ201110345038
公開日2012年4月18日 申請日期2011年10月28日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者P·K·阿蒂瓦拉普, S·K·納特 申請人:微軟公司