Я только что установил среду тестирования с SharePoint 2010 и FAST Search Server в качестве приложения-службы поиска по умолчанию. Начал с некоторого тестового контента и выполнил несколько поисков с использованием std. Графический интерфейс SharePoint - пока все хорошо.
Теперь я хочу выполнить более сложный запрос, используя класс Microsoft.Office.Server.Search.Query.FullTextSqlQuery, и все становится неприятно. Я получаю исключение при попытке получить доступ к объекту ResultTableCollection, возвращенному в результате поиска.
Это скрипт PowerShell, который я пытаюсь запустить:
<code>$site = New-Object Microsoft.SharePoint.SPSite "<a href="http://moss" rel="nofollow noreferrer">http://moss</a>"
$kq = New-Object Microsoft.Office.Server.Search.Query.FullTextSqlQuery $site
$kq.ResultTypes = [Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults
$kq.RowLimit = 5
$kq.QueryText = "SELECT Title, Url"
$resultTableCollection = $kq.Execute()
$relResultTable = $resultTableCollection.Item([Microsoft.Office.Server.Search.Query.ResultType]::RelevantResults)
И это исключение (брошенное последней строкой кода выше):
Указанный ключ отсутствует в словаре.
System.Collections.Generic.KeyNotFoundException at
System.ThrowHelper.ThrowKeyNotFoundException () в
System.Collections.Generic.Dictionary`2.get_Item (ключ TKey) в
Microsoft.Office.Server.Search.Query.ResultTableCollection.get_Item (ResultType requiredType)
Тот же самый скрипт отлично работает, когда я выполняю поиск с использованием std. Приложение службы поиска SharePoint. Я нашел один связанный пост здесь , в котором говорилось, что усечение безопасности результатов запроса может быть источником моих проблем. Однако я не понимаю, как это должно быть уместно в моей среде, поскольку служебная учетная запись моего приложения-службы FAST определенно имеет достаточные разрешения для AD.
Есть предложения?