1

したがって、シナリオは次のとおりです。「要求に応じて」動的に作成される複数のSharepointサイトがあります。基本的に、新しいプロジェクトごとに新しいサイトがあります。ここで、すべてのサイトに、サイト名と等しいメタデータタグ値を持つコンテンツのみを検索する必要があることを示す検索句を追加します。簡単な例:BearとWolfの2つのサイト/プロジェクトがあります。Sharepoint Searchには、これらのサイトのすべてのドキュメント/リストなどのインデックスと、それらの共通アーカイブがあります。共通アーカイブ内のすべてのドキュメントには、「ProjectName」というプロパティがあります。Wolfチームに所属しているBillが、自分のプロジェクトサイト(Wolf)で「仕様」を検索したい場合、そのプロジェクトに関連するドキュメントのみを表示したいと考えています。では、すべてのドキュメントの「ProjectName」値が「Wolf」に設定されていることを確認するにはどうすればよいですか?

ここでスコープを使用できると思いますが、現在200までのサイトがあり、これは毎月増加しているため、手動で維持することはできません。スコープを自動化する比較的簡単な方法がある場合。優れた。

4

2 に答える 2

1

検索範囲は、プログラムで簡単に管理できます。ここを参照してください。

機能の一部として検索範囲をリリースする必要があるときにこれを行いました。

正常に動作します。

以下は、上記の MS 記事から抜粋したコードです。

private ServerContext serverctx = null;
private SearchContext searchctx = null;
serverctx = ServerContext.GetContext("SharedServices1");
searchctx = SearchContext.GetContext(serverctx);
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;
    }
  }
}

アップデート

各サイトにプロパティを追加し、そのプロパティを使用して、各 Web を追加する必要があるスコープを決定します。コンソール スタイルのアプリは、サーバー上の各 Web を通過し、スコープ ルールを追加して、各 URL を正しいスコープに追加するかどうかを指定できます。

これにより、ドキュメント レベルの「プロジェクト」プロパティを明示的に設定しなくても、ドキュメントをサイトに追加できるようになり、ドキュメントが特定の範囲内で検索から除外されないようにすることができます。

これに対する別の解決策は、各ドキュメントを反復処理し、プロジェクト名を指定するフィールドがまだ存在しない場合は追加し、サイトのプロパティと一致しない場合はそのプロジェクト名をドキュメントに設定することです。長時間実行されるタスクになる可能性があります。検索範囲を使用する方がはるかに良いと思います。

于 2008-11-19T20:34:58.830 に答える
1

これにはスコープを使用できますが、お勧めしません。href フィールドは、継続的なメンテナンスの負担なしで検索を完全に自動化するために必要なすべてを提供します。

検索を実行し、サイトの URL に基づいて、選択したサイトの外部にあるすべてのアイテムをフィルター処理して、返されるアイテムに必要なプレフィックスとして除外することができます。これが機能するのは、たとえばhttp://server/bearsにサイトがある場合、サイト内のすべてのアイテムの URL がhttp://server/bears/ ...の形式になるためです。

于 2008-12-29T05:46:10.413 に答える