使用触发器和查询模板 (Search Server 2008)

更新时间: 2008年7月

应用到: Microsoft Search Server 2008

 

上一次修改主题: 2008-07-25

如果 Microsoft Search Server 2008 不直接对某个特定网站进行爬网,则可以将该网站添加为联合位置并为搜索中心网站用户提供该网站的搜索结果。添加联合位置时,必须指定用于联合位置的查询 URL 的查询模板。或者,也可以指定一个或多个查询约束(称为触发器)来限制传递到联合位置的查询。

在本主题中,您将了解有关指定触发器以及如何构建联合位置的查询模板的详细信息。

触发器

触发器是一个确定何时传递查询的查询约束。创建联合位置时,可以指定用来确定何时将查询传递到该位置的触发器。只有与为位置定义中的触发器指定的模式匹配的查询才能传递到联合位置。

有以下两种类型的触发器:

  • 前缀

    查询的前缀必须与指定为触发器的术语完全相同。例如,如果将“weather”指定为前缀触发器,对于查询“weather New York, NY”,前缀将被丢弃,只转发“New York, NY”。

    提示

    只转发前缀后面的查询部分;在示例“weather New York, NY”中,只有“New York, NY”被转发到联合位置。

  • 正则表达式

    查询必须符合指定的正则表达式模式。有关创建正则表达式的详细信息,请参阅 .NET Framework 正则表达式 (https://go.microsoft.com/fwlink/?linkid=117945&clcid=0x804)。

查询模板

查询模板包含联合位置的参数化 URL,搜索查询将被传递到此 URL。参数化 URL 必须返回结构化 XML 结果(例如,RSS 或 Atom 结果)。

Search Server 2008 支持两种类型的联合位置:

  • 该服务器上的搜索索引

    用于“该服务器上的搜索索引”联合位置类型的查询模板应包含您指定的 searchTerms 参数,如下所示:{searchTerms}

    它还应包含所有其他查询限制,例如,搜索特定作者的内容,如以下示例中所示:Author:"{searchTerms}"

    用于这种类型的联合位置的查询模板不应包括搜索结果 URL。

  • OpenSearch

    支持 OpenSearch 标准的任何 Internet 网站

此查询模板相当于 OpenSearch 规范(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=111090&clcid=0x804) 中的 URL 模板。其语法以 URL 模板语法(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=100718&clcid=0x804) 为基础。下面是一个包含参数化 URL 以连接到 Live Search 服务的位置查询模板的简单示例:http://search.live.com/results.aspx?q={searchTerms}&format=rss

在本例中,查询模板包含 OpenSearch 模板参数 searchTermssearchTerms 参数是转发到联合位置的搜索文字的占位符。您可以在查询模板中指定更多参数。有关这些参数的详细信息,请参阅 OpenSearch 规范中的 OpenSearch 1.1 参数部分(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=100720&clcid=0x804)。

您可以通过在参数名称后面加上问号 (?) 来指示该参数是否为可选参数。在下面的示例中,searchTerms 是必选参数,而 startIndex 则不是必选参数:http://search.live.com/results.aspx?q={searchTerms}&format=rss&first={startIndex?}

提示

您在 URL 模板中指定的参数必须进行 URL 编码。在上述示例中,与号 (&) 被替换为此字符的 URL 编码“&”。