Usar las API de consulta de búsqueda en SharePoint

Conozca las API de consulta disponibles en SharePoint que le permiten agregar funciones de búsqueda a las soluciones y aplicaciones personalizadas.

Las API de consulta de SharePoint

Buscar en SharePoint tiene varias API de consulta, lo que le ofrece muchas formas de obtener acceso a los resultados de búsqueda. De este modo, puede devolver resultados de búsqueda en una gran variedad de tipos de soluciones personalizadas.

Además del modelo de objetos de servidor que había en versiones anteriores de SharePoint, Buscar en SharePoint también ofrece lo siguiente:

  • Modelo de objetos de cliente (CSOM)
  • Modelo de objetos de JavaScript (JSOM)
  • Servicio Transferencia de estado representacional (REST)

En la tabla 1 se recogen las API que puede usar para programar consultas de búsqueda y la ruta de acceso al archivo de código fuente en el servidor.

Tabla 1. Las API de búsqueda

Nombre de la API Biblioteca de clases o esquema y ruta de acceso
.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
Puntos de conexión de servicios REST
https://{site_url}/_api/search/query
https://{site_url}/_api/search/suggest
Modelo de objetos de servidor
Microsoft.Office.Server.Search.dll
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\ISAPI

Como práctica recomendada para el desarrollo de SharePoint, use API de cliente siempre que pueda. Las API de cliente incluyen los modelos de objetos de cliente .NET, Silverlight, Phone y JavaScript, y el servicio REST. Para obtener más información sobre las API en SharePoint y cuándo usarlas, vea Elegir el conjunto de API adecuado en SharePoint.

Consultar usando el modelo de objetos de cliente .NET

La búsqueda de SharePoint incluye un modelo de objetos de cliente que permite el acceso a los resultados de la búsqueda de desarrollo en línea, local y móvil. La búsqueda en los CSOM de SharePoint está integrada en los CSOM de SharePoint. Por lo tanto, el código de cliente en primer lugar debe acceder a los CSOM de SharePoint y después acceder a la búsqueda en los CSOM de SharePoint. Para obtener más información sobre el CSOM de SharePoint y la clase ClientContext , que es el punto de entrada al CSOM, vea Completar operaciones básicas con código de biblioteca de cliente de SharePoint.

Para los CSOM administrados por .NET, obtenga una instancia ClientContext (ubicada en el espacio de nombres Microsoft.SharePoint.Client en Microsoft.SharePoint.Client.dll). A continuación, utilice el modelo de objetos en el espacio de nombres Microsoft.SharePoint.Client.Search.Query en Microsoft.SharePoint.Client.Search.dll.

Este es un ejemplo básico.

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

Para descargar un ejemplo, vea el siguiente ejemplo de código que ha publicado el MVP de SharePoint Corey Roth: SharePoint: Búsqueda de consultas con el modelo de objetos de cliente administrado.

Consultar usando el modelo de objetos de cliente JavaScript

Para el CSOM de JavaScript, obtenga una instancia de ClientContext y, a continuación, use el modelo de objetos en el archivo SP.Search.js.

Este es un ejemplo básico.

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

Para descargar un ejemplo, vea el siguiente ejemplo de código que ha publicado el MVP de SharePoint Corey Roth: SharePoint: Búsqueda de consultas con el modelo de objetos de cliente administrado.

Consultar con el servicio REST

SharePoint incluye un servicio REST que le permite ejecutar consultas de forma remota en el servicio de búsqueda de SharePoint desde aplicaciones de cliente usando una tecnología que admite las solicitudes web de REST. El servicio de búsqueda REST expone dos extremos, query y suggest, y admite las operaciones GET y POST. Los resultados se devuelven en formato XML o Notación de objetos de JavaScript (JSON).

El siguiente es el punto de acceso para el servicio: https://{site_url}/_api/search/ usar el sitio raíz como punto de entrada de consulta. También puede especificar otro sitio en la dirección URL, como se indica a continuación: https://{site_url}/site/_api/search/. El prefijo de dirección URL anterior /_api/search/ usará el origen de resultados predeterminado definido en ese sitio o ámbito y las reglas de consulta también serán contextuales con la dirección URL usada, a menos que se usen parámetros para invalidar este comportamiento. A menos que se realice una configuración de búsqueda específica en un sitio, los resultados son los mismos para ambas maneras de acceder al servicio.

Vea Información general de la API de REST de SharePoint Search y Recuperación de sugerencias de consulta con el servicio REST de búsqueda para más información.

Consultar usando el modelo de objetos de servidor .NET

Las aplicaciones que usan el modelo de objetos de servidor se deben ejecutar directamente en un servidor que esté ejecutando SharePoint. El modelo de objetos del servidor de consultas de búsqueda reside en el espacio de nombres Microsoft.Office.Server.Search.Query , que se encuentra en Microsoft.Office.Server.Search.dll.

Como en SharePoint Server 2010, se usa la clase KeywordQuery para definir la consulta y, a continuación, se llama al método Execute() para enviar la consulta. En SharePoint, el método Execute está obsoleto y, aunque aún funcione, hay que usar la clase SearchExecutor . Para enviar la consulta, llame al método ExecuteQuery() y pase la instancia de la clase KeywordQuery en la llamada.

Este es un ejemplo básico.

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

Para descargar un ejemplo, vea el siguiente ejemplo de código que ha publicado el MVP de SharePoint Corey Roth: SharePoint: Búsqueda de consultas con el modelo de objetos de cliente administrado.

Consulte también