在 Windows 同盟搜尋中啟用您的資料存放區
說明如何讓 OpenSearch Web 服務存取您的資料存放區,以及如何避免進行此作業的潛在障礙。
本主題的組織方式如下:
- 搜尋請求接受的條件
- 在 RSS 或 Atom 中傳送查詢並傳回搜尋結果
- 自動映射至 Windows Shell 屬性
- 瞭解 Windows 如何將元素對應至檔案類型
- 避免資料存放區啟用的潛在障礙
- 其他資源
- 相關主題
接受搜尋請求的條件
您在網頁伺服器上建立的 OpenSearch Web 服務 必須 符合下列兩個需求:
能夠接受來自用戶端的
GET URL
查詢。允許搜尋字詞內嵌在URL中。
下列範例示範搜尋字詞如何內嵌在URL中。
https://example.com/search.aspx?query=terms¶m=mysearchword
注意
同盟搜尋不支援將 POST
要求傳送至 Web 服務。
如需建構 URL 的詳細資訊,請參閱
支援的查詢語法
Windows 7 中沒有預期的特定查詢語法。 OpenSearch 提供者接受使用者在 Windows 檔案總管輸入方塊中輸入的任何字詞,並將它編碼為 URL。 它會根據 Windows 聯合搜尋中建立 OpenSearch 描述檔案的「URL 範本參數」中所描述的 URL 範本進行操作。
用戶預期個別字詞會隱含地以 AND 組合在一起。 例如,「Microsoft Windows」的查詢應該只會傳回同時包含 「Windows」 和 “Microsoft” 的結果。
支援的驗證通訊協定
Windows 同盟搜尋支援以 Windows 為基礎的驗證,並可透過下列通訊協定提供 Web 服務的認證:
- NTLM。
- Kerberos。
- 基本 (僅限透過 HTTPs)。
- 安裝在 Windows 上的其他安全性支援提供者(SSP),可提供額外的查詢容量。 請參閱 SSP 介面 SDK 檔,以瞭解其他 SSP 的潛在新增。
在 RSS 或 Atom 中傳送查詢並傳回搜尋結果
OpenSearch 提供者負責將 XML 元素值對應至 Windows 應用程式可以使用的 Windows Shell 系統屬性。 但是,您不限於標準 RSS 或 Atom 元素的預設對應,而且可以在 Windows 命名空間中包含每個屬性的自訂 XML 元素。 例如,您可以在 項目內新增自己的自定義 XML 元素 元素,以向 Windows 提供其他元數據。 您也可以對應來自其他 XML 命名空間的元素,例如 iTunes
RSS 摘要輸出的範例
下列 RSS 範例輸出會傳回一個項目。
<rss version="2.0" xmlns:media="https://search.yahoo.com/mrss/" xmlns:example="https://example.com/namespace">
<channel>
<title>Search Results</title>
<item>
<title>An example result</title>
<link>https://example.com/pictures.aspx?id=01</link>
<description>This is a test of the emergency search results system. If this were a real emergency result, you'd be reading something more useful.</description>
<pubDate>Wed, 1 Oct 2008 23:12:00 GMT</pubDate>
<media:content url="https://example.com/pictures/picture01.jpg" fileSize="212889" type="image/jpeg" height="768" width="1024"/>
<media:thumbnail url="https://example.com/thumbnails/picture01.jpg" height="120" width="160"/>
<example:dateTaken>Mon, 22 Sep 2008 23:12:00 GMT</example:dateTaken>
</item>
</channel>
</rss>
如需屬性對應的詳細資訊,請參閱 在 Windows 同盟搜尋中建立 OpenSearch 描述檔案中的<Windows 同盟搜尋中的擴充元素>和<自訂屬性對應>一節。
自動映射至 Windows Shell 屬性
在 RSS 摘要中的項目內,您可以選擇包含其他會自動對應至 Windows Shell 系統屬性的 XML 元素。 若要這樣做,請包含以 Windows Shell 屬性命名的專案,並在前面加上 Windows Shell 系統命名空間。 下列範例說明命名空間宣告 win=" http://schemas.microsoft.com/windows/2008/propertynamespace"
,以及屬性映射中包含的元素 win:System.Contact.PrimaryEmailAddress
:
<rss version="2.0" xmlns:example="https://example.com/schema/2009" xmlns:win="http://schemas.microsoft.com/windows/2008/propertynamespace">
...
<item>
<title>Someone</title>
<win:System.Contact.PrimaryEmailAddress>someone@example.com
</win:System.Contact.PrimaryEmailAddress>
</item>
這裡使用的命名空間前置詞("win"
) 是建議:您可以使用任何前置詞。 不過,您必須使用確切的 Windows Shell 屬性名稱,而且必須包含確切的統一資源標識碼 (URI),如下列範例所示:
http://schemas.microsoft.com/windows/2008/propertynamespace
關於 Windows Shell 系統屬性
Windows 定義 系統屬性 的完整清單,以及每個屬性所需的實值類型格式。 例如,System.FileExtension Window Shell 屬性的檔會指定值必須包含前置點 (“.docx” 而非 “docx” )。
日期和時間值
慣用的日期和時間格式為 ISO-8601,如下列範例所示:
2008-01-16T 19:20:30:.45+01:00
.NET 開發人員應該使用 DateTime 類別搭配 ToString("R")
來輸出正確的格式。
如需屬性對應的詳細資訊,請參閱
瞭解 Windows 如何將項目對應至文件類型
在 Windows 檔案總管 UI 中搜尋可讓使用者在 RSS 專案指向遠端儲存的檔案時,將結果視為檔案。 用戶可以將項目拖放到桌面,而 Windows 檔案總管 UI 會顯示正確的圖示,並提供適當的快捷選單。 如果 RSS 專案未指向遠端儲存的檔案,則會將檔案視為連結,而且使用者可以對其執行動作,例如建立快捷方式或在瀏覽器中開啟它。
下列流程圖顯示 Windows 如何判斷專案的文件類型。
OpenSearch 提供者會執行下列步驟,將專案對應至檔類型:
- 識別專案是否應該視為檔案或網頁連結。
- 識別要使用的正確副檔名。
例如,如果專案具有使用文件系統路徑的連結 URL(例如 file:///\\server\share\etc\item.ext
),OpenSearch 提供者會將連結視為檔案,並依路徑中使用的擴展名來判斷類型(在此範例中為 .ext)。
如果項目使用標準的 RSS 封裝或 MediaRSS media:content 元素,OpenSearch 提供者會假設該項目是檔案,並辨識檔案名稱副檔名,如下所示:
- 如果 System.FileExtension Windows Shell 屬性已對應至該項目,提供者就會使用該副檔名。
- 如果 System.FileExtension Windows Shell 屬性尚未對應,提供者將使用封裝或內容元素中指定的 Type 屬性。 這個項目應該包含
MIMEType
字串,例如"image/jpeg"
。 如果MIMEType
與用戶端計算機上註冊的擴展名相關聯,該專案就會被視為該類型的檔案。 如果MIMEType
未與用戶端計算機上註冊的擴展名相關聯,該專案會被視為網頁連結類型。 OpenSearch 提供者不會嘗試剖析 URL 屬性來尋找擴展名。 - 如果
MIMEType
與用戶端計算機上註冊的擴展名相關聯,提供者會判斷擴展名是否為已知的 Web 檔類型(.htm、.html、.asp、.aspx、.php、.swf、.stm)。 如果是,則檔類型會被視為網頁連結類型;否則,它會被視為文件類型。 例如,如果MIMEType "text/html"
與 .htm 擴展名相關聯,該專案會被視為網頁連結,而不是 .htm 檔類型。
避免啟用資料存放區的潛在障礙
某些數據存放區不提供 OpenSearch相容的 Web 服務,但仍可連線到 Windows 同盟搜尋。 這類資料存放區包括:
具有 Windows 7 同盟搜尋中不支援之驗證方法的遠端索引。
範例包括表單型驗證和其他自訂驗證方法。
如果高價值公用市集有公用 Web API,任何人都可以撰寫另一個與 OpenSearch 相容的 Web服務,並在幕後呼叫這些 API。
範例包括國會圖書館和醫學研究資料庫。
專屬的企業數據存放區或索引,以及舊版內容管理存放區,因此可能無法實作前端。
不過,有一種替代方案可以避免啟用數據存放區的障礙。 以下是其中一些替代方案:
當您無法修改現有數據源的 Web 服務或 Web 服務提供自定義 API 時,若要撰寫仲介 Web 服務:
- 撰寫可接受 Windows 7 查詢的中間人 Web 服務。
- 聯機到您的數據源,並擷取查詢結果。
- 以 RSS 或 Atom 格式重新格式化結果。
- 將結果傳回 Windows 7 用戶端。
- 請注意,針對企業數據服務和許多因特網數據服務,您可能需要代表Web服務傳遞用戶認證,以根據使用者的許可權執行結果修剪。
當您無法啟用公用資料存放區時,若要使用現有的搜尋引擎:
使用已支援搭配 RSS OpenSearch 的公用搜尋引擎。 您可以透過提供一個包含 URL 範本的 .osdx 檔案給使用者,將搜尋結果限制為您的特定網域。
請參閱下列 OpenSearch 描述的範例,以針對 live.com 使用查詢來搜尋 Windows 的說明內容。
<?xml version="1.0" encoding="UTF-8"?> <OpenSearchDescription xmlns="https://a9.com/-/spec/opensearch/1.1/"> <ShortName>Windows Help</ShortName> <Description>Search Windows Help using the live.com search engine</Description> <Language></Language> <Url type="text/html" template="https://windowshelp.microsoft.com/windows/search.aspx?=&qu={searchTerms}"/> <Url type="application/rss+xml" template="https://api.search.live.com/rss.aspx?source=web&query={searchTerms} site:windowshelp.microsoft.com&web.count=50"/> </OpenSearchDescription>
當您無法啟用專屬企業數據存放區或索引時,若要使用支援 OpenSearch 的現有索引伺服器:
- 選取支援 OpenSearch 的現有索引編製伺服器,以編製內容索引,例如 SharePoint 搜尋伺服器。
- 建立 .osdx 檔案,此檔案會使用 URL 範本中的 KeyWord 語法,將 SharePoint 索引的結果限制為僅限來自您伺服器的檔案。
當伺服器端解決方案無法運作時,撰寫用戶端資料存放區:
- 撰寫位於 Windows OpenSearch 提供者與外部數據源之間的用戶端 OpenSearch 數據源。
- 使用 Windows SDK 中的 IOpenSearchSource 介面 API 來建立適當設定的 .searchconnector-ms 檔案,Windows Explorer 可以使用查詢參數呼叫您的實作。 您的實作接著可以傳回以 RSS 或 Atom 格式格式化的結果。 這麼做可讓您的實作提供自定義驗證 UI,並使用其專屬 API 連線到數據源。
注意
開啟 .osdx 檔案會在 %userprofile%/search 目錄中建立 .searchconnector-ms 檔案 (search connector),並將連結放在 %userprofile%/links 目錄中。
其他資源
如需在 Windows 7 和更新版本中使用 OpenSearch 技術實作遠端數據存放區搜尋同盟的詳細資訊,請參閱 Windows 中同盟搜尋的「其他資源」。
相關主題
-
在 Windows 同盟搜尋 中建立 OpenSearch 描述檔案
-
Windows 同盟搜尋 中的最佳做法
-
在 Windows 同盟搜尋 中部署搜尋連接器