共用方式為


使用搜尋通訊協定

搜尋應用程式通訊協定是一種可延伸慣例,用於在 Windows Vista 上使用 Service Pack 1 (SP1) 和更新版本呼叫桌面搜尋應用程式。 通訊協定是使用SP1在Windows Vista中建立,讓Windows能夠判斷及呼叫預設的桌面搜尋應用程式。

通訊協定語法提供一些參數,可用於執行常見的桌面搜尋,例如使用者輸入的搜尋字詞或搜尋開始的位置。 當使用者從兩個可用的搜尋進入點之一([ 開始 ] 功能表或 Windows 檔案總管中搜尋時,操作系統會使用搜尋通訊協定來啟動預設的桌面搜尋應用程式。 其方式是將使用者輸入的搜尋字詞新增至標準搜尋通訊協定語法,並將該資訊傳遞至註冊為預設搜尋應用程式的應用程式。

如果未安裝其他桌面搜尋應用程式,輸入這些進入點的搜尋會啟動 Windows 搜尋總管。 不過,第三方開發人員可以建立、安裝及註冊其應用程式來處理搜尋通訊協定,並成為預設的搜尋應用程式。 這類應用程式需要支援搜尋通訊協定語法,並使用預設程式功能進行註冊,以確保 Windows 的順暢體驗。

如果您開發的應用程式是要在特定傳統型搜尋應用程式上使用或建置,則不應完全相依於 搜尋: 通訊協定。 因為許多應用程式可以擁有 搜尋: 通訊協定,所以不保證您的目標桌面搜尋應用程式在任何指定時間都會擁有它。 相反地,您應該使用該目標桌面搜尋應用程式所定義的私人搜尋通訊協定。 這表示要成為第三方應用程式平臺的桌面搜尋應用程式應該同時支援 搜尋: 通訊協議和他們自己的專屬搜尋通訊協定。

注意

搜尋:通訊協定不會取代專屬 search-ms: 通訊協定。 應用程式仍然可以使用 search-ms: 通訊協定來啟動視窗搜尋總管,或以無訊息方式查詢 Windows 搜尋索引器。

 

本主題涵蓋下列內容:

語法

搜尋通訊協定會使用下列標準 URL 編碼語法:

search:parameter=value[&parameter=value]&

語法首先會識別通訊協定本身(search:)。 參數/值組是傳遞至搜尋引擎的自變數,如下表所述,其中顯示搜尋通訊協定語法的所有可能參數。

參數 數值 Description
query URL 編碼的文字 使用者輸入的查詢文字。
inputlocale 任何有效的語言代碼識別碼 (LCID) 識別查詢輸入語言的 LCID。
keywordlocale 任何有效的 LCID 識別索引器國際版語言的 LCID。 默認值為 1033 (en-us)。
碎屑 AQS 語句 這個自變數會限制搜尋的範圍。 在 Windows Vista 中,搜尋通訊協議支援完整的 AQS,以及自變數的特殊實作 location 。 在 Windows XP 中,搜尋通訊協定也支援完整的 AQS,但 和store的特殊實作kind除外。
語法 NQS、AQS(不區分大小寫) 用來搜尋索引的查詢語法:自然查詢語法或進階查詢語法 (AQS)。 AQS 是預設值,且一律會假設已剖析及支援。
stackedby 來自屬性系統的任何有效屬性 屬性,指定要堆疊結果的數據行。
subquery 已儲存搜尋檔案的完整指定路徑 (*.search-ms) 子查詢的結果會作為查詢的來源。 也就是說,系統會針對子查詢的結果搜尋查詢字詞。
displayname URL 編碼的字串 目前搜尋的名稱。

 

Windows Vista 搭配 SP1 使用搜尋: 通訊協定

具有SP1的 Windows Vista 有數個進入點,其會從中呼叫 搜尋: 通訊協定。 以下概述這些進入點,以及每個專案相關聯的常見語法。

搜尋通訊協議進入點 Location 呼叫的查詢
隨處搜尋 [開始] 功能表 search:query=<Search Term>
隨處搜尋 Windows 檔案總管 search:query=<Search Term>&crumb=location:<LOCATION>
Windows 標誌鍵+F Anywhere 提供 搜尋:
CTRL+F Windows 檔案總管 search:query=<Search Term>&crumb=location:<LOCATION>
F3 [開始] 功能表 搜尋:
F3 Windows 檔案總管 search:query=<Search Term>&crumb=location:<LOCATION>

 

具有SP1搜尋通訊協定進入點的 Windows Vista 不會利用搜尋通訊協定中的所有可能參數。 只涉及處理 Windows Vista sp1 搜尋通訊協定呼叫的應用程式,可以使用下表作為實作所需之最小值的指南。

參數 Windows 使用? Windows Vista 搭配 SP1 在呼叫搜尋時如何使用:
查詢 Yes 使用者輸入的查詢文字。
碎屑 Yes crumblocation 使用 自變數來指定查詢的來源。
subquery Yes Subquery 自變數的結果會作為要搜尋的項目範圍。 如果使用者使用 .search-ms 檔案來搜尋,然後從該搜尋內呼叫默認桌面搜尋應用程式,則通常會使用這項功能。
inputlocale No 目前未使用。
keywordlocale No 目前未使用。
語法 No 目前未使用。
stackedby No 目前未使用。
displayname No 目前未使用。

 

範例

如果使用者在 [ 開始 ] 功能表中輸入 “Microsoft”,然後按兩下 [ 搜尋隨處搜尋],就會進行產生的搜尋通訊協定呼叫:

search:query=microsoft&

如果使用者在 C:\MyFolder 內的 Windows 檔案總管中輸入 “Seattle”,然後按兩下 [搜尋隨處搜尋],則會使用 ':' 和 '\' 的逸出字元進行下列呼叫:

search:query=seattle&crumb=location:C%3A%5CMyFolder

註冊處理通訊協議的應用程式

由於多個應用程式可以爭用搜尋通訊協定,因此您應該在安裝期間向 預設程式 功能註冊您的應用程式,讓使用者更輕鬆地設定預設值。 除了一般在 Windows XP 下練習的安裝程式之外,以 Windows Vista 為基礎的應用程式必須向預設程式功能註冊,讓應用程式和使用者能夠順暢地設定預設值。

在使用者電腦上安裝必要的二進位檔之後,您的安裝例程應該完成下列一般工作:

  1. 將 ProgID 寫入HKEY_LOCAL_MACHINE,如下所示。 請注意,應用程式必須為搜尋通訊協定建立應用程式特定的 ProgID。
  2. 宣告計算機層級的搜尋通訊協議關聯。
  3. 使用預設程式註冊應用程式,如註冊應用程式以搭配默認程式使用中所述,作為搜尋通訊協議的競爭者。

登錄項目

以下是虛構桌面搜尋應用程式 Contoso Search 的必要登錄專案範例。

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         contoso-search
            URL Protocol = ""
HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         contoso-search
            DefaultIcon
               (Default) = %ProgramFiles%\Contoso\Search\contososearch.exe,-7
HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         contoso-search
            shell
               open
                  command
                     (Default) = %ProgramFiles%\Contoso\Search\contososearch.exe %1
HKEY_LOCAL_MACHINE
   SOFTWARE
      RegisteredApplications
         Contoso Search = "Software\\Contoso\\Search\\Capabilities"
HKEY_LOCAL_MACHINE
   SOFTWARE
      Contoso
         Search
            Capabilities
               ApplicationName = "Contoso Search Test App"
               ApplicationDescription = "Contoso search is a great new desktop search application"
HKEY_LOCAL_MACHINE
   SOFTWARE
      Contoso
         Search
            Capabilities
               UrlAssociations
                  search = "contoso-search"

進階查詢語法

預設程式