使用搜索引擎來最大化在大量數據中定位相關信息的可能性。為了在制定查詢的過程中幫助用戶,大多數搜索引擎包括查詢建議功能。更具體地,在發起查詢的執行之前,一個或多個查詢基于指定的查詢被建議。通常,查詢建議在在查詢被輸入時被確定并且在搜索框中被提供以自動完成查詢。當前的查詢建議系統向用戶呈現預定數目的查詢制定,并且強迫用戶決定哪一個(如果有的話)最佳匹配它們的搜索意圖。選擇查詢建議之一導致查詢的評估和對應于選擇的查詢制定的搜索結果的呈現,就像用戶手動鍵入該查詢到搜索框中一樣。
技術實現要素:
下面提出簡化的概述,以便提供對所公開的主題的一些方面的基本理解。該概述不是廣泛的概括。其不旨在標識重要/關鍵元素或者描述所要求保護的主題的范圍。其唯一目的是以簡化的形式提出一些構思,作為稍后提出的更詳細描述的前序。
簡要地說,本公開涉及針對搜索建議的安全性修剪。在發起查詢的執行之前,響應于搜索引擎用戶的查詢,一個或多個建議可以被生成并且被返回。此外,建議可以被修剪或者限制為一個或多個數據庫上的數據,該查詢被指定在該數據庫上并且用戶被授權訪問該數據庫。此外,可以使用對用戶可訪問的數據動態地生成查詢建議。
為了實現前述和相關目的,本文中結合以下描述和附圖來描述所要求保護的主題的某些說明性方面。這些方面指示可以實踐主題的各種方式,所有方式旨在落入所要求保護的主題的范圍內。當結合附圖考慮時,從下面的詳細描述中,其他優點和新穎特征將變得顯而易見。
附圖說明
圖1是搜索建議系統的框圖。
圖2是代表性處理組件的框圖。
圖3是代表性訪問組件的框圖。
圖4是代表性建議組件的框圖。
圖5是查詢建議的方法的流程圖。
圖6是生成查詢建議的方法的流程圖。
圖7是生成相關查詢的方法的流程圖。
圖8是示出針對本公開的多個方面的適當操作環境的示意性框圖。
具體實施方式
后端數據庫上的安全性能夠防止對數據庫的未授權訪問。例如,如果用戶嘗試通過查詢執行來訪問數據庫中的數據,則在用戶未被授權訪問數據庫或者數據庫中的特定數據的情況下,沒有結果將被返回。然而,可能的是用戶在查詢制定期間通過查詢建議可以有效地提取數據,或者以其他方式知道數據(用戶缺少對于該數據的訪問權限)的存在。作為示例,假設員工未被授權具有對存儲在數據庫上的公司的客戶訪問。員工可以寫查詢,例如“向……售出的產品的總數是多少”并暫停。建議可以被生成以完成暴露客戶的至少一個子集的查詢,由此避開后端數據庫安全性。
下面的細節總地涉及搜索建議的安全性修剪。為了支持查詢制定,在發起查詢的執行之前,響應于由搜索引擎的用戶指定的搜索查詢,一個或多個建議可以被生成并且被提供。此外,建議可以被修剪或者限制為用戶被授權訪問的數據以保留安全性。與基于用戶訪問權限過濾多個靜態查詢建議相對,還可以使用對用戶可訪問的數據來動態地生成查詢建議。更具體地,在接收到來自用戶的查詢時,可以基于與用戶和數據相關聯的訪問信息來關于什么數據對用戶可訪問來進行確定。隨后,可以基于對用戶可訪問的數據來動態地生成一個或多個查詢建議。
本公開的各種方面現在更詳細地參考附圖進行描述,其中貫穿全文相同標記通常指代相同或者對應元素。然而,應當理解,附圖和與其相關的詳細描述不旨在將所要求保護的主題限制為所公開的特定形式。相反,意圖是覆蓋落入所要求保護的主題的精神和范圍內的所有修改、等同物和替代物。
首先參考圖1,示出搜索建議系統100。搜索建議系統100與一個或多個數據庫140對接,并且包括查詢界面組件110、處理組件120、訪問組件130和建議組件150。查詢界面組件110被配置為從搜索引擎的用戶接收查詢,例如通過文本框和返回建議。根據一個實施例,查詢界面組件110可以是被配置為接受一個或多個關鍵字的關鍵字查詢界面。根據另一實施例,查詢界面組件110可以是被配置為接受與關鍵字相對的用戶問題的自然語言界面。作為示例,自然語言搜索可以是“什么狀態具有最低收入稅”,而相同搜索可以使用諸如“收入稅狀態最低”的關鍵字被指定。為了清楚和簡要,繼續的描述關注于自然語言查詢。然而,所要求保護的主題不限于此。
處理組件120接收、檢索、或者以其他方式獲得或者獲取來自查詢界面組件110的查詢,并且處理查詢以確定其含義以及針對建議的機會。將注意力簡要地轉到圖2,代表性處理組件120被更詳細地描述。處理組件120包括解析器組件210、分析組件220和參數標識組件230。解析器組件210被配置為編解析查詢串,標識詞語,并且生成查詢的表示(例如,解析樹、分層結構……),以用于根據已知的或者新穎的解析器技術的進一步處理。
分析組件220被配置為進一步處理由解析器組件210產生的查詢的表示以確定查詢的含義。根據一個方面,分析組件可以采用模板來確定含義。多個模板可以被采用,其中模板包括表示一種類別的自然語言問題或者查詢的詞語或者特殊符號的串。分析組件220可以嘗試將查詢匹配到一個或多個預定模板,例如,其中查詢的值與由模板捕獲的值相同或者相似。備選地,可以采用各種人工智能和/或統計分析來確定查詢的含義。
參數標識組件230被配置為標識查詢的未指定的一個或多個參數,并且提供針對建議的機會。例如,如果采用基于模板的分析,則可以在查詢的參數和匹配模板的參數之間進行比較,以確定未指定的一個或多個參數,或者換句話說,模板槽或者間隙。此外,可以考慮通過一個或多個數據庫通過參照與數據庫相關聯的例如標識數據庫的底層結構的元數據而可用的數據。作為示例,考慮查詢或者部分查詢“誰為……贏得了獎牌”。基于一個或多個匹配模板的分析,可以確定在詞語“為”之后存在未指定的參數、槽或者間隙,并且基于參數本身和可用數據,該參數可以是運動、國家或者洲。如果數據庫不包括針對運動的數據,則參數可以與國家和洲相關聯。
返回圖1,訪問組件130被配置為實現關于存儲在一個或多個數據庫140中的數據的訪問控制。諸如安全性上下文的訪問信息可以關于數據以及用戶被使用,并且被采用以實現訪問控制。簡要地轉向圖3,更詳細地示出代表性訪問組件130。用戶訪問組件310被配置為獲取關于搜索引擎用戶的訪問信息。這樣的訪問信息可以從訪問控制數據庫或者類似存儲庫被檢索,并且包括安全性憑證或者權限。例如,可以要求用戶登錄和被認證。隨后,可以使用用戶的身份來查找訪問信息,或者換句話說,用戶的安全性上下文。數據訪問組件320被配置為獲取關于數據的訪問信息。例如,數據庫可以包括關于有關在各種等級的粒度(例如按照文件、行、列、或者單獨的數據)處的數據的權限的規則。數據訪問組件320被配置為從一個或多個數據源獲取這樣的訪問信息。比較組件330被配置為相對于關于數據指定的權限來比較用戶的權限,并且標識用戶被授權訪問的數據。
圖1的建議組件150被配置為接收或者檢索關于如由訪問組件130確定的用戶被允許訪問的數據的信息,并且基于輸入查詢和用戶被允許訪問的數據動態地生成查詢建議。隨后,這些查詢建議可以通過查詢界面組件110被提供到用戶。與生成查詢建議相關聯的動態性和與改變的輸入查詢相關聯的動態性不同。更具體地,基于給定的輸入查詢動態地生成建議。如果輸入查詢改變,例如當用戶繼續鍵入時,則因為查詢不同,建議也可以改變。這些建議可以被動態地生成,而不是從先前儲存的靜態建議查找以滿足不同查詢。
參考圖4,進一步詳細示出代表性建議組件150。如所示,建議組件150包括被配置為生成與輸入查詢相關的查詢的集合的查詢生成器組件410。例如,查詢的集合可以包括完成輸入查詢、片段或者部分查詢的查詢。此外,查詢生成器組件410被配置為基于輸入查詢和用戶被允許訪問的數據生成查詢的集合。此外,查詢的集合可以被動態地生成。例如,匹配輸入查詢的一個或多個模板可以被用于生成相關查詢。模板的未指定的參數可以被分配用戶被授權訪問的數據。換句話說,由輸入查詢在模板中留下的槽或者間隙可以使用對用戶可訪問的數據來填充。
再考慮其中用戶輸入查詢或者問題“誰為……贏得了獎牌”的示例。基于該查詢和來自底層數據庫的元數據,可以生成填充詞語“為”之后的槽的查詢。槽將不被填充不在底層數據庫中的信息。例如,即使對于在數據庫中的數據,也可以對數據進行篩選,以確保其基于一個或多個模板有意義。這里,可以確定運動、國家和洲是適當的。因此,存在三個模板:一個針對體育,一個針對國家,并且一個針對洲。現在,查詢生成器組件410至少可以發起與數據庫的交互以從數據庫檢索針對運動、國家和洲的數據以填充模板中的這三個槽,并且根據三個模板建立相關查詢的集合。此外,模板僅使用用戶被允許訪問的數據被填充。因此,如果用戶不具有對體育的訪問,則該模板將不被用于創建相關查詢。此外,如果用戶不被允許訪問北美的國家,則查詢將僅使用諸如德國和西班牙的北美以外的國家來創建。換句話說,基于用戶被允許訪問的數據的部分生成相關查詢。
建議組件150還包括選擇組件420。選擇組件420被配置為選擇或者標識呈現為建議或者建議的查詢的相關查詢的至少一個子集。在一個實例中,選擇組件420可以被配置為選擇N個查詢,其中“N”是正整數,或者換句話說刪減相關查詢的集合。例如,選擇組件420可以標識可能的相關查詢中的僅五個查詢以供建議。此外,選擇可以被配置為標識最高數目的查詢,其中最高查詢比其他查詢更可能被選擇。因此,任何數目的因素可以被考慮,除其他事物外,包括使用頻率和用戶上下文信息。例如,在基于數據的使用頻率向數據分配得分的元數據可用的情況下,那些得分可以用作選擇相關查詢的子集的基礎。關于獎牌查詢,冰壺運動比花樣滑冰更不受歡迎。因此,與這兩個運動相關聯的使用頻率得分可以反映該事實,并且被用于相對于冰壺選擇花樣滑冰運動。此外,包括偏好和搜索歷史的用戶上下文信息可以被用于使得能夠選擇為特定用戶定制的查詢。此外,選擇組件420可以實現多樣性策略,其中使用建議實現可配置量的多樣性。例如,三個建議可以涉及體育并且三個建議可以關于國家,而不是選擇建議體育的六個查詢。
排序組件430也由建議組件150提供。排序組件430被配置為標識搜索建議的順序,或者換句話說對搜索建議劃分優先級。因此,排序組件430可以從選擇組件接收相關查詢的子集,并且基于由用戶選擇的可能性對查詢進行排序。為了做出這樣的確定,排序組件430可以基于用戶的頻率或者用戶上下文(諸如搜索偏好和歷史)來計算得分。在由選擇組件420關于選擇多個查詢來計算這些得分的情況下,該信息可以被重新用于排序。備選地,排序組件430可以計算這樣的得分。基于獲取或者計算的得分,排序組件430可以將搜索查詢從最可能由用戶選擇到最不可能由用戶選擇地進行排序,反之亦然。
此外,應當理解,與基于用戶的頻率和用戶上下文的諸如刪減的選擇相關聯的功能的至少一部分可以結合相關查詢生成來執行,以將查詢生成集中到相關查詢,并且減少動態地生成的查詢的總數。例如,如果數據庫記錄與數據相關聯的使用頻率信息以及訪問信息,則可以設置閾值,該閾值排除不經常使用(例如,低于閾值)的數據在相關查詢生成中被采用。
已經關于若干組件之間的交互描述了上述系統、架構、環境等。應當理解,這樣的系統和組件可以包括其中指定的那些組件或者子組件、指定的組件或者子組件中的一些和/或另外的組件。子組件還可以被實現為通信地耦合到其他組件,而不是被包括在父組件內。此外,一個或多個組件和/或子組件可以被組合為單個組件以提供聚合功能。系統、組件和/或子組件之間的通信可以根據推送和/或拉取模型來實現。為簡要起見,組件還可以與本文中未具體描述但是本領域技術人員已知的一個或多個其它組件交互。
此外,以上公開的系統和以下方法的各種部分可以包括或者采用人工智能、機器學習或者基于知識或者規則的組件、子組件,過程,裝置,方法或者機制(例如,支持向量機、神經網絡、專家系統、貝葉斯信念網絡、模糊邏輯、數據融合引擎、分類器……)。這樣的組件尤其可以使由其執行的某些機制或者過程自動化,以使系統和方法的多個部分更自適應以及高效和智能。作為示例而非限制,分析器組件220可以采用這樣的機制,以確定查詢或者問題的含義。
鑒于上述示例性系統,可以根據所公開的主題來實現的方法將與參考圖5-7的流程圖被更好地理解。雖然為了簡化說明的目的,將方法示出和描述為一系列框,但是應當理解和明白,所要求保護的主題不限于框的順序,因為根據本文中所描繪和描述的內容,一些框可以以不同的順序發生和/或與其它框同時發生。此外,并非所有示出的框都被要求實現在下文中描述的方法。
參考圖5,示出查詢建議的方法500。在標記510,從搜索引擎用戶接收、檢索或者以其它方式獲得或者獲取查詢。在發起查詢的執行或者評估之前,可以通過查詢界面從用戶接收包括查詢片段或者部分查詢的查詢。例如,用戶可以通過鍵入或者語音輸入在搜索框中指定查詢。根據一個方面,查詢可以是自然語言查詢。然而,也可以為關鍵字搜索提供支持。在標記520,基于與用戶和數據相關聯的訪問信息來確定對用戶可訪問的數據。訪問信息可以與用戶身份相關聯。在驗證用戶的身份時,身份可以被用于查找定義用戶權限、特權、或者關于訪問數據的安全性等級的值或者值的集合。數據本身也可以包括定義需要什么權限或者安全性等級來訪問包括特定文檔或者其部分(例如,數據元素、行、列、組……)的值或者值的集合。在附圖標記530,基于對用戶可訪問的數據來動態地生成一個或多個查詢建議。在一個實例中,查詢建議可以推薦可以如何完成查詢。在附圖標記540,一個或多個查詢建議可以通過查詢界面被返回到用戶。例如,一個或多個建議可以以在搜索框下面的下拉菜單樣式被呈現。在選擇查詢建議時,可以發起執行或者評估查詢的搜索。在查詢改變時,例如在繼續的用戶指定時,該方法可以在510重新開始。根據一個方面,可以要求預定的暫停以觸發建議,以不執行關于建議的動態生成的連續的或者不必要的計算。
作為示例,考慮通過查詢界面文本框指定的自然語言查詢“誰為……贏得了獎牌”。此外,假設基于用戶和數據的安全性級別,用戶不具有對針對北美的國家的獎牌的訪問。查詢建議的方法500可以產生并且返回包括北美以外的國家和洲的查詢建議,諸如“誰為歐洲贏得了獎牌”,“誰為非洲贏得了獎牌”,“誰為吉爾吉斯斯坦贏得了獎牌”和“誰為阿爾巴尼亞贏得了獎牌”。
圖6是描繪生成查詢建議的方法600的流程圖。在附圖標記610,基于可訪問的數據生成相關查詢的集合。更具體地,使用基于用戶的訪問權限和數據的所要求的權限對用戶可訪問的數據創建與用戶輸入查詢相關的查詢。在示例查詢“誰為……贏得了獎牌”中,相關查詢可以包括查詢,具體地包括包含國家和洲(這樣的數據存在于數據庫中)的查詢。相關查詢的另一集合可以是運動,但是假設數據庫不具有關于運動的數據,則這樣的相關查詢將被排除。此外,考慮對數據庫數據的用戶訪問。假設用戶僅具有訪問北美以外的國家和洲的權限,則相關查詢的集合被進一步修剪。在附圖標記620,相關查詢的集合的至少一個子集被選擇為建議的查詢或者查詢建議。在一個實例中,選擇被用于將相關查詢的集合刪減為預定數目的查詢以供建議。這樣的刪減操作可以采用其他信息和因素,除其他事物外,包括使用頻率,用戶上下文(例如,搜索偏好、搜索歷史……)和多樣性。此外,作為選擇或者另一動作的一部分,選擇的搜索建議可以通過給出查詢的用戶選擇的可能性和其他信息被排序或劃分優先級。例如,可以采用關于刪減計算或者獲得的值,諸如使用頻率。可以生成或者計算不關于刪減使用而是用于排序的另外的值。例如,可以使用用戶上下文來以為用戶定制的方式來對查詢進行排序。
圖7示出生成相關查詢的方法700。在附圖標記710,標識與輸入查詢匹配的模板。可以通過將輸入查詢與預定的模板的集合進行匹配來標識模板。模板是表示一種類別的查詢的詞語或者特殊符號的串。模板可以包括一個或多個參數和值。在標記720,檢測不具有由輸入查詢指定的值的模板參數。換句話說,標識未指定的模板參數、間隙或者槽。在“誰為……贏得了獎牌”的示例中,未指定的參數可以在詞語“為”之后被檢測到。在標記730,從在其上指定輸入查詢的數據庫獲取對特定用戶可訪問的數據。在附圖標記740,通過使用獲取的數據來設置或者分配未指定的參數的值來構造一個或多個查詢。例如,值“歐洲”、“非洲”和“阿爾巴尼亞”可以從數據庫被獲取,并且被用于構造以下相關查詢:“誰為歐洲贏得了獎牌”,“誰為非洲贏得了獎牌”和“誰為阿爾巴尼亞贏得了獎牌”。
常規地,搜索引擎已經提供了自動完成功能。然而,建議是基于人們在過去已經輸入的內容。根據一個方面,其他用戶是否在過去已經輸入查詢并非與查詢建議特別相關。相關的是關于一個或多個底層數據庫知道什么。換句話說,主題搜索建議不涉及對任意數據源而是對特定數據源的搜索。還相關的是關于訪問數據的用戶權限或者特權。
此外,查詢不需要被保存到永久存儲裝置,并且隨后基于用戶權限被檢索和過濾。相反,查詢建議可以基于對特定用戶可訪問的數據被動態地生成。這至少對于資源使用(即存儲)是有利的。即使對于小的數據庫,潛在地可以提交無限數目的查詢。如果所有查詢都可以被保存,則它們將占用大量的存儲空間。通過動態地生成查詢建議,可以避免該問題。
本公開支持各種產品和過程,該產品和過程執行或者被配置為執行關于搜索建議的安全性修剪的各種動作。之后是示例性方法、系統和計算機可讀存儲介質。
一種方法包括采用至少一個處理器,至少一個處理器被配置為執行存儲在存儲器中的計算機可執行指令以執行以下動作:在發起查詢的執行之前,接收由搜索引擎的用戶指定的查詢,基于與用戶和對用戶可訪問的數據相關聯的訪問信息來確定數據,以及基于對用戶可訪問的數據動態地生成一個或多個查詢建議。生成一個或多個查詢建議包括:基于對用戶可訪問的數據生成相關查詢的集合,以及選擇相關查詢的集合的至少一個子集。還可以基于使用頻率來執行選擇相關查詢的集合的至少一個子集。生成相關查詢的集合包括標識與由用戶指定的查詢匹配的模板,檢測至少一個未指定的模板參數,以及通過使用對用戶可訪問的數據設置針對至少一個未指定的模板參數的值來構造一個或多個查詢。該方法還包括接收自然語言查詢,基于用戶上下文對一個或多個查詢建議進行排序,并且在顯示設備上呈現一個或多個查詢建議。
一種系統包括被耦合到存儲器的處理器,處理器被配置為執行存儲在存儲器中的以下計算機可執行組件:第一組件,其被配置為在向搜索引擎提交查詢以供執行之前,從搜索引擎的用戶接收查詢;第二組件,其被配置為基于與用戶和對用戶可訪問的數據相關聯的可訪問性信息來獲取數據;以及第三組件,其被配置為基于查詢和由用戶可訪問的數據動態地生成一個或多個查詢建議。在一個實例中,查詢是自然語言問題。系統還可以包括第四組件,其被配置為確定查詢的含義,其在一個實例中被配置為將查詢與預定模板匹配。系統還包括第五組件,其被配置為相對于模板標識由查詢未指定的參數。系統還包括第六組件,其被配置為通過使用對用戶可訪問的數據設置未指定的參數的值來生成相關查詢的集合。第七組件被配置為選擇相關查詢的集合的子集作為一個或多個查詢建議。系統還包括第八組件,其被配置為基于上下文信息將相關查詢的集合的子集進行排序,其中在一個實例中,第八組件被配置為基于使用對用戶可訪問的數據設置的參數的值的使用頻率對相關查詢的集合的子集進行排序。
一種具有存儲在其上的指令的計算機可讀存儲介質,指令使得至少一個處理器能夠在執行指令時執行方法,該方法包括在發起查詢的執行之前,接收由搜索引擎的用戶指定的查詢,基于與用戶和對用戶可訪問的數據相關聯的訪問信息來確定數據,以及基于對用戶可訪問的數據動態地生成一個或多個查詢建議。該方法還包括接收自然語言查詢。此外,該方法包括標識與由用戶指定的查詢匹配的模板,檢測至少一個由用戶未指定的模板參數,以及通過使用對用戶可訪問的數據分配針對至少一個未指定的模板參數的值來構造一個或多個查詢。此外,該方法包括選擇一個或多個查詢的至少一個子集作為一個或多個查詢建議。
詞語“示例性”或者其各種形式在本文中被用于意指用作示例、實例或者說明。本文中描述為“示例性”的任何方面或者設計不一定被解釋為比其它方面或者設計優選或者有利。此外,示例僅出于清楚和理解的目的被提供,并且不意味著以任何方式限制或者約束所要求保護的主題或者本公開的相關部分。應當理解,不同范圍的大量另外的或者備選的示例可以被呈現,但是出于簡要的目的已經被省略。
如在本文中使用的,術語“組件”和“系統”以及其各種形式(例如,組件、系統、子系統……)旨在指代計算機相關的實體、或者是硬件、硬件和軟件的組合、軟件或者執行中的軟件。例如,組件可以但不限于是在處理器上運行的進程、處理器、對象、實例、可執行文件、執行線程、程序和/或計算機。通過說明的方式,在計算機上運行的應用和計算機都可以是組件。一個或多個組件可以駐留在執行進程和/或線程內,并且組件可以位于一個計算機上和/或分布在兩個或更多個計算機之間。
如在本描述和所附權利要求書中使用的,連詞“或者”旨在意指包含性“或者”而不是排他性“或者”,除非另有指定或者從上下文是清楚的。換句話說,“X”或者“Y”旨在意指任何包含性排列的“X”和“Y”。例如,如果“‘A’采用‘X’”、“‘A’采用‘Y’”或者“‘A’采用‘X’和‘Y’兩者”,則“‘A’采用‘X’或者‘Y’”在任何前述實例之下是滿足的。
此外,就術語“包含”、“含有”、“具有”、“有”或者其形式上的變體都在詳細描述或者權利要求中使用的范圍內,這樣的術語旨在是以類似于術語“包括”的方式為包含性的,就像“包括”在權利要求中被用作過渡詞時被解釋的。
為了提供針對要求保護的主題的上下文,圖8以及以下討論旨在提供對其中主題的各種方面可以被實現的適當環境的簡要、總體描述。然而,適當環境僅是示例,并且不旨在暗示關于用途或者功能的范圍的任何限制。
雖然以上公開的系統和方法可以在一個或多個計算機上運行的程序的計算機可執行指令的總體上下文中進行描述,本領域技術人員將認識到多個方面也可以結合其它程序模塊等來實現。通常,除其他事物外,程序模塊包括執行特定任務和/或實現特定抽象數據類型的例程、程序、組件、數據結構。此外,本領域技術人員將理解的是,以上系統和方法可以使用各種計算機系統配置被實現,該計算機系統配置包括單處理器、多處理器或者多核處理器計算機系統、小型計算設備、大型計算機以及個人計算機、手持式計算設備(例如,個人數字助理(PDA)、電話、手表……)、基于微處理器的或者可編程的消費或者工業電子設備等。多個方面也可以在其中由通過通信網絡鏈接的遠程處理設備執行任務的分布式計算環境中實踐。然而,所要求保護的主題的一些方面(如果不是全部方面)可以在獨立計算機上實踐。在分布式計算環境中,程序模塊可以位于本地和遠程存儲器存儲設備中的一個或者兩者中。
參考圖8,示出了示例通用計算機或者計算設備802(例如,臺式計算機、筆記本計算機、平板計算機、服務器、手持式設備、可編程消費或者工業電子設備、機頂盒、游戲系統、計算節點……)。計算機802包括一個或多個處理器820、存儲器830、系統總線840、大容量存儲裝置850和一個或多個接口組件870。系統總線840至少通信地耦合以上系統組件。然而,要理解,計算機802以其最簡單的形式可以包括耦合到存儲器830的一個或多個處理器820,處理器820執行存儲在存儲器830中的各種計算機可執行動作、指令和/或組件。
(多個)處理器820可以使用被設計為執行本文中描述的功能的通用處理器、數字信號處理器(DSP)、專用集成電路(ASIC)、現場可編程門陣列(FPGA)或者其它可編程邏輯設備、分立的門或者晶體管邏輯、分立的硬件組件或者其任意組合來實現。通用處理器可以是微處理器,但在備選方案中,處理器可以是任何處理器、控制器、微控制器或者狀態機。(多個)處理器820還可以被實現為計算設備的組合(例如DSP與微處理器的組合)、多個微處理器、多核處理器、與DSP內核結合的一個或多個微處理器或者任何其它這樣的配置。
計算機802可以包括各種計算機可讀介質或者以其他方式與各種計算機可讀介質交互,以支持計算機802的控制以實現所要求保護的主題的一個或多個方面。計算機可讀介質可以是可以由計算機802訪問的任何可用介質,并且包括易失性和非易失性介質以及可移除和非可移除介質。計算機可讀介質可以包括計算機存儲介質和通信介質。
計算機存儲介質包括以任何方法或者技術實現的易失性和非易失性、可移除和非可移除介質,以用于諸如計算機可讀指令、數據結構、程序模塊或者其他數據的信息的存儲。計算機存儲介質包括存儲器設備(例如,隨機訪問存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)……)、磁存儲設備(例如,硬盤、軟盤、盒式磁帶、磁帶……)、光學盤(例如,光盤(CD)、數字多功能盤(DVD)……),和固態設備(例如,固態驅動器(SSD)、閃存驅動器(例如,卡、棒、鍵驅動器……)……),或者可以被用于存儲(與發送相對)由計算機802可訪問的所希望的信息的任何其他類似介質。因此,計算機存儲介質不包括經調制的數據信號。
通信介質通常包含計算機可讀指令、數據結構、程序模塊、或者在諸如載波或者其它傳輸機制的經調制的數據信號中的其他數據,并且包括任何信息傳遞介質。術語“經調制的數據信號”意指使其特征中的一個或多個以將信息編碼在信號中的這樣的方式設置或者改變的信號。作為示例而非限制,通信介質包括有線介質(諸如有線網絡或者直接有線連接)以及無線介質(諸如聲學、RF、紅外和其它無線介質)。任何上述各項的組合也應被包括在計算機可讀介質的范圍內。
存儲器830和大容量存儲裝置850是計算機可讀存儲介質的示例。取決于計算裝置的準確配置和類型,存儲器830可以是易失性(例如,RAM)、非易失性(例如,ROM、閃存……)或者是兩者的某種組合。作為示例,包括諸如在啟動期間在計算機802內的元件之間傳遞信息的基本例程的基本輸入/輸出系統(BIOS)可以被存儲在非易失性存儲器中,而易失性存儲器可以用作外部高速緩沖存儲器,除其他事物外,以支持由(多個)處理器820進行的處理。
大容量存儲裝置850包括可移除/非可移除、易失性/非易失性計算機存儲介質以相對于存儲器830用于大量數據的存儲。例如,大容量存儲裝置850包括但不限于一個或多個設備,諸如磁盤驅動器或者光學盤驅動器、軟盤驅動器、閃存、固態驅動器或者記憶棒。
存儲器830和大容量存儲裝置850可以包括或者在其中已經存儲了操作系統860、一個或多個應用862、一個或多個程序模塊864、和數據866。操作系統860用于控制和分配計算機802的資源。應用862包括系統和應用軟件中的一個或兩者,并且可以通過存儲在存儲器830和/或大容量存儲裝置850中的查詢模塊864和數據866利用由操作系統860進行的資源管理來執行一個或多個動作。因此,應用862可以將通用計算機802轉變為根據由此提供的邏輯的專用機器。
所要求保護的主題的全部或者部分可以使用標準編程和/或工程技術來實現以產生軟件、固件、硬件或者其任何組合以控制計算機來實現所公開的功能。通過示例而非限制,搜索建議系統100或者其部分可以是應用862或者組成應用862的一部分,并且包括存儲在存儲器和/或大容量存儲裝置850中的一個或多個模塊864和數據866,模塊864和數據866的功能在由一個或多個處理器820執行時可以被實現。
根據一個具體實施例,(多個)處理器820可以對應于片上系統(SOC)或者類似架構,包括或者換句話說集成單個集成電路基板上的硬件和軟件兩者。這里,(多個)處理器820可以包括,除其他事物外,至少類似于(多個)處理器820和存儲器830的一個或多個處理器以及存儲器。常規的處理器包括最小量的硬件和軟件并且廣泛地依賴于外部硬件和軟件。相反,處理器的SOC實現方式更強大,因為其在其中嵌入使能最少或不依賴于外部硬件和軟件的特定功能的硬件和軟件。例如,搜索建議系統100和/或相關聯的功能可以被嵌入在SOC架構中的硬件內。
計算機802還包括一個或多個接口組件870,其通信地耦合到系統總線840并且支持與計算機802的交互。作為示例,接口組件870可以是端口(例如串行、并行、PCMCIA、USB、火線……)或者接口卡(例如,聲音、視頻……)等。在一個示例實現方式中,接口組件870可以被實施為用戶輸入/輸出接口,以使得用戶能夠例如通過一個或多個輸入設備(例如,諸如鼠標的指點設備、軌跡球、觸筆、觸摸墊、鍵盤、麥克風、操縱桿、游戲墊、衛星碟、掃描儀、相機、其它計算機……),通過一個或多個手勢或者語音輸入,將命令和信息輸入到計算機802。在另一示例實現方式中,接口組件870可以被實施為輸出外圍接口以將輸出提供到,除其他事物外,顯示器(例如,LCD、LED、等離子……)、揚聲器、打印機和/或其它計算機。此外,接口組件870可以被實施為網絡接口,以使能諸如通過有線或者無線通信鏈路的與其他計算設備(未示出)的通信。
上文已描述的內容包括所要求保護的主題的多個方面的示例。當然,出于描述所要求保護的主題的目的,不可能描述組件或者方法的每一種可想到的組合,但是本領域普通技術人員可以認識到,所公開的主題的許多進一步的組合和排列是可能的。因此,所公開的主題旨在涵蓋落入所附權利要求的精神和范圍內的所有這樣的改變、修改和變型。