Verwenden der SharePoint-Suchabfrage-APIs
In diesem Artikel erhalten Sie Informationen zu den in SharePoint verfügbaren Abfrage-APIs, die es Ihnen ermöglichen, benutzerdefinierten Lösungen und Anwendungen Suchfunktionen hinzuzufügen.
SharePoint-Abfrage-APIs
Suche in SharePoint stellt verschiedene Abfrage-APIs zur Verfügung und bietet Ihnen damit unzählige Wege für den Zugriff auf Suchergebnisse. Suchergebnisse können somit in einer Vielzahl von benutzerdefinierten Lösungstypen zurückgegeben werden.
Neben dem Serverobjektmodell, das in früheren Versionen von SharePoint verfügbar war, bietet die Suche in SharePoint darüber hinaus Folgendes:
- Clientobjektmodell (CSOM)
- JavaScript-Objektmodell (JSOM)
- REST (Representational State Transfer)-Dienst
In Tabelle 1 sind die APIs aufgeführt, die Sie zum Programmieren von Suchabfragen verwenden können, sowie der Pfad zu der Quelldatei auf dem Server.
Tabelle 1. Such-APIs
API-Name | Klassenbibliothek oder Schema und Pfad |
---|---|
.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-Dienstendpunkte |
https://{site_url}/_api/search/query https://{site_url}/_api/search/suggest |
Serverobjektmodell |
Microsoft.Office.Server.Search.dll %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI |
Verwenden Sie als bewährtes Verfahren bei der SharePoint-Entwicklung möglichst Client-APIs. Client-APIs enthalten die .NET-, Silverlight-, Phone- und JavaScript-Clientobjektmodelle und den REST-Dienst. Weitere Informationen zu den APIs in SharePoint und zu deren Verwendung finden Sie unter Auswählen des richtigen API-Satzes in SharePoint.
Abfrage mithilfe des .NET-Clientobjektmodells
Die Suche in SharePoint umfasst ein Clientobjektmodell, das den Zugriff auf die Suchergebnisse für die Online-, lokale und mobile Entwicklung ermöglicht. Die Suche in SharePoint CSOM basiert auf dem SharePoint CSOM. Daher muss Ihr Clientcode zuerst auf das SharePoint CSOM und dann auf die Suche in SharePoint CSOM zugreifen. Weitere Informationen zum SharePoint CSOM und zur ClientContext-Klasse, die der Einstiegspunkt für das CSOM ist, finden Sie unter Abschließen grundlegender Vorgänge mit SharePoint-Clientbibliothekscode.
Rufen Sie für CSOM, das von .NET verwaltet wird, eine ClientContext-Instanz ab (diese befindet sich Microsoft.SharePoint.Client-Namespace in der Microsoft.SharePoint.Client.dll). Verwenden Sie dann das Objektmodell im Microsoft.SharePoint.Client.Search.Query-Namespace in der Microsoft.SharePoint.Client.Search.dll.
Nachfolgend finden Sie ein allgemeines Beispiel.
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();
}
Um ein Beispiel herunterzuladen, sehen Sie sich das folgende Codebeispiel an, das von Microsoft Office SharePoint Online MVP Corey Roth veröffentlicht wurde: Microsoft Office SharePoint Online: Abfragesuche mit dem verwalteten Clientobjektmodell.
Abfrage mithilfe des JavaScript-Clientobjektmodells
Rufen Sie für das JavaScript-CSOM eine ClientContext-Instanz ab, und verwenden Sie dann das Objektmodell in der SP.Search.js-Datei.
Nachfolgend finden Sie ein allgemeines Beispiel.
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);
Um ein Beispiel herunterzuladen, sehen Sie sich das folgende Codebeispiel an, das von Microsoft Office SharePoint Online MVP Corey Roth veröffentlicht wurde: Microsoft Office SharePoint Online: Abfragesuche mit dem verwalteten Clientobjektmodell.
Abfrage mithilfe des REST-Diensts
SharePoint enthält einen REST-Dienst, mit dem Sie Remoteabfragen für den SharePoint-Suchdienst in Clientanwendungen mit jeder Technologie, die REST-Webanforderungen unterstützt, durchführen können. Der REST-Suchdienst macht zwei Endpunkte verfügbar, query und suggest, und unterstützt die Vorgänge GET und POST. Die Ergebnisse werden im XML- oder im JavaScript Object Notation (JSON)-Format zurückgegeben.
Es folgt der Zugriffspunkt für den Dienst: https://{site_url}/_api/search/
Verwenden der Stammwebsite als Abfrageeinstiegspunkt. Sie können auch eine andere Website in der URL wie folgt angeben: https://{site_url}/site/_api/search/
. Das zuvor verwendete URL-Präfix /_api/search/
verwendet die standardbasierte Ergebnisquelle, die für diese Website bzw. diesen Bereich definiert ist, und Abfrageregeln sind auch kontextbezogen für die verwendete URL, es sei denn, parameter werden verwendet, um dieses Verhalten zu überschreiben. Sofern keine bestimmte Suchkonfiguration an einem Standort vorgenommen wird, sind die Ergebnisse für beide Arten des Zugriffs auf den Dienst identisch.
Weitere Informationen finden Sie unter Übersicht über die REST-API der Microsoft Office SharePoint Online-Suche und Abrufen von Abfragevorschlägen mithilfe des Diensts „REST durchsuchen“.
Abfrage mithilfe des NET-Serverobjektmodells
Anwendungen, die das Serverobjektmodell nutzen, müssen direkt auf einem Server mit SharePoint ausgeführt werden. Das Suchabfrageserverobjektmodell befindet sich im Microsoft.Office.Server.Search.Query-Namespace , der sich in Microsoft.Office.Server.Search.dll befindet.
Wie in SharePoint Server 2010 verwenden Sie die KeywordQuery-Klasse zum Definieren der Abfrage und haben dann die Execute() -Methode aufgerufen, um die Abfrage zu übermitteln. In SharePoint ist die Execute-Methode veraltet, und obwohl sie weiterhin funktioniert, sollten Sie stattdessen die SearchExecutor-Klasse verwenden. Um die Abfrage zu übermitteln, rufen Sie die ExecuteQuery() -Methode auf, und übergeben Sie dabei die Instanz der KeywordQuery-Klasse im Aufruf.
Nachfolgend finden Sie ein allgemeines Beispiel.
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;
}
Um ein Beispiel herunterzuladen, sehen Sie sich das folgende Codebeispiel an, das von Microsoft Office SharePoint Online MVP Corey Roth veröffentlicht wurde: Microsoft Office SharePoint Online: Abfragesuche mit dem verwalteten Clientobjektmodell.