FAST Search Keyword Query with Scope using Powershell

Just wanted to share the following script of mine. Hope it helps.

[sourcecode language=”powershell”]


#-scope : The search scope that you defined in Central Admin

#-keyword: Keyword to search.

[string]$scope = $null,
[string]$keyword = $null

if($keyword -eq "")
Write-Host "You must key in the Keyword"

$proxy = Get-SPEnterpriseSearchServiceApplicationProxy
$query = New-Object Microsoft.Office.Server.Search.Query.KeywordQuery($proxy)
$query.QueryText = $keyword
if($scope -ne $null)
$query.HiddenConstraints = "scope:`"" +$scope + "`""

#Add any properties you would like to return here
$query.SelectProperties.Add("title") | Out-Null
$query.SelectProperties.Add("url") | Out-Null

$query.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults
$query.RowLimit = 100
$query.ResultsProvider = [Microsoft.Office.Server.Search.Query.SearchProvider]::FASTSearch

Write-Host "Executing keyword search…"
$results = $query.Execute()

$relevants = $results["RelevantResults"]
#Or you can use [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults instead
Write-Host "Total " $relevants.TotalRows " results"
Write-Host ""


Do note that this script is trying to make FAST Search query. If you are using SharePoint Enterprise Search, please change the ResultsProvider to SharePointSearch

Note also this is not FQL, i tried using “$query.EnableFQL = $true” and the scope didn’t work.

Leave a Reply

Your email address will not be published. Required fields are marked *