科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道创建和使用搜索范围(2)

创建和使用搜索范围(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在SharePoint Server 2007中搜索范围用于缩小用户执行查询后返回的搜索结果集。搜索范围可以定义成共享的,也可以是局部的。

作者:sunmoonfire 来源:blog 2007年9月2日

关键字: 搜索 SharePoint SharePoint2007 MOSS Office

  • 评论
  • 分享微博
  • 分享邮件

创建一个共享的搜索范围

我们可以通过添加一个Scope实例到ScopeCollection中来创建一个共享的搜索范围。可以通过Scopes实例的AllScopes属性得到一个ScopeCollection。当我们创建好一个共享的搜索范围后,就可以使用CreateUrlRule方法来给该范围关联一个或多个规则。

Scope newScope = scopes.AllScopes.Create
      (textBoxName.Text, 
string.Empty, nulltrue,
       
"results.aspx", ScopeCompilationType.AlwaysCompile);
newScope.Rules.CreateUrlRule
      (ScopeRuleFilterBehavior.Include,                         
       UrlScopeRuleType.HostName, textBoxURLRule.Text);   

编译共享搜索范围

我们还需要在使用该范围前编译它。这包括了在物理的索引文件中标记出符合该范围的规则的条目的过程。编译是在Scopes实例的级别进行的。

newScope.StartCompilation();

列出显示组

搜索范围会出现在SharePoint站点的范围选取器中。一个范围选取器会把某个范围列在某个显示组中。下面的代码会获取某个特定站点集下所有的显示组。

foreach (ScopeDisplayGroup group in scopes.AllDisplayGroups)
{
   
if (group.OwningSite.Url == textBoxURL.Text)
         comboBoxDisplayGroups.Items.Add(group.Name);
   }
}

关联共享的搜索范围到某个显示组

我们必须把范围关联到某个显示组上,以便范围选取器显示它。

ScopeDisplayGroup group = scopes.GetDisplayGroup 
       (
new Uri(textBoxURL.Text), 
        comboBoxDisplayGroups.SelectedItem.ToString());
group.Add(newScope);
group.Update();
      

在MOSS环境中,我们可以定义两种级别的范围:

    • 我们可以在SSP级别上创建共享的搜索范围。这样就可以在服务器场级别中,所有绑定该SSP的Web应用程序上,创建的网站集里使用该范围。

    • 我们也可以在个别的网站集上创建用于局部的搜索范围。这样的范围无法在其他的网站集上重用。

一个搜索范围是由一个或多个规则定义的。SharePoint Server 2007对象模型中引入了新的规则,用于支持不同类型的搜索范围。

    • AllContentScopeRule 类 用于描述一个包含了索引中的所有条目的范围。

    • 通过 PropertyQueryScopeRule 类我们可以创建出符合某个属性查询(如,作者=李向军)的范围

    •  UrlScopeRule 类描述的范围中的条目都是在某个显示的URL网址下。

最终用户可以在范围选取下拉列表中选择某个特定的搜索范围或者一个上下文相关的搜索范围,如“搜索此网站”。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章