在 Windows 联合搜索中启用数据存储

说明如何允许 OpenSearch Web 服务访问数据存储,以及如何避免这样做的潜在障碍。

本主题的组织方式如下:

接受搜索请求的条件

在 Web 服务器上创建的 OpenSearch Web 服务 必须 满足以下两个要求:

  • 能够接受 GET URL 来自客户端的查询。

  • 允许在 URL 中嵌入搜索词。

    以下示例演示如何在 URL 中嵌入搜索词。

    https://example.com/search.aspx?query=terms&param=mysearchword
    

注意

联合搜索不支持向 Web 服务发送 POST 请求。

 

有关构造 URL 的详细信息,请参阅 在 Windows 联合搜索中创建 OpenSearch 说明文件中的“URL 模板参数”。

支持的查询语法

Windows 7 中没有预期的特定查询语法。 OpenSearch 提供程序接受用户在 Windows 资源管理器的输入框中输入的任何术语,并将其编码为 URL。 它根据在 Windows 联合搜索中创建 OpenSearch 描述文件中的“URL 模板参数”中所述的 URL 模板执行此操作。

用户希望将单独的术语视为隐式的 AND 一起处理。 例如,对“Microsoft Windows”的查询应仅返回同时包含“Windows”和“Microsoft”的结果。

支持的身份验证协议

Windows 联合搜索支持基于 Windows 的身份验证,并且可以通过以下协议向 Web 服务提供凭据:

  • NTLM。
  • Kerberos。
  • 基本 (仅通过 https) 。
  • 其他安全支持提供程序 () 安装在 Windows 上以提供额外查询容量的 SSP。 请参阅 SSP 接口 SDK 文档,了解可能添加的其他 SSP。

在 RSS 或 Atom 中发送查询并返回搜索结果

OpenSearch 提供程序负责将 XML 元素值映射到 Windows 应用程序可以使用的 Windows Shell 系统属性。 但并不局限于标准 RSS 或 Atom 元素的默认映射,并且可以在每个属性的 Windows 命名空间中包含自定义 XML 元素。 例如,可以在 item 元素中添加自己的自定义 XML 元素,以便向 Windows 提供其他元数据。 还可以映射其他 XML 命名空间中的元素,例如 iTunes

RSS 源输出示例

以下示例 RSS 源输出返回一项。

<rss version="2.0" xmlns:media="https://search.yahoo.com/mrss/" xmlns:example="https://example.com/namespace">
   <channel>
      <title>Search Results</title>
      <item>
         <title>An example result</title>
         <link>https://example.com/pictures.aspx?id=01</link>
         <description>This is a test of the emergency search results system. If this were a real emergency result, you'd be reading something more useful.</description>
         <pubDate>Wed, 1 Oct 2008 23:12:00 GMT</pubDate>
         <media:content url="https://example.com/pictures/picture01.jpg" fileSize="212889" type="image/jpeg" height="768" width="1024"/>
         <media:thumbnail url="https://example.com/thumbnails/picture01.jpg" height="120" width="160"/>
         <example:dateTaken>Mon, 22 Sep 2008 23:12:00 GMT</example:dateTaken>
      </item>
   </channel>
</rss>

有关属性映射的更多详细信息,请参阅在 Windows 联合搜索中创建 OpenSearch 说明文件中的“WIndows 联合搜索中的扩展元素”和“自定义属性映射”部分。

自动映射到 Windows Shell 属性

在 RSS 源中的项中,可以选择包含自动映射到 Windows Shell 系统属性的其他 XML 元素。 为此,请包含一个以 Windows Shell 属性命名并带有 Windows Shell 系统命名空间前缀的元素。 以下示例演示了命名空间声明 win=" http://schemas.microsoft.com/windows/2008/propertynamespace" 以及属性映射 win:System.Contact.PrimaryEmailAddress的元素的包含:

<rss version="2.0" xmlns:example="https://example.com/schema/2009" xmlns:win="http://schemas.microsoft.com/windows/2008/propertynamespace">
...
   <item>
      <title>Someone</title>
      <win:System.Contact.PrimaryEmailAddress>someone@example.com
   </win:System.Contact.PrimaryEmailAddress>
   </item>

建议使用此处 ("win") 的命名空间前缀;可以使用任何前缀。 但是,必须使用确切的 Windows Shell 属性名称,并且必须) 包含确切的统一资源标识符 (URI,如以下示例所示:

http://schemas.microsoft.com/windows/2008/propertynamespace

关于 Windows Shell 系统属性

Windows 定义 系统属性 的完整列表以及每个属性所需的值类型格式。 例如, System.FileExtension Window Shell 属性的文档指定该值必须包含前导点 (“.docx”,而不是“docx”) 。

日期和时间值

首选日期和时间格式为 ISO-8601,如以下示例所示:

2008-01-16T 19:20:30:.45+01:00

.NET 开发人员应使用 DateTime 类和 ToString("R") 来输出正确的格式。

有关属性映射的更多详细信息,请参阅在 Windows 联合搜索中创建 OpenSearch 说明文件中的“Windows 联合搜索中的扩展元素”。

了解如何将项Windows 地图为文件类型

当 RSS 项指向远程存储的文件时,Windows 资源管理器 UI 中的搜索允许用户将结果视为文件。 用户可以将项目拖放到桌面,Windows 资源管理器 UI 将显示正确的图标并提供相应的快捷菜单。 如果 RSS 项未指向远程存储的文件,则该文件被视为链接,用户可以对其执行操作,例如创建快捷方式或在浏览器中打开它。

以下流程图显示了 Windows 如何确定项的文件类型。

显示从项到将项目视为 Web 链接类型项或文件类型的决策的路径的流程图

OpenSearch 提供程序执行以下步骤将项映射到文件类型:

  • 确定该项应被视为文件还是 Web 链接。
  • 标识要使用的正确文件扩展名。

例如,如果项具有使用文件系统路径 (的链接 URL(如 file:///\\server\share\etc\item.ext) ), 则 OpenSearch 提供程序会将该链接视为文件,并通过此示例) (.ext 路径中使用的文件扩展名确定类型。

如果该项使用标准 RSS 机箱或 MediaRSS media:content 元素, 则 OpenSearch 提供程序假定该项目是一个文件,并标识文件扩展名,如下所示:

  • 如果已为项映射 System.FileExtension Windows Shell 属性,则提供程序将使用该文件扩展名。
  • 如果 尚未映射 System.FileExtension Windows Shell 属性,则提供程序将使用机箱或内容元素中指定的 Type 属性。 此元素应包含字符串 MIMEType ,例如 "image/jpeg"MIMEType如果 与在客户端计算机上注册的文件扩展名相关联,则该项被视为该类型的文件。 MIMEType如果 与客户端计算机上注册的文件扩展名不关联,则该项将被视为 Web 链接类型。 OpenSearch 提供程序不会尝试分析 Url 属性来查找文件扩展名。
  • MIMEType如果 与在客户端计算机上注册的文件扩展名相关联,提供程序将确定文件扩展名是否为已知的 Web 文件类型 (.htm、.html、.asp、.aspx、.php、.) 、.sdk、.stm) 。 如果是,则文件类型被视为 Web 链接类型;否则,它被视为文件类型。 例如,如果 MIMEType "text/html" 与 .htm 文件扩展名相关联,则该项被视为 Web 链接,而不是.htm文件类型。

避免启用数据存储的潜在障碍

某些数据存储不提供 与 OpenSearch 兼容的 Web 服务,但仍可连接到 Windows 联合搜索。 此类数据存储包括:

  • 使用 Windows 7 联合搜索不支持的身份验证方法的远程索引。

    示例包括基于表单的身份验证和其他自定义身份验证方法。

  • 如果高价值公共存储具有公共 Web API,任何人都可以编写另一个与 OpenSearch 兼容的 Web 服务,并在后台调用这些 API。

    示例包括国会图书馆和医学研究数据库。

  • 专有企业数据存储或索引,以及传统内容管理存储,可能无法实现前端。

但是,有一些替代方法可以避免启用数据存储的障碍。 以下是其中的一些替代方法:

若要在无法修改现有数据源的 Web 服务或 Web 服务提供自定义 API 时编写中间人 Web 服务:

  1. 编写可以接受 Windows 7 查询的中间人 Web 服务。
  2. 连接到数据源并检索查询结果。
  3. 以 RSS 或 Atom 格式重新设置结果的格式。
  4. 将结果返回到 Windows 7 客户端。
  5. 请注意,对于企业数据服务和许多 Internet 数据服务,可能需要代表 Web 服务传递用户凭据,以便根据用户的权限执行结果修整。

若要在无法启用公共数据存储时使用现有搜索引擎,请执行以下操作:

  1. 使用已支持具有 RSS 的 OpenSearch 的公共搜索引擎。 为此,可以为用户提供一个 .osdx 文件,该文件具有 URL 模板,该模板将结果限制为仅针对特定域的结果。

  2. 请参阅下面的 OpenSearch 说明示例,了解如何使用针对 live.com 的查询仅搜索 Windows 的帮助内容。

    <?xml version="1.0" encoding="UTF-8"?>
    <OpenSearchDescription xmlns="https://a9.com/-/spec/opensearch/1.1/">
      <ShortName>Windows Help</ShortName>
      <Description>Search Windows Help using the live.com search engine</Description>
      <Language></Language>
      <Url type="text/html" template="https://windowshelp.microsoft.com/windows/search.aspx?=&amp;qu={searchTerms}"/>
      <Url type="application/rss+xml" template="https://api.search.live.com/rss.aspx?source=web&amp;query={searchTerms} site:windowshelp.microsoft.com&amp;web.count=50"/>
    </OpenSearchDescription>
    

若要在无法启用专有企业数据存储或索引时使用支持 OpenSearch 的现有索引服务器,请执行以下操作:

  1. 选择支持 OpenSearch 的现有索引服务器为内容编制索引,例如 SharePoint Search Server。
  2. 创建一个 .osdx 文件,该文件使用 URL 模板中的 KeyWord 语法,将 SharePoint 索引的结果限制为仅来自服务器的结果。

在仅限服务器端的解决方案不起作用时写入客户端数据存储:

  1. 编写位于 Windows OpenSearch 提供程序和外部数据源之间的客户端 OpenSearch 数据源。
  2. 使用 Windows SDK 中的 IOpenSearchSource 接口 API 创建适当配置的 .searchconnector-ms 文件,Windows 资源管理器可以通过该文件使用查询参数调用实现。 然后,实现可以返回采用 RSS 或 Atom 格式格式化的结果。 这样做可使实现提供自定义身份验证 UI,并使用其专有 API 连接到数据源。

注意

打开 .osdx 文件会在 %userprofile%/search 目录中创建一个 .searchconnector-ms 文件 (搜索连接器) ,并将指向该文件的链接放置在 %userprofile%/links 目录中。

 

其他资源

有关在 Windows 7 及更高版本中使用 OpenSearch 技术实现对远程数据存储的搜索联合的其他信息,请参阅 Windows 联合搜索中的“其他资源”。

Windows 中的联合搜索

在 Windows 中使用联合搜索入门

在 Windows 联合搜索中连接 Web 服务

在 Windows 联合搜索中创建 OpenSearch 描述文件

遵循 Windows 联合搜索中的最佳做法

在 Windows 联合搜索中部署搜索连接器