Criar Resultados Promovidos com PowerShell (Best Bets) no SharePoint 2013


Olá SharePointers,

Neste post quero mostrar como criar resultados promovidos no SharePoint 2013 com PowerShell. Fiz um post a uns dias atrás de como obter os resultados promovidos e me pediram para criar um para mostrar como criar.

Este script cria os resultados promovidos em nível de site collection.

$siteUrl = “http://sitecollectionurl”
$resultSourceName = “Local SharePoint Results”

$web = Get-SPWeb $siteUrl
$ssa = Get-SPEnterpriseSearchServiceApplication
$queryRuleManager = New-Object Microsoft.Office.Server.Search.Query.Rules.QueryRuleManager($ssa)
$site = Get-SPSite $siteUrl
$searchOwner = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectOwner -ArgumentList @([Microsoft.Office.Server.Search.Administration.SearchObjectLevel]::SPSite,$site.RootWeb)
$searchObjectFilter = New-Object Microsoft.Office.Server.Search.Administration.SearchObjectFilter($searchOwner)
$federationManager = New-Object Microsoft.Office.Server.Search.Administration.Query.FederationManager($ssa)
$resultSource = $federationManager.GetSourceByName($resultSourceName,$searchOwner)
$queryRules = $queryRuleManager.GetQueryRules($searchObjectFilter)
$promotedResultCollection = $ssa.GetBestBets($searchObjectFilter)

function CreatePromotedResult([string]$title, [string]$url, [string]$description)
{
Write-Host “Creating Promoted Result ..” $title
$queryRule = $queryRules.CreateQueryRule($title,$null,$null,$true)
[string[]]$keywords = $title.split(‘ ‘)
$keywords += $title
$keywordCondition = $queryRule.QueryConditions.CreateKeywordCondition($keywords,$false)
$queryAction = $queryRule.CreateQueryAction([Microsoft.Office.Server.Search.Query.Rules.QueryActionType]::AssignBestBet)
#PromotedResult = BestBet
$promotedResult = $promotedResultCollection.CreateBestBet($title, $url, $description, $false)
#Map the best bet to the query action
$queryAction.BestBetIds.Add($promotedResult.Id);
#Update the query rule
$queryRule.Update()
$queryRule = $null
Write-Host “Created Promoted Result for” $title “Finished”
}

function DeleteAllPromotedResult([string]$ssaName)
{
$customQueryRules = $queryRuleManager.GetQueryRules($searchObjectFilter) | ?{$_.Owner.Level -ne $ssaName}
Write-Host “There are” $customQueryRules.Count “Customised Query Rules”

foreach($qryRule in $customQueryRules) {
Write-Host “Deleting Query Rule ” $qryRule.DisplayName
$ssa.RemoveQueryRule($qryRule)
}
$ssa.Update()
}

clear
CreatePromotedResult “Carlos Citrangulo” “http://carloscitrangulo.com.br” “Blog do Carlos Citrangulo”
CreatePromotedResult “Microsoft” “http://www.microsoft.com” “Portal Microsoft”

#DeleteAllPromotedResult “SSA”

 

Abraços,

Carlos Citrangulo

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: