如何编码自定义搜索页面以仅在SharePoint 2007中搜索当前网站和子网站?
问题描述:
我们的SharePoint-2007门户网站的用户将有能力创建自己的网站和子网站。这些网站将被搜索,但搜索将限于网站和子网站(如果有的话)。如何编码自定义搜索页面以仅在SharePoint 2007中搜索当前网站和子网站?
我想开发一个自定义的搜索页面,其逻辑(c#)和自定义用户界面背后有自己的代码。此自定义搜索页面将成为网站模板的一部分。我不确定编码搜索页面和网站模板的最佳方法是什么。我使用什么范围?每次用户创建网站时,是否需要创建新范围?开箱即用的SharePoint搜索页面具有选项“本网站”的范围下拉菜单。但是我没有在搜索管理下的范围列表中看到该范围。任何帮助或指针是最受欢迎的。提前致谢。
答
“本网站”和“本列表”范围不是真正的范围。它们代表内置于MOSS搜索代码中的功能。这些“范围”通过特殊查询字符串参数(即property filters)被调用。
默认情况下,当您执行这些搜索时,它将重定向到名为的OSSSearchResults.aspx页面,该页面看起来像本地站点的一部分。注意查询字符串参数:
-
k=<search_terms>
:关键字,您正在搜索的术语。 -
cs=This%20Site
:上下文范围,您想要使用的范围(也可以使用This%20List
)。 -
u=<site_url>
:网址,您想限制搜索结果的网站。
当我们建立我们的内部网门户时,我们创建了一个自定义的Search Center。它处理企业搜索任务,但如果您将上述相同的参数传递给它,它还将提供网站和列表范围的搜索。通过这种方式,我们可以拥有一个中心位置来提供搜索功能,一个地方可以自定义/样式,我们所有的搜索都以相同的方式显示和行为。
在每个网站中,作为我们页面布局的一部分,我们有一个专门用于“本网站”的搜索框。当您从中搜索时,我们只需将POST
的适当参数返回到我们的搜索中心,然后您就可以拥有它。