在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
Channel 9 搜尋連接器下載