Utilisation des API de requête dans la recherche SharePoint

Découvrez les API de requête disponibles dans SharePoint qui vous permettent d'ajouter une fonctionnalité de recherche aux solutions et applications personnalisées.

API de requête SharePoint

Recherche dans SharePoint fournit plusieurs API de requête, vous offrant ainsi de nombreux moyens d'accéder aux résultats de recherche, afin que vous puissiez renvoyer les résultats de recherche dans une variété de types de solutions personnalisées.

Outre le modèle objet serveur qui était disponible dans les versions précédentes de SharePoint, Recherche dans SharePoint fournit également les éléments suivants :

  • Modèle objet client (CSOM)
  • Modèle objet JavaScript (JSOM)
  • Service REST (Representational State Transfer)

Le tableau 1 présente les API que vous pouvez utiliser pour programmer des requêtes de recherche et le chemin d'accès au fichier source sur le serveur.

Tableau 1. API de recherche

Nom de l'API Bibliothèque de classes ou schéma et chemin d'accès
CSOM .NET
Microsoft.SharePoint.Client.Search.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI
CSOM Silverlight
Microsoft.SharePoint.Client.Search.Silverlight.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS\ClientBin
CSOM JavaScript
SP.search.js
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\LAYOUTS
Points de terminaison de service REST
https://{site_url}/_api/search/query
https://{site_url}/_api/search/suggest
Modèle objet serveur
Microsoft.Office.Server.Search.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI

Il est vivement recommandé d'utiliser des API client lorsque vous le pouvez pour le développement SharePoint. Les API client comprennent les modèles objets clients .NET, Silverlight, Phone et JavaScript, ainsi que le service REST. Pour plus d’informations sur les API dans SharePoint et quand les utiliser, voir Choisir l’ensemble d’API approprié dans SharePoint.

Requête à l'aide du modèle objet client .NET

La recherche dans SharePoint inclut un modèle objet client qui permet l’accès aux résultats de recherche pour le développement en ligne, en local et mobile. La recherche dans le modèle CSOM SharePoint est construite sur le modèle CSOM SharePoint. Par conséquent, le code client doit d’abord accéder au modèle CSOM SharePoint, puis accéder à la recherche dans le modèle CSOM SharePoint. Pour plus d’informations sur le modèle CSOM SharePoint et la classe ClientContext, à savoir le point d’entrée du modèle CSOM, reportez-vous à l’article Effectuer des opérations de base avec du code de bibliothèque de client dans SharePoint.

Pour le modèle CSOM géré .NET, obtenez une instance ClientContext (située dans l’espace de noms Microsoft.SharePoint.Client dans Microsoft.SharePoint.Client.dll). Ensuite, utilisez le modèle objet dans l’espace de noms Microsoft.SharePoint.Client.Search.Query dans Microsoft.SharePoint.Client.Search.dll.

Voici un exemple de base.

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();
}

Pour télécharger un exemple, consultez l’exemple de code suivant publié par le MVP SharePoint Corey Roth : SharePoint : requête de recherche avec le modèle objet client géré.

Requête à l'aide du modèle objet client JavaScript

Pour le modèle CSOM JavaScript, obtenez une instance ClientContext , puis utilisez le modèle objet dans le fichier SP.Search.js.

Voici un exemple de base.

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);

Pour télécharger un exemple, consultez l’exemple de code suivant publié par le MVP SharePoint Corey Roth : SharePoint : requête de recherche avec le modèle objet client géré.

Requête à l’aide du service REST

SharePoint inclut un service REST qui vous permet d'exécuter des requêtes à distance sur le service de recherche SharePoint à partir d'applications clientes à l'aide d'une technologie prenant en charge les requêtes web REST. Le service REST de recherche expose deux points de terminaison, query et suggest, et prend en charge les opérations GET et POST. Les résultats sont renvoyés au format XML ou JavaScript Object Notation (JSON).

Voici le point d’accès pour le service : https://{site_url}/_api/search/ en utilisant le site racine comme point d’entrée de requête. Vous pouvez également spécifier un autre site dans l’URL, comme suit : https://{site_url}/site/_api/search/. Le préfixe d’URL précédent /_api/search/ utilise la source de résultats par défaut définie au niveau de ce site/étendue et les règles de requête seront également contextuelles par rapport à l’URL utilisée, sauf si des paramètres sont utilisés pour remplacer ce comportement. Sauf si une configuration de recherche spécifique est effectuée sur un site, les résultats sont les mêmes pour les deux façons d’accéder au service.

Pour plus d’informations, voir Vue d’ensemble de l’API REST de recherche SharePoint et Récupération de suggestions de requête à l’aide du service de recherche REST.

Requête à l’aide du modèle objet serveur .NET

Les applications qui utilisent le modèle objet serveur doivent être exécutées directement sur un serveur qui exécute SharePoint. Le modèle objet serveur de requête de recherche réside dans l’espace de noms Microsoft.Office.Server.Search.Query , qui se trouve dans Microsoft.Office.Server.Search.dll.

Comme dans SharePoint Server 2010, vous utilisez la classe KeywordQuery pour définir la requête, puis vous appelez la méthode Execute() pour envoyer la requête. Dans SharePoint, la méthode Execute est obsolète, et même si elle fonctionne toujours, nous vous recommandons d'utiliser la classe SearchExecutor à la place. Pour soumettre la requête, appelez la méthode ExecuteQuery() , en transmettant l'instance de la classe KeywordQuery dans l'appel.

Voici un exemple de base.

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;
}

Pour télécharger un exemple, consultez l’exemple de code suivant publié par le MVP SharePoint Corey Roth : SharePoint : requête de recherche avec le modèle objet client géré.

Voir aussi