検索範囲は、プログラムで簡単に管理できます。ここを参照してください。
機能の一部として検索範囲をリリースする必要があるときにこれを行いました。
正常に動作します。
以下は、上記の 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 を正しいスコープに追加するかどうかを指定できます。
これにより、ドキュメント レベルの「プロジェクト」プロパティを明示的に設定しなくても、ドキュメントをサイトに追加できるようになり、ドキュメントが特定の範囲内で検索から除外されないようにすることができます。
これに対する別の解決策は、各ドキュメントを反復処理し、プロジェクト名を指定するフィールドがまだ存在しない場合は追加し、サイトのプロパティと一致しない場合はそのプロジェクト名をドキュメントに設定することです。長時間実行されるタスクになる可能性があります。検索範囲を使用する方がはるかに良いと思います。