在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