Test des fonctionnalités de requête personnalisée (FAST Search Server 2010 for SharePoint)
Vous pouvez tester les fonctionnalités associées aux requêtes à l’aide d’un simple script Windows PowerShell.
Dernière modification : jeudi 1 septembre 2011
Il est ainsi plus facile de résoudre les erreurs de configuration et de déterminer si l’erreur se trouve dans la configuration de la batterie FAST Search Server 2010 for SharePoint ou dans celle du composant WebPart.
S’applique à : SharePoint Server 2010
Script Windows PowerShell pour exécuter une requête avec l’interface KeywordQuery
Le script Windows PowerShell suivant exécute une requête via l’interface KeywordQuery et retourne les données du résultat de la requête sélectionnée. Le script est utile aux fins de test suivantes :
Vérifier qu’une propriété gérée contient le contenu attendu
Vérifier que les données correctes d’affinement de la requête sont retournées avec le résultat de la requête
Tester le classement personnalisé de pertinence
Tester les fonctionnalités de requête avancées lors de l’utilisation du langage FQL (FAST Query Language)
Vous pouvez enregistrer l’exemple de code suivant dans un fichier .ps1 et l’exécuter à partir de SharePoint 2010 Management Shell.
function usage($cmd) {
write-host ""
write-host "Simple FQL query tester."
write-host "Returns first matching items including content for a custom"
write-host "managed property, and associated query refinement data."
write-host "Useful for testing ranking and custom refiners."
write-host ""
write-host "usage: $cmd <URL> <Hits> <Property> <Query>"
write-host " <URL> - Specifies the URL for the query front-end"
write-host " web server of the SharePoint farm."
write-host " <Hits> - Number of hits to return."
write-host " <Property> - Specifies the name of a managed property."
write-host " Prints the content of the property and"
write-host " associated query refiner data."
write-host " Use lowercase only, even if the property name"
write-host " contains uppercase letters."
write-host " <Query> - The query string in FQL syntax."
write-host " Use single quotes if it contains spaces or"
write-host " double quotes."
exit
}
# argument checks
switch ($args.count) {
4 { $siteurl = $args[0]
$hits = $args[1]
$managedPropertyName = $args[2]
$query = $args[3] }
default { usage $myinvocation.mycommand.definition }
}
# The refiner has the same name as the managed property.
$refiner = $managedPropertyName
$site = new-Object Microsoft.SharePoint.SPSite $siteUrl
# Use the KeywordQuery interface:
$kq = new-Object Microsoft.Office.Server.Search.Query.KeywordQuery $site
$kq.ResultsProvider = [Microsoft.Office.Server.Search.Query.SearchProvider]::FASTSearch
$kq.QueryText = $query
$kq.EnableFQL = 1
# Return title, url and the new managed property:
$props = $kq.SelectProperties
$cnt = $props.Add($managedPropertyName)
$cnt = $props.Add("title")
$cnt = $props.Add("url")
$cnt = $props.Add("rank")
# Number of hits to return:
$kq.RowLimit = $hits
$kq.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults -bor [Microsoft.Office.Server.Search.Query.ResultType]::RefinementResults
$kq.Refiners = $refiner
$rtc = $kq.Execute()
Write-Host ""
Write-Host -ForegroundColor Yellow "Search Result data"
Write-Host ""
Write-Host "Backend time :" $rtc.DatabaseTime "ms"
Write-Host "Elapsed time :" $rtc.ElapsedTime "ms"
Write-Host "Query terms :" $rtc.QueryTerms
if ($rtc.Exists([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults))
{
$crt = $rtc.Item([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults)
$cdt = $crt.Table
Write-Host "Results returned :" $crt.Table.Rows.Count
Write-Host "Results total :" $crt.TotalRows
Write-Host ""
Write-Host -ForegroundColor Yellow "Managed Property Value"
$cdt.Rows | Format-Table -autosize -property title, url, rank, $managedPropertyName
}
if ($rtc.Exists([Microsoft.Office.Server.Search.Query.ResultType]::RefinementResults))
{
$rrt = $rtc.Item([Microsoft.Office.Server.Search.Query.ResultType]::RefinementResults)
$rdt = $rrt.Table
Write-Host ""
if($rdt.Rows.Count -gt 0)
{
Write-Host -ForegroundColor Yellow "Refinements"
$rdt.Rows | Format-Table -autosize -property RefinerName, RefinementName, RefinementToken, RefinementCount
}
else
{
write-Host -ForegroundColor Red "No refinements found for refiner " $refiner
}
}
Notes
Le script accepte les requêtes spécifiées par l’utilisation de la syntaxe FQL (FAST Query Language). Pour les filtres des propriétés de base (property:value) et les requêtes à un seul terme, la syntaxe est similaire aux requêtes que vous tapez dans une zone de requête SharePoint Server 2010.