Я использую объектную модель на стороне сервера, чтобы попытаться вызвать службу поиска (для запроса к поисковому индексу). Код выглядит так:
using (SPSite siteCollection = new SPSite(http://ValidSharePointSite))
{
KeywordQuery keywordQuery = new KeywordQuery(siteCollection);
keywordQuery.QueryText = "search text";
SearchExecutor searchExecutor = new SearchExecutor();
ResultTableCollection resultTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
resultTableCollection.Filter("Pages", KnownTableTypes.RelevantResults);
ResultTable resultTable = resultTableCollection.FirstOrDefault();
DataTable dataTable = resultTable.Table;
}
Когда он попадает на строку, где создается объект KeywordQuery, возникает следующая ошибка: ваш поиск не может быть завершен, потому что нет службы поиска
Я пробовал код на двух разных серверах /envs SharePoint, и такая же проблема возникает. В журналах есть дополнительная информация о невозможности найти службу HostController. Какие-либо предложения?
Здесь решение: http://coder87.wordpress.com/2013/03/27/keywordquery-doesnt-work-or-confusion-between-search-namespaces/#comment-484
Необходимо использовать Microsoft.Office.Server.Search.Query вместо Microsoft.SharePoint.Search.Query;
Убедитесь, что служба поиска включена и не указана ошибка. Также через Search REST API в браузере вы можете проверить правильность работы поиска