カスタム クエリ機能のテスト (FAST Search Server 2010 for SharePoint)
単純な Windows PowerShell スクリプトを使用して、クエリ関連機能をテストできます。
最終更新日: 2011年9月1日
適用対象: SharePoint Server 2010
これにより、構成エラーのトラブルシューティングと、エラーが FAST Search Server 2010 for SharePoint ファーム構成と Web パーツ構成のどちらで発生しているかの判断が容易になります。
適用先: Microsoft FAST Search Server 2010 for SharePoint
KeywordQuery インターフェイスを使用してクエリを実行する Windows PowerShell スクリプト
次の Windows PowerShell スクリプトでは、KeywordQuery インターフェイスを介してクエリを実行し、選択されたクエリ結果データを返します。スクリプトは、以下のことをテストする場合に便利です。
管理プロパティに期待されるコンテンツが含まれていることの確認
正しいクエリ絞り込みデータがクエリ結果とともに返されることの確認
カスタムの関連性ランク付けのテスト
FAST クエリ言語 (FQL) 使用時の、高度なクエリ機能のテスト
次のコード例を .ps1 ファイルに保存し、SharePoint 2010 管理シェルから実行できます。
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
}
}
注意
スクリプトは、FAST クエリ言語 (FQL) 構文を使用して指定されたクエリを受け取ります。基本的なプロパティ フィルター (property:value) および 1 つの用語クエリの場合、構文は SharePoint Server 2010 クエリ ボックスに入力するクエリと同様です。