Windows 7 资源管理器搜索Channel 9 视频

作者:李敬然日期:2010-05-06

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

Federated Search 工作原理

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

Map

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

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

Favorites

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

HTTPSearch

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

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

RSSCode 

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

 Search

创建OSDX 搜索连接器

.osdx 文件分为两部分内容,一部分用于构造HTTP 请求及osdx 的一些基本信息:

<?xml version="1.0" encoding="utf-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:ms-ose="https://schemas.microsoft.com/opensearchext/2009/">
<ShortName>Channel 9</ShortName>
<Description>Search on Channel 9 in Windows 7</Description>
<Url type="application/rss+xml" template="https://channel9.msdn.com/Search/feed/rss/?Term={searchTerms}"></Url>
<Url type="text/html" template="https://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="https://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>

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

List

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

Mappings

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

Add

参考资料

1. Windows 7 Federated Search Provider Implementer's Guide
https://www.microsoft.com/downloads/details.aspx?familyid=c709a596-a9e9-49e7-bcd4-319664929317&displaylang=en&tm

2. Federated Search in Windows
https://msdn.microsoft.com/en-us/library/dd742958(VS.85).aspx

3. Creating an OpenSearch Description File in Windows Federated Search
https://msdn.microsoft.com/en-us/library/dd742951(v=VS.85).aspx

4. OpenSearch
http://www.opensearch.org/Specifications/OpenSearch/1.1

Channel 9 搜索连接器下载


MSDN.Channel9.zip