SharePoint 2010 добавляет новую область поиска программно - PullRequest
1 голос
/ 17 января 2011

Вы можете добавить новую область поиска через powershell: New-SPEnterpriseSearchQueryScope -SearchApplication "Приложение-служба поиска" -Имя NewSearchScope -Описание "Область поиска нового поиска" -DisplayInAdminUI 1 – OwningSiteUrl http://servername/sites/

Но кто-нибудь знает пример кода, который показывает, как это сделать через OM? (используя пространство имен Microsoft.SharePoint.Administration, а не Microsoft.Office.Server.Search)

все указатели будут хороши

С уважением Mo

* Обновление ** игнорируя обработку ошибок / ведение журнала и т. д., это правильный способ сделать это:

SPSite siteColl = (SPSite) properties.Feature.Parent;

        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); 

а не ssp способ поиска контекста?

SearchContext searchctx = null;
searchctx = SearchContext.GetContext (web.Site);
Области действия = новые области (searchctx);
Scope currentScope = scopes.AllScopes.Create ( "CurrentScopeName", string.Empty, new Uri (web.Site.Url), true, string.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 (новый Uri (web.Url), «Выпадающий поиск»); group.Add (currentScope); group.Update (); * * тысяча тридцать-один scopes.StartCompilation (); * * тысяча тридцать два

scopes.Update();

1 Ответ

0 голосов
/ 23 февраля 2011

SearchContext помечен как устаревший в SharePoint 2010 Server, поэтому не рекомендуемый способ сделать это.

Также см. этот ответ по переполнению SharePoint .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...