在Windows 7 中Federated Search 可以通过OpenSearch 协议访问到远程数据资源,也就意味着用户可以使用资源管理器(Windows Explorer)搜索并浏览远程数据。本篇我们将制作一个搜索连接器(Search Connector)查找Channel 9 上的视频资料。

Federated Search 工作原理

下图描绘了Federated Search 的基本工作原理:

MapMap

1. 首先通过.osdx(OpenSearch Description)文件安装搜索连接器。osdx 的文件类型是我们熟知XML 格式,其使用方法和相关格式可以参考OpenSearch。由于在Windows 7 中.osdx 是可以直接识别的文件类型,所以只需双击该文件即可完成安装。

2. 搜索连接器安装后便可以在资源管理器中看到Channel 9 选项:

FavoritesFavorites

接下来可以通过Search Provider 来搜索我们想找的视频内容:

HTTPSearchHTTPSearch

     虽然只是输入了简单的几个关键字,其实Search Provider 在幕后将搜索框里文字替换进类似“http://channel9.msdn.com/Search/feed/rss/?Term={
searchTerms}” 的HTTP 请求中,并发送到具有OpenSearch 服务的主机。

3. 当Channel 9 服务器接到请求后会要马上进行查询,并将结果以RSS 格式(如下图所示)返回到我们的计算机。

RSSCodeRSSCode 

4. 最后,Windows Explorer 把这些RSS 代码稍作整理将美观的内容呈现到我们面前。

 SearchSearch

创建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 模板参数的相关使用方法:

Windows 7 资源管理器搜索Channel 9 视频[通俗易懂]Windows 7 资源管理器搜索Channel 9 视频[通俗易懂]

另一部分用来整理返回的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>  

整理好的结果会以下图方式体现出来:

ListList

下表为RSS XML 与Windows Shell 属性的Mapping 参数:

MappingsMappings

最后将编辑好的文档保存为.osdx 格式即可,双击文件安装搜索连接器:

AddAdd

参考资料

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 搜索连接器下载

转载于:https://blog.51cto.com/186067/1280640