Partager via


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.

Voir aussi

Concepts

Debugging Custom Item Processing