Compartir a través de


Personalizaciones de búsqueda de SharePoint

Nota:

La página siguiente se relaciona con los sitios clásicos de SharePoint Online. Estas características no se admiten en sitios modernos de SharePoint. Para implementar una funcionalidad similar en los elementos web de búsqueda modernos de SharePoint, revise los elementos web de búsqueda modernos PnP en: https://microsoft-search.github.io/pnp-modern-search/

Cree escenarios de búsqueda personalizados de SharePoint y SharePoint Online mediante un directorio de sitio basado en búsqueda, resultados de búsqueda personalizados o portabilidad de la configuración de búsqueda.

Directorio de sitio basado en búsqueda

La búsqueda de SharePoint le permite crear un directorio de sitio basado en búsqueda sin escribir ningún código personalizado.

Para crear un directorio de sitio:

  1. Cree las plantillas para mostrar del directorio de sitio.
  2. Defina el tipo de resultado del directorio de sitio.
  3. Cree la página de resultados.
  4. Edite las propiedades del elemento web Resultados.

Nota:

El procedimiento siguiente usa las plantillas de presentación relacionadas con el sitio sin modificaciones. Si desea cambiar la forma en que se muestran los resultados del directorio del sitio, modifique las plantillas para mostrar que cree.

Para crear las plantillas de visualización del directorio de sitio

  1. Abra la unidad de red asignada a la Galería de páginas maestras. Para obtener más información, vea Asignación de una unidad de red a la Galería de páginas maestras de SharePoint.

  2. Realice copias de los archivos HTML de plantilla para mostrar que mejor asignen lo que intenta hacer. En el escenario de directorio del sitio, se Item_Site.html y Item_Site_HoverPanel.html. Ambos archivos se encuentran en la \Display Templates\Search carpeta de la unidad de red asignada.

  3. Cambie el nombre de las copias que realizó de los archivos Item_SiteDirectory.html y Item_SiteDirectory_HoverPanel.html como se muestra.

    Plantillas de visualización del directorio de sitios

  4. Abra el archivo Item_SiteDirectory.html y realice los cambios siguientes:

    • Cambie el valor de etiqueta <title> de Elemento de sitio a Directorio del sitio.
    • Cambie la primera <div> etiqueta después de la etiqueta de apertura <body> de <div id="Item_Site"> a <div id="Item_SiteDirectory">.
    • Cambie el nombre de archivo javaScript de la plantilla para mostrar del panel de puntero de var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Site_HoverPanel.js"; a var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_SiteDirectory_HoverPanel.js";.
  5. Abra el archivo Item_SiteDirectory_HoverPanel.html y realice los cambios siguientes:

    • Cambie la <div> etiqueta que sigue a la etiqueta de apertura <body> de <title>Site Hover Panel Test</title> a <title>Site Directory Hover Panel</title>.
    • Cambie la <title> etiqueta de <div id="Item_Site_HoverPanel"> a <div id="Item_SiteDirectory_HoverPanel">.

Para definir el tipo de resultado del directorio de sitio

  1. Vaya a Site SettingsSearchResult Types (Tipos de resultados debúsqueda> de configuración > del sitio) y elija New Result Type (Nuevo tipo de resultado).

  2. Asigne al nuevo tipo de resultado el nombre Directorio de sitio básico.

  3. En el cuadro ¿Cómo deben ser estos resultados? , seleccione Directorio del sitio.

    Ejemplo de configuración de resultados del sitio

  4. Seleccione Guardar.

Para crear la página de resultados

  1. En el menú Configuración del sitio , seleccione Contenido del sitio.
  2. Seleccione Páginas.
  3. En la biblioteca de páginas, seleccione Archivos> Nuevapáginade documento>.
  4. En la página Crear página , especifique Directorio del sitio para Título y sitedirectory para Nombre de dirección URL.
  5. Elija Crear.

Para editar las propiedades del elemento web Resultados

  1. En la página Directorio del sitio, elija Páginade ediciónde configuración>.

  2. En el elemento web Resultados de búsqueda, elija el menú Elemento web y, a continuación, elija Editar elemento web.

    Menú de elementos web

  3. En el panel de herramientas del elemento web, elija Cambiar consulta para abrir el Generador de consultas.

  4. En el campo Texto de consulta , escriba lo siguiente: ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>

  5. Elija Probar consulta para confirmar que la sintaxis es correcta. El panel Vista previa de resultados de búsqueda debe mostrar subsitios dentro del sitio especificado para la ruta de acceso en el texto consulta.

    Generador de consultas del elemento web de resultados de la búsqueda

  6. Elija Aceptar para cerrar el Generador de consultas.

  7. En Plantillas para mostrar, seleccione Usar tipos de resultado para mostrar elementos.

  8. Seleccione Directorio de sitio básico en la lista Tipo de resultado para elemento .

  9. En la sección Apariencia , cambie el Título a Sitios a los que tengo acceso.

  10. Elija Aceptar para guardar los cambios en el elemento web y cerrar el panel de herramientas de elementos web.

    En la ilustración siguiente se muestra un ejemplo de una página de directorio de sitio basada en búsqueda.

    Ejemplo de directorio del sitio basado en la búsqueda de Contoso

Resultados de búsqueda personalizados

La búsqueda personalizada se realiza cuando se muestran los resultados de búsqueda dirigidos al usuario que envía la solicitud de búsqueda. En esta sección se describen algunos escenarios para la búsqueda personalizada y cómo se pueden implementar.

Escenario de noticias

En este escenario, creará un complemento de búsqueda que muestre contenido relevante, como noticias y eventos, dirigido al usuario.

Escenario de búsqueda personalizada de noticias

Escenario de búsqueda personalizada de noticias

Para implementar el escenario de noticias, use el elemento web Resultados de búsqueda de SharePoint y las plantillas de presentación predeterminadas para mostrar la información de noticias, incluidos el título, la descripción y la imagen de acumulación. Muestra los diez primeros artículos de noticias. Cuando el usuario elige la imagen de acumulación, el título o el vínculo Leer más, se carga la página del artículo de noticias.

Como alternativa, puede crear un complemento de búsqueda mediante la API de consulta (CSOM o REST). Puede hacer que el número de elementos de noticias que se mostrarán se pueda configurar mediante las propiedades del complemento de búsqueda.

Otra opción es usar la API de consulta para agregar el código de la API de consulta que recupera los resultados de la búsqueda directamente al diseño de página.

Para mostrar la información de noticias y eventos específica del usuario

  1. Modifique la consulta para filtrar los resultados de noticias y eventos en función de las propiedades del perfil de usuario, como la unidad de negocio, la región y el idioma.
  2. Recupere las propiedades Title, Description, rollup image y URL para los elementos de noticias o eventos.
  3. Implemente la lógica de ordenación para las noticias y eventos combinados basados en la propiedad LastModifiedDate .

Escenario de próximos eventos

En este escenario, el complemento de búsqueda muestra eventos relevantes destinados al usuario.

Escenario de búsqueda personalizada de próximos eventos

Escenario de búsqueda personalizada de próximos eventos

Para implementar este escenario, puede configurar el elemento web Resultados de búsqueda de SharePoint para cambiar la consulta para recuperar solo la información de eventos próximos. Para ello, especifique ContentClass:STS_ListItem_Events para el texto de consulta del elemento web. Para cambiar la forma en que se muestran los resultados del evento, cree plantillas de presentación personalizadas para representar la información del evento.

Puede modificar la plantilla de presentación de elementos para que, cuando el usuario elija la imagen, el título o el vínculo Leer más, se cargue la página de información del evento. También puede modificar la plantilla de visualización de controles para que, cuando el usuario elija Ver más, los diez resultados del evento siguientes se muestren en el elemento web.

También puede crear un complemento de búsqueda que use la API de consulta para recuperar los resultados del evento. Puede configurar el complemento de búsqueda para mostrar, de forma predeterminada, solo diez de los próximos eventos más recientes, pero hacer que esta configuración se pueda configurar a través de las propiedades del complemento de búsqueda.

En este escenario, el complemento de búsqueda muestra los resultados de la búsqueda como contenido destacado dirigido a los usuarios en lugares como intranet corporativa y páginas de aterrizaje divisionales. Puede implementarlo con un elemento de complemento que contiene un complemento jQuery con HTML que usa el servicio REST de búsqueda o el CSOM de consulta para obtener resultados de búsqueda de SharePoint y mostrar los resultados.

Los resultados de la búsqueda de personalización en un ejemplo de complemento de SharePoint muestran un ejemplo de búsqueda básico y un ejemplo de resultados de búsqueda personalizados que usa el CSOM de consulta de búsqueda. El ejemplo de búsqueda básica permite al usuario proporcionar un filtro de búsqueda que se usará para una búsqueda en todo el inquilino. Los sitios se buscan en función de ese filtro proporcionado por el usuario.

En primer lugar, el ejemplo obtiene el contexto de SharePoint mediante la clase SharePointContextProvider .

var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);

A continuación, compila la consulta en función de lo que escribió el usuario. Restringe la consulta a las colecciones de sitios y, a continuación, llama al método ProcessQuery , pasando el contexto y la consulta en la llamada al método . A continuación, devuelve los resultados de ProcessQuery como una tabla de resultados, que luego analiza el método FormatResults .

using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
  string query = searchtext.Text + " contentclass:\"STS_Site\"";
  ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
  lblStatus1.Text = FormatResults(results);
}

El método ProcessQuery crea un objeto KeywordQuery que representa la consulta de búsqueda.

KeywordQuery keywordQuery = new KeywordQuery(ctx);
keywordQuery.QueryText = keywordQueryValue;
keywordQuery.RowLimit = 500;
keywordQuery.StartRow = 0;
keywordQuery.SelectProperties.Add("Title");
keywordQuery.SelectProperties.Add("SPSiteUrl");
keywordQuery.SelectProperties.Add("Description");
keywordQuery.SelectProperties.Add("WebTemplate");
keywordQuery.SortList.Add("SPSiteUrl", Microsoft.SharePoint.Client.Search.Query.SortDirection.Ascending);

A continuación, la consulta de búsqueda se envía a SharePoint llamando al método ExecuteQuery_Client(Query). Los resultados se devuelven al objeto ClientResult<T> .

SearchExecutor searchExec = new SearchExecutor(ctx);
ClientResult<ResultTableCollection> results = searchExec.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();

El método FormatResults recorre en iteración los resultados y construye una tabla HTML para mostrar los valores de resultado.

string responseHtml = "<h3>Results</h3>";
responseHtml += "<table>";
responseHtml += "<tr><th>Title</th><th>Site URL</th><th>Description</th><th>Template</th></tr>";
if (results.Value[0].RowCount > 0)
{
  foreach (var row in results.Value[0].ResultRows)
  {
    responseHtml += "<tr>";
    responseHtml += string.Format("<td>{0}</td>", row["Title"] != null ? row["Title"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["SPSiteUrl"] != null ? row["SPSiteUrl"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["Description"] != null ? row["Description"].ToString() : "");
    responseHtml += string.Format("<td>{0}</td>", row["WebTemplate"] != null ? row["WebTemplate"].ToString() : "");
    responseHtml += "</tr>";
  }
}
responseHtml += "</table>";

El método ResolveAdditionalFilter busca "Apptest". Si se encuentra, se devuelve una lista de plantillas de sitio de cualquier tipo en los resultados de la búsqueda. Si no se encuentra, solo se devuelven plantillas web STS en los resultados de la búsqueda.

private string ResolveAdditionalFilter(string aboutMeValue)
{
  if (!aboutMeValue.Contains("AppTest"))
  {
    return "WebTemplate=STS";
  }
return "";
}

A continuación, el ejemplo construye la consulta y llama a los métodos ProcessQuery y FormatResults para recuperar, dar formato y mostrar los resultados de la búsqueda.

string query = "contentclass:\"STS_Site\" " + templateFilter;
ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
lblStatus2.Text = FormatResults(results);

Puede ver la interfaz de usuario de este ejemplo en la ilustración siguiente.

Interfaz de usuario de ejemplo de los resultados de la búsqueda personalizada

Portabilidad de la configuración de búsqueda

En SharePoint y SharePoint Online, puede exportar e importar opciones de configuración de búsqueda personalizadas entre colecciones de sitios y sitios. Solo puede exportar valores de configuración de búsqueda personalizados en el nivel de aplicación servicio Search (SSA) y debe usar las API de búsqueda para hacerlo mediante programación. La opción de exportación no está disponible en la interfaz de usuario de SharePoint.

El ejemplo Importar y exportar la configuración de búsqueda para SharePoint Online muestra cómo importar y exportar la configuración de búsqueda para un sitio de SharePoint Online mediante el CSOM de búsqueda en una aplicación de consola.

Opciones de configuración que son portátiles

Al exportar opciones de configuración de búsqueda personalizadas, SharePoint crea un archivo de configuración de búsqueda en formato XML. Este archivo de configuración de búsqueda incluye todas las opciones de configuración de búsqueda personalizadas exportables en el nivel de SSA, nivel de colección de sitios o nivel de sitio desde donde se inicia la exportación. Un archivo de configuración de búsqueda de una colección de sitios no contiene, por ejemplo, las opciones de configuración de búsqueda correspondientes a los sitios de la colección de sitios en cuestión.

Al importar un archivo de configuración de búsqueda, SharePoint crea y habilita cada configuración de búsqueda personalizada en la colección de sitios o sitio desde donde se inicia la importación.

En la tabla siguiente se enumeran los valores que puede exportar e importar, así como las dependencias de otras opciones de configuración de búsqueda personalizadas. Si los valores de configuración de búsqueda personalizados dependen de una configuración de búsqueda personalizada en un nivel diferente, debe exportar e importar la configuración en todos los niveles pertinentes.

Configuración de búsqueda que puede exportar e importar

Opción de configuración Dependencias
Reglas de consulta, incluidos bloques de resultados, resultados promocionados y segmentos de usuario Orígenes de resultados, tipos de resultado, esquema de búsqueda, modelo de clasificación
Orígenes de resultados Esquema de búsqueda
Tipos de resultado Esquema de búsqueda, orígenes de resultados, plantillas de visualización
Esquema de búsqueda Ninguna
Modelo de clasificación Esquema de búsqueda

Puede exportar valores de configuración de búsqueda personalizados desde una SSA e importar la configuración a colecciones de sitios y sitios. Pero no puede importar valores de configuración de búsqueda personalizados a una SSA. Tampoco puede exportar los valores de configuración de búsqueda predeterminados.

En el nivel de colección de sitios o sitios, puede exportar o importar la configuración de búsqueda mediante la interfaz de usuario de SharePoint. Esta configuración se encuentra en la sección Buscar de la página Configuración del sitio .

Configuración del sitio: búsqueda

Esta configuración también está disponible en la sección Administración de colecciones de sitios. Como alternativa, puede importar y exportar mediante programación esta configuración mediante el CSOM de búsqueda de SharePoint.

Buscar archivos de configuración

En la tabla siguiente se enumeran los archivos de esquema que admiten una configuración de búsqueda. Para obtener información sobre el formato de esquema, vea Esquemas de portabilidad de la configuración de búsqueda de SharePoint.

Nota:

Puede descargar los archivos de esquema de SP15_search_settings_portability_schema.zip.

Esquemas de portabilidad de la configuración de búsqueda

Esquema Descripción
SPS15XSDSearchSet1 Especifica XML que representa orígenes de resultados.
SPS15XSDSearchSet2 Especifica XML que representa los tipos administrativos y los miembros para administrar una instancia de búsqueda de SSA. Esto incluye los tipos de elementos de resultado y la configuración de la regla de propiedades.
SPS15XSDSearchSet3 Especifica XML que representa la configuración que incluye reglas de consulta, orígenes de resultados, propiedades administradas, propiedades rastreadas y modelos de clasificación.
SPS15XSDSearchSet4 Especifica XML que representa las enumeraciones usadas en otros esquemas.
SPS15XSDSearchSet5 Especifica XML que representa enumeraciones como ResultType que se usan en otros esquemas.
SPS15XSDSearchSet6 Especifica XML que representa las enumeraciones usadas en el esquema Microsoft.Office.Server.Search.Administration .

Uso de CSOM para la configuración de puertos

Las API de CSOM que necesita para importar y exportar la configuración de búsqueda se encuentran en la clase SearchConfigurationPortability del espacio de nombres Microsoft.SharePoint.Client.Search.Portability .

En el ejemplo de código siguiente se muestra cómo exportar los valores de configuración de búsqueda de un sitio.

private static void ExportSearchSettings(ClientContext context, string settingsFile)
{
  SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
  SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
  ClientResult<string> configresults = sconfig.ExportSearchConfiguration(owner);
  context.ExecuteQuery();
  string results = configresults.Value;
  System.IO.File.WriteAllText(settingsFile, results);
}

En el código siguiente se muestra cómo importar los valores de configuración de búsqueda de un sitio.

private static void ImportSearchSettings(ClientContext context, string settingsFile)
{
  SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context);
  SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb);
  sconfig.ImportSearchConfiguration(owner, System.IO.File.ReadAllText(settingsFile));
  context.ExecuteQuery();
}

Vea también