科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字: MOSS SharePoint SharePoint2007 Office

  • 评论
  • 分享微博
  • 分享邮件
在SharePoint Server 2007中搜索范围用于缩小用户执行查询后返回的搜索结果集。搜索范围可以定义成共享的,也可以是局部的。在搜索范围定义中,我们可以使用不同的规则,可以定义一个基于某种内容源的简单范围,也可以定义一个基于自定义元数据条件的复杂范围。我们可以在搜索下拉列表、搜索结果页面、高级搜索以及其他位置中看到搜索范围。我们可以简单的理解为,在搜索范围选取下拉列表中所看到的范围就是搜索范围。

管理员可以在浏览器重创建搜索范围。另外,MOSS还提供了一整套新的搜索管理对象模型。下面的代码中,我们将创建一个共享的搜索范围,并发布该范围,使其成为一个协作门户的搜索体验的一部分。

我们必须使下面的样例代码运行在装有MOSS的服务器上。该代码需要引用到Microsoft.SharePoint.dll,Microsoft.Office.Server.dll,Microsoft.Office.Server.Search.dll和System.Web.dll。添加下列的namespace:

using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.Search;
using Microsoft.Office.Server.Search.Administration;

连接到共享服务SSP(Shared Services Provider)和搜索上下文

明白如何添加到SSP和搜索服务上下文的引用是很重要的。这是我们进行搜索范围编程的基础。下面的代码展示了该过程。本例假设共享服务的名称为“SharedServices1”。

private ServerContext serverctx = null;
private SearchContext searchctx = null;
private void Form1_Load(object sender, EventArgs e)
{
  serverctx 
= ServerContext.GetContext("SharedServices1");
  searchctx 
= SearchContext.GetContext(serverctx);
}

列出已有的范围

通过传搜索上下文(SearchContext)给Scopes类的构造器来初始化一个Scopes对象。然后,可以通过循环遍历所有GetSharedScopes得到的范围。

Scopes scopes = new Scopes(searchctx);
foreach (Scope scope in scopes.GetSharedScopes())
{
TreeNode node 
= treeViewScopes.Nodes.Add(scope.Name);
}

获取相关的规则信息

规则决定了搜索范围。我们可以获取所有规则的细节。下面的代码展示了对象模型中提供的三种不同类型的规则。

foreach (TreeNode node in treeViewScopes.Nodes)
{
  
foreach (ScopeRule rule in scope.Rules)
  {
    
if (rule is PropertyQueryScopeRule)
    {
      PropertyQueryScopeRule prule 
= (PropertyQueryScopeRule)rule;
      TreeNode childnode 
= node.Nodes.Add("Property Query Rule: ");
      childnode.Text 
+= prule.Property.Name + " =  " + prule.Value;
    }
    
if (rule is AllContentScopeRule)
    {
      AllContentScopeRule arule 
= (AllContentScopeRule)rule;
      node.Nodes.Add(
"All Content Rule");
    }
    
if (rule is UrlScopeRule)
    {
      UrlScopeRule urule 
= (UrlScopeRule)rule;
      TreeNode childnode 
= node.Nodes.Add("URL Rule: ");
      childnode.Text 
+= urule.MatchingString;
    }
  }
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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