2011-01-17 9 views
1

Sie können einen neuen Suchbereich über Powershell hinzufügen: New-SPEnterpriseSearchQueryScope -SearchApplication "Search Service Application" -Name NewSearchScope -Beschreibung "Neue Suche Prüfumfang" -DisplayInAdminUI 1-OwningSiteUrl http://servername/sites/Sharepoint 2010 fügen Sie einen neuen Suchbereich programmatisch

Aber weiß jemand von Beispielcode, der zeigt, wie man dies über OM macht? (Unter Verwendung des Microsoft.SharePoint.Administration Namespace statt Microsoft.Office.Server.Search)

alle Hinweise groß sein

Grüße Mo

* Update * * Fehlerbehandlung/Protokollierung usw. zu ignorieren, ist dies ein gültiger Weg, dies zu tun:

SPSite siteColl = (SPSite) properties.Feature.P arent;

 Microsoft.SharePoint.Administration.SPServiceApplication spserviceapp = siteColl.SearchServiceInstance.Service.Applications["Search Service Application"]; 

     SearchServiceApplication searchserviceapp = (SearchServiceApplication)spserviceapp; 

     ScopeInfo scopeInfo = new ScopeInfo(); 
     scopeInfo.Name = "Scope test1"; 
     scopeInfo.Description = "Scope test1"; 
     scopeInfo.DisplayInAdminUI = true; 
     scopeInfo.CompilationType = ScopeCompilationType.AlwaysCompile; 
     scopeInfo.CompilationState = ScopeCompilationState.NeedsCompile;    
     int statusCode = 0; 
     int scopeId = searchserviceapp.AddScope(scopeInfo, out statusCode); 
     if (scopeId > 0) 
     { 
      RuleInfo ruleInfo; 
      ruleInfo = new RuleInfo(); 
      ruleInfo.FilterBehavior = ScopeRuleFilterBehavior.Include; 
      ruleInfo.RuleType = ScopeRuleType.AllContent; 
      int ruleId = searchserviceapp.AddRule(ruleInfo, scopeId); 
     } 
     searchserviceapp.Update(true); 

eher dann die ssp Weg von searchcontext?

SearchContext searchctx = null;
searchctx = SearchContext.GetContext (web.Site);
Scopes scopes = neue Scopes (searchctx);
Bereich currentScope = scopes.AllScopes.Create ( "CurrentScopeName", Zeichenfolge.Empty, neue Uri (web.Site.Url), true, Zeichenfolge.Format ("{0} /Search/Pages/Results.aspx" , web.Site.Url), ScopeCompilationType.AlwaysCompile);
currentScope.Update();
currentScope.Rules.CreateUrlRule (ScopeRuleFilterBehavior.Include, UrlScopeRuleType.Domain, web.Site.Url);
ScopeDisplayGroup group = scopes.GetDisplayGroup (neues Uri (web.Url), "Suchdropdown"); group.Add (currentScope); group.Update();
scopes.StartCompilation();

scopes.Update(); 

Antwort

Verwandte Themen