在 Windows 联合搜索中启用数据存储
说明如何允许 OpenSearch Web 服务访问数据存储,以及如何避免这样做的潜在障碍。
本主题的组织方式如下:
- 接受搜索请求的条件
- 在 RSS 或 Atom 中发送查询并返回搜索结果
- 自动映射到 Windows Shell 属性
- 了解如何将项Windows 地图为文件类型
- 避免启用数据存储的潜在障碍
- 其他资源
- 相关主题
接受搜索请求的条件
在 Web 服务器上创建的 OpenSearch Web 服务 必须 满足以下两个要求:
能够接受
GET URL
来自客户端的查询。允许在 URL 中嵌入搜索词。
以下示例演示如何在 URL 中嵌入搜索词。
https://example.com/search.aspx?query=terms¶m=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 如何确定项的文件类型。
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 服务:
- 编写可以接受 Windows 7 查询的中间人 Web 服务。
- 连接到数据源并检索查询结果。
- 以 RSS 或 Atom 格式重新设置结果的格式。
- 将结果返回到 Windows 7 客户端。
- 请注意,对于企业数据服务和许多 Internet 数据服务,可能需要代表 Web 服务传递用户凭据,以便根据用户的权限执行结果修整。
若要在无法启用公共数据存储时使用现有搜索引擎,请执行以下操作:
使用已支持具有 RSS 的 OpenSearch 的公共搜索引擎。 为此,可以为用户提供一个 .osdx 文件,该文件具有 URL 模板,该模板将结果限制为仅针对特定域的结果。
请参阅下面的 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?=&qu={searchTerms}"/> <Url type="application/rss+xml" template="https://api.search.live.com/rss.aspx?source=web&query={searchTerms} site:windowshelp.microsoft.com&web.count=50"/> </OpenSearchDescription>
若要在无法启用专有企业数据存储或索引时使用支持 OpenSearch 的现有索引服务器,请执行以下操作:
- 选择支持 OpenSearch 的现有索引服务器为内容编制索引,例如 SharePoint Search Server。
- 创建一个 .osdx 文件,该文件使用 URL 模板中的 KeyWord 语法,将 SharePoint 索引的结果限制为仅来自服务器的结果。
在仅限服务器端的解决方案不起作用时写入客户端数据存储:
- 编写位于 Windows OpenSearch 提供程序和外部数据源之间的客户端 OpenSearch 数据源。
- 使用 Windows SDK 中的 IOpenSearchSource 接口 API 创建适当配置的 .searchconnector-ms 文件,Windows 资源管理器可以通过该文件使用查询参数调用实现。 然后,实现可以返回采用 RSS 或 Atom 格式格式化的结果。 这样做可使实现提供自定义身份验证 UI,并使用其专有 API 连接到数据源。
注意
打开 .osdx 文件会在 %userprofile%/search 目录中创建一个 .searchconnector-ms 文件 (搜索连接器) ,并将指向该文件的链接放置在 %userprofile%/links 目录中。
其他资源
有关在 Windows 7 及更高版本中使用 OpenSearch 技术实现对远程数据存储的搜索联合的其他信息,请参阅 Windows 联合搜索中的“其他资源”。
相关主题