?在Windows 7 中Federated Search 可以通過OpenSearch?協議訪問到遠程數據資源,也就意味著用戶可以使用資源管理器(Windows Explorer)搜索并瀏覽遠程數據。本篇我們將制作一個搜索連接器(Search Connector)查找Channel 9?上的視頻資料。
Federated Search 工作原理
下圖描繪了Federated Search 的基本工作原理:
1. 首先通過.osdx(OpenSearch Description)文件安裝搜索連接器。osdx 的文件類型是我們熟知XML 格式,其使用方法和相關格式可以參考OpenSearch。由于在Windows 7 中.osdx 是可以直接識別的文件類型,所以只需雙擊該文件即可完成安裝。
2. 搜索連接器安裝后便可以在資源管理器中看到Channel 9 選項:
接下來可以通過Search Provider 來搜索我們想找的視頻內容:
???? 雖然只是輸入了簡單的幾個關鍵字,其實Search Provider 在幕后將搜索框里文字替換進類似“http://channel9.msdn.com/Search/feed/rss/?Term={searchTerms}” 的HTTP 請求中,并發送到具有OpenSearch 服務的主機。
3. 當Channel 9 服務器接到請求后會要馬上進行查詢,并將結果以RSS 格式(如下圖所示)返回到我們的計算機。
?
4. 最后,Windows Explorer 把這些RSS 代碼稍作整理將美觀的內容呈現到我們面前。
?
創建OSDX 搜索連接器
.osdx 文件分為兩部分內容,一部分用于構造HTTP 請求及osdx 的一些基本信息:
<?xml version="1.0" encoding="utf-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ms-ose="http://schemas.microsoft.com/opensearchext/2009/"><ShortName>Channel 9</ShortName><Description>Search on Channel 9 in Windows 7</Description><Url type="application/rss+xml" template="http://channel9.msdn.com/Search/feed/rss/?Term={searchTerms}"></Url><Url type="text/html" template="http://channel9.msdn.com/Search/?Term={searchTerms}"></Url>... ... </OpenSearchDescription>
下表列出了URL 模板參數的相關使用方法:
另一部分用來整理返回的RSS 搜索結果:
<?xml version="1.0" encoding="utf-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:ms-ose="http://schemas.microsoft.com/opensearchext/2009/"> ... ...<ms-ose:ResultsProcessing format="application/rss+xml"><ms-ose:PropertyMapList><ms-ose:PropertyMap sourceNamespaceURI="http://www.mscommunities.com/rssmodule/"><ms-ose:Source path="previewtext"><ms-ose:Property name="System.AutoSummary" /></ms-ose:Source></ms-ose:PropertyMap><ms-ose:PropertyMap sourceNamespaceURI="http://purl.org/dc/elements/1.1/"><ms-ose:Source path="creator"><ms-ose:Property name="System.Author" /></ms-ose:Source></ms-ose:PropertyMap><ms-ose:PropertyMap sourceNamespaceURI=""><ms-ose:Source path="enclosure/@url"><ms-ose:Property name="System.ContentUrl" /></ms-ose:Source></ms-ose:PropertyMap><ms-ose:PropertyMap sourceNamespaceURI=""><ms-ose:Source path="enclosure/@type"><ms-ose:Property name="System.MIMEType" /></ms-ose:Source></ms-ose:PropertyMap></ms-ose:PropertyMapList></ms-ose:ResultsProcessing> </OpenSearchDescription>
整理好的結果會以下圖方式體現出來:
下表為RSS XML 與Windows Shell 屬性的Mapping 參數:
最后將編輯好的文檔保存為.osdx 格式即可,雙擊文件安裝搜索連接器:
參考資料
1. Windows 7 Federated Search Provider Implementer's Guide?
http://www.microsoft.com/downloads/details.aspx?familyid=c709a596-a9e9-49e7-bcd4-319664929317&displaylang=en&tm
2. Federated Search in Windows?
http://msdn.microsoft.com/en-us/library/dd742958(VS.85).aspx
3. Creating an OpenSearch Description File in Windows Federated Search?
http://msdn.microsoft.com/en-us/library/dd742951(v=VS.85).aspx
4. OpenSearch?
http://www.opensearch.org/Specifications/OpenSearch/1.1