Использование 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: поисковый запрос с помощью управляемой клиентской объектной модели.