Nel seguente esempio C# è mostrato una soluzione che ho concepito per creare da codice un Search Scope all'interno di uno Shared Service Provider di MOSS 2007 (Enterprise Edition) utilizzando l'Administration Object Model. Una volta creato tale Search Scope, è possibile chiaramente includervi delle Content Sources già presenti tramite delle regole di inclusione, specificabili tramite il metodo CreatePropertyQueryRule.
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;
...
SearchContext context;
using (SPSite site = new SPSite("http://")) { context = SearchContext.GetContext(site); }
Schema sspSchema = new Schema(context);
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
Scopes scopes = new Scopes(context);
ScopeCollection sspScopes = scopes.AllScopes;
Scope newScope = sspScopes.Create("Nome", "Descrizione",
null, // System.Uri object rappresentante l'URL del sito di appartenenza
true, // True per visualizzare lo Scope nello SSP Administrator UI
null, // Stringa che specifica la pagina alternativa dei risultati
ScopeCompilationType.AlwaysCompile);
// Inclusione di Content Sources nel Search Scope (Creazione delle regole di inclusione)
foreach (string ContentSourceName in YourContentSourcesNames)
{
newScope.Rules.CreatePropertyQueryRule(ScopeRuleFilterBehavior.Include,
properties["ContentSource"], // Ebbene sì... la Managed Property "ContentSource"
ContentSourceName);
}
// Update Scopes
scopes.StartCompilation();
...