Использование API поисковых запросов SharePoint

Узнайте, какие API-интерфейсов запросов в SharePoint позволяют добавлять возможности поиска в пользовательские решения и приложения.

API-интерфейсы запросов SharePoint

Поиск в SharePoint предусматривает несколько интерфейсов API запроса, которые предоставляют множество способов доступа к результатам поиска, чтобы вы могли вернуть различные типы пользовательских решений.

Помимо серверной объектной модели, доступной в предыдущих версиях SharePoint, Поиск в SharePoint также предоставляет:

  • клиентскую объектную модель (CSOM);
  • объектную модель JavaScript (JSOM);
  • службу передачи репрезентативного состояния (REST).

В таблице 1 приведены API-интерфейсы, которые можно использовать для программируемых запросов, а также путь к исходному файлу на сервере.

Таблица 1. Поисковые интерфейсы API

Имя API Библиотека или схема классов и путь
.NET CSOM
Microsoft.SharePoint.Client.Search.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI
Silverlight CSOM
Microsoft.SharePoint.Client.Search.Silverlight.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS\ClientBin
JavaScript CSOM
SP.search.js
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS
Конечные точки службы REST
https://{site_url}/_api/search/query
https://{site_url}/_api/search/suggest
Серверная объектная модель
Microsoft.Office.Server.Search.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI

Согласно передовой практике в разработке SharePoint используйте клиентские интерфейсы API, когда это возможно. Клиентские интерфейсы API включают клиентские объектные модели .NET, Silverlight, Phone и JavaScript и службу REST. Дополнительные сведения об API в SharePoint и их использовании см. в статье Выбор правильного набора API в SharePoint.

Запросы с использованием клиентской объектной модели .NET

В Поиск в SharePoint реализована клиентская объектная модель, предоставляющая доступ к результатам поиска для разработки веб-приложений, локальных и мобильных приложений. CSOM Поиск в SharePoint основан на SharePoint CSOM. Поэтому клиентскому коду сначала нужно получить доступ к SharePoint CSOM, а затем к CSOM Поиск в SharePoint. Дополнительные сведения о CSOM SharePoint и классе ClientContext , который является точкой входа в CSOM, см. в разделе Завершение основных операций с помощью кода клиентской библиотеки SharePoint.

Управляемая CSOM .NET: получите экземпляр ClientContext (расположенный в пространстве имен Microsoft.SharePoint.Client в Microsoft.SharePoint.Client.dll). Затем используйте объектную модель в пространстве имен Microsoft.SharePoint.Client.Search.Query в Microsoft.SharePoint.Client.Search.dll.

Вот простой пример.

using (ClientContext clientContext = new ClientContext("http://<serverName>/sites/<siteCollectionPath>"))
{
  KeywordQuery keywordQuery = new KeywordQuery(clientContext);
  keywordQuery.QueryText = "SharePoint";
  SearchExecutor searchExecutor = new SearchExecutor(clientContext);
  ClientResult<ResultTableCollection> results = searchExecutor.ExecuteQuery(keywordQuery);
  clientContext.ExecuteQuery();
}

Чтобы скачать пример, изучите следующий пример кода, опубликованный Кори Ротом, специалистом MVP по SharePoint: SharePoint: поисковый запрос с помощью управляемой клиентской объектной модели.

Запросы с использованием клиентской объектной модели JavaScript

Для CSOM JavaScript получите экземпляр ClientContext , а затем используйте объектную модель в файле SP.Search.js.

Вот простой пример.

var clientContext = new SP.ClientContext("<serverRelativeUrl>");
var contextSite = clientContext.get_site();
var keywordQuery = new Microsoft.SharePoint.Client.Search.Query.KeywordQuery(clientContext);
keywordQuery.set_queryText("SharePoint");
var searchExecutor = new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(clientContext);
var results = searchExecutor.executeQuery(keywordQuery);
context.executeQueryAsync(onQuerySuccess, onQueryError);

Чтобы скачать пример, изучите следующий пример кода, опубликованный Кори Ротом, специалистом MVP по SharePoint: SharePoint: поисковый запрос с помощью управляемой клиентской объектной модели.

Отправка запросов с помощью службы REST

SharePoint предоставляет службу REST, которая позволяет удаленно выполнять запросы к службе поиска SharePoint из клиентских приложений, используя любые технологии, поддерживающие веб-запросы REST. Служба REST поиска предоставляет две конечных точки, query и suggest, и поддерживает операции GET и POST. Результаты возвращаются в формате XML или Нотация объектов JavaScript (JSON).

Ниже приведена точка доступа для службы: https://{site_url}/_api/search/ в качестве точки входа запроса используется корневой сайт. Вы также можете указать другой сайт в URL-адресе следующим образом: https://{site_url}/site/_api/search/. Префикс URL-адреса, /_api/search/ заданный по умолчанию, будет использовать источник результатов по умолчанию, определенный на этом сайте или в области, и правила запроса также будут контекстуальными для используемого URL-адреса, если для переопределения этого поведения не используются параметры. Если на сайте не настроена какая-либо конкретная конфигурация поиска, результаты будут одинаковыми для обоих способов доступа к службе.

Подробнее см. в статьях Общие сведения об API службы поиска REST для SharePoint и Получение предложений запроса с помощью службы Search REST.

Запрос с использованием серверной объектной модели .NET

Приложения, которые используют серверную объектную модель, должны выполняться непосредственно на сервере с SharePoint. Объектная модель сервера запросов поиска находится в пространстве имен Microsoft.Office.Server.Search.Query , расположенном в Microsoft.Office.Server.Search.dll.

Как и в SharePoint Server 2010, для определения запроса используется класс KeywordQuery , а затем вызывается метод Execute() для отправки запроса. В SharePoint метод Execute по-прежнему работает, но считается устаревшим, поэтому следует использовать класс SearchExecutor . Чтобы отправить запрос, вызовите метод ExecuteQuery() , передав экземпляр класса KeywordQuery в вызове.

Вот простой пример.

using (SPSite siteCollection = new SPSite("<serverRelativeUrl>"))
{
  KeywordQuery keywordQuery = new KeywordQuery(siteCollection);
  keywordQuery.QueryText = "SharePoint";
  SearchExecutor searchExecutor = new SearchExecutor();
  ResultTableCollection resultTableCollection = searchExecutor.ExecuteQuery(keywordQuery);
  resultTableCollection = resultTableCollection.Filter("TableType", KnownTableTypes.RelevantResults);
  ResultTable resultTable = resultTableCollection.FirstOrDefault();
  DataTable dataTable = resultTable.Table;
}

Чтобы скачать пример, изучите следующий пример кода, опубликованный Кори Ротом, специалистом MVP по SharePoint: SharePoint: поисковый запрос с помощью управляемой клиентской объектной модели.

См. также