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é.