Partager via


Personnalisations de recherche pour SharePoint

Remarque

La page suivante concerne les sites classiques dans SharePoint Online. Ces fonctionnalités ne sont pas prises en charge dans les sites SharePoint modernes. Pour implémenter des fonctionnalités similaires dans sharePoint moderne, consultez les composants WebPart de recherche moderne PnP à l’adresse : https://microsoft-search.github.io/pnp-modern-search/

Créez des scénarios de recherche SharePoint et SharePoint Online personnalisés à l’aide d’un répertoire de site basé sur la recherche, de résultats de recherche personnalisés ou de la portabilité de la configuration de recherche.

Répertoire de site basé sur la recherche

La recherche SharePoint vous permet de créer un répertoire de site basé sur la recherche sans écrire de code personnalisé.

Pour créer un répertoire de site :

  1. Créez les modèles d’affichage d’annuaire de site.
  2. Définissez le type de résultat du répertoire de site.
  3. Créez la page de résultats.
  4. Modifiez les propriétés du composant WebPart Résultats.

Remarque

La procédure suivante utilise les modèles d’affichage liés au site sans modification. Si vous souhaitez modifier la façon dont les résultats du répertoire de site sont affichés, modifiez les modèles d’affichage que vous créez.

Pour créer les modèles d’affichage d’annuaire de site

  1. Ouvrez le lecteur réseau mappé à la galerie de pages maîtres. Pour plus d’informations, voir Mapper un lecteur réseau à la galerie de pages maîtres SharePoint.

  2. Effectuez des copies des fichiers HTML du modèle d’affichage qui correspondent le mieux à ce que vous essayez de faire. Pour le scénario d’annuaire de site, ce sera Item_Site.html et Item_Site_HoverPanel.html. Les deux fichiers se trouvent dans le \Display Templates\Search dossier du lecteur réseau mappé.

  3. Renommez les copies que vous avez effectuées des fichiers Item_SiteDirectory.html et Item_SiteDirectory_HoverPanel.html comme indiqué.

    Modèles d’affichage d’annuaire de site

  4. Ouvrez le fichier Item_SiteDirectory.html et apportez les modifications suivantes :

    • Remplacez la valeur de balise <title>Élément de site par Répertoire du site.
    • Remplacez la première <div> balise après la balise d’ouverture <body> par <div id="Item_Site"><div id="Item_SiteDirectory">.
    • Remplacez le nom de fichier JavaScript du modèle d’affichage du panneau de pointage par var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Site_HoverPanel.js";var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_SiteDirectory_HoverPanel.js";.
  5. Ouvrez le fichier Item_SiteDirectory_HoverPanel.html et apportez les modifications suivantes :

    • Remplacez la <div> balise qui suit la balise d’ouverture <body> par <title>Site Hover Panel Test</title><title>Site Directory Hover Panel</title>.
    • Remplacez la <title> balise par <div id="Item_SiteDirectory_HoverPanel"><div id="Item_Site_HoverPanel"> .

Pour définir le type de résultat d’annuaire de site

  1. Accédez à Paramètres> du siteTypes de résultats de recherche>, puis choisissez Nouveau type de résultat.

  2. Nommez votre nouveau type de résultat Répertoire de site de base.

  3. Dans la zone À quoi doivent ressembler ces résultats ? , sélectionnez Répertoire de sites.

    Exemple de configuration de résultat de site

  4. Cliquez sur Enregistrer.

Pour créer la page de résultats

  1. Dans le menu Paramètres du site , sélectionnez Contenu du site.
  2. Sélectionnez Pages.
  3. Dans la bibliothèque Pages, sélectionnez Fichiers> Nouvellepagede document>.
  4. Dans la page Créer une page, spécifiez Répertoire du site pour Titre et Répertoire du site pour Nom de l’URL.
  5. Sélectionnez Créer.

Pour modifier les propriétés du composant WebPart Résultats

  1. Dans la page Répertoire du site , choisissez Paramètres>Modifier la page.

  2. Dans le composant WebPart Résultats de la recherche, choisissez le menu Composant WebPart , puis Modifier le composant WebPart.

    Menu du composant WebPart

  3. Dans le volet d’outils du composant WebPart, choisissez Modifier la requête pour ouvrir le Générateur de requêtes.

  4. Dans le champ Texte de la requête , entrez ce qui suit : ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>

  5. Choisissez Requête de test pour vérifier que la syntaxe est correcte. Le volet Aperçu des résultats de la recherche doit afficher les sous-sites dans le site que vous avez spécifié pour le chemin d’accès dans le texte de la requête.

    Générateur de requêtes de WebPart de résultats de la recherche

  6. Choisissez OK pour fermer le Générateur de requêtes.

  7. Dans Modèles d’affichage, sélectionnez Utiliser les types de résultats pour afficher les éléments.

  8. Sélectionnez Répertoire de site de base dans la liste Type de résultat pour l’élément .

  9. Dans la section Apparence , remplacez le titre par Sites auxquels j’ai accès.

  10. Choisissez OK pour enregistrer les modifications apportées au composant WebPart et fermer le volet d’outils du composant WebPart.

    La figure suivante illustre un exemple de page d’annuaire de site basée sur la recherche.

    Exemple d’annuaire de site basé sur une recherche Contoso

Résultats de recherche personnalisés

La recherche personnalisée est lorsque vous affichez des résultats de recherche ciblés pour l’utilisateur qui envoie la demande de recherche. Cette section décrit certains scénarios de recherche personnalisée et la façon dont vous pouvez les implémenter.

Votre scénario d’actualités

Dans ce scénario, vous créez un complément de recherche qui affiche du contenu pertinent, tel que des actualités et des événements, ciblant l’utilisateur.

Votre scénario de recherche personnalisée de nouveautés

Votre scénario de recherche personnalisée de nouveautés

Pour implémenter le scénario d’actualités, utilisez le composant WebPart Résultats de la recherche SharePoint et les modèles d’affichage par défaut pour afficher les informations d’actualités, notamment le titre, la description et l’image de cumul. Afficher les dix premiers éléments d’actualité. Lorsque l’utilisateur choisit l’image de cumul, le titre ou le lien Lire plus, la page de l’article d’actualités est chargée.

Vous pouvez également créer un complément de recherche à l’aide de l’API de requête (CSOM ou REST). Vous pouvez rendre configurable le nombre d’éléments d’actualités à afficher à l’aide des propriétés du complément de recherche.

Une autre option consiste à utiliser l’API de requête pour ajouter le code de l’API de requête qui récupère les résultats de la recherche directement à la mise en page.

Pour afficher les actualités et les informations d’événement spécifiques à l’utilisateur

  1. Modifiez la requête pour filtrer les résultats des actualités et des événements en fonction des propriétés de profil utilisateur telles que l’unité commerciale, la région et la langue.
  2. Récupérez les propriétés Title, Description, Rollup image et URL pour les éléments d’actualité ou d’événement.
  3. Implémentez une logique de tri pour les actualités et les événements combinés en fonction de la propriété LastModifiedDate .

Scénario d’événements à venir

Dans ce scénario, le complément de recherche affiche les événements pertinents destinés à l’utilisateur.

Scénario de recherche personnalisée d’événements à venir

Scénario de recherche personnalisée d’événements à venir

Pour implémenter ce scénario, vous pouvez configurer le composant WebPart Résultats de la recherche SharePoint pour modifier la requête afin de récupérer uniquement les informations d’événement à venir. Pour ce faire, spécifiez ContentClass:STS_ListItem_Events pour le texte de requête du composant WebPart. Pour modifier la façon dont les résultats des événements sont affichés, créez des modèles d’affichage personnalisés pour afficher les informations d’événement.

Vous pouvez modifier le modèle d’affichage d’élément afin que lorsque l’utilisateur choisit l’image, le titre ou le lien En savoir plus, la page d’informations sur l’événement soit chargée. Vous pouvez également modifier le modèle d’affichage de contrôle afin que lorsque l’utilisateur choisit Afficher plus, les dix résultats des événements suivants s’affichent dans le composant WebPart.

Vous pouvez également créer un complément de recherche qui utilise l’API de requête pour récupérer les résultats de l’événement. Vous pouvez configurer le complément de recherche pour afficher, par défaut, seulement dix des derniers événements à venir, mais rendre ce paramètre configurable via les propriétés du complément de recherche.

Dans ce scénario, le complément de recherche affiche les résultats de la recherche en tant que contenu proposé destiné à vos utilisateurs dans des emplacements tels que l’intranet d’entreprise et les pages d’accueil divisionnelles. Vous pouvez l’implémenter avec un composant de complément qui contient un plug-in jQuery avec html qui utilise le service REST de recherche ou le modèle CSOM de requête pour obtenir les résultats de la recherche à partir de SharePoint et afficher les résultats.

L’exemple Personnaliser les résultats de la recherche dans un complément SharePoint montre un exemple de recherche de base et un exemple de résultats de recherche personnalisé qui utilise le modèle CSOM de requête de recherche. L’exemple de recherche de base permet à l’utilisateur de fournir un filtre de recherche à utiliser pour une recherche à l’échelle du locataire. Les sites font l’objet d’une recherche basée sur ce filtre fourni par l’utilisateur.

L’exemple obtient d’abord le contexte SharePoint à l’aide de la classe SharePointContextProvider .

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

Ensuite, il génère la requête en fonction de ce que l’utilisateur a entré. Il limite la requête aux collections de sites, puis appelle la méthode ProcessQuery , en transmettant le contexte et la requête dans l’appel de méthode. Il retourne ensuite les résultats ProcessQuery sous la forme d’une table de résultats, qui est ensuite analysée par la méthode FormatResults .

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

La méthode ProcessQuery génère un objet KeywordQuery qui représente la requête de recherche.

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

La requête de recherche est ensuite envoyée à SharePoint en appelant la méthode ExecuteQuery_Client(Query). Les résultats sont retournés à l’objet T> ClientResult<.

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

La méthode FormatResults itère au sein des résultats et construit une table HTML pour afficher les valeurs des résultats.

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

La méthode ResolveAdditionalFilter recherche « Apptest ». Si elle est trouvée, une liste de modèles de site de tout type est retournée dans les résultats de la recherche. S’il est introuvable, seuls les modèles web STS sont retournés dans les résultats de la recherche.

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

L’exemple construit ensuite la requête et appelle les méthodes ProcessQuery et FormatResults pour récupérer, mettre en forme et afficher les résultats de la recherche.

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

Vous pouvez voir l’interface utilisateur de cet exemple dans la figure suivante.

Interface utilisateur d’exemple de résultats de recherche personnalisée

Portabilité de la configuration de recherche

Dans SharePoint et SharePoint Online, vous pouvez exporter et importer des paramètres de configuration de recherche personnalisés entre des collections de sites et des sites. Vous pouvez uniquement exporter des paramètres de configuration de recherche personnalisés au niveau de l’application service Search (SSA), et vous devez utiliser les API de recherche pour le faire par programme. L’option d’exportation n’est pas disponible dans l’interface utilisateur SharePoint.

L’exemple Importer et exporter des paramètres de recherche pour SharePoint Online montre comment importer et exporter des paramètres de recherche pour un site SharePoint Online à l’aide du modèle CSOM de recherche dans une application console.

Paramètres de configuration portables

Lorsque vous exportez des paramètres de configuration de recherche personnalisés, SharePoint crée un fichier de configuration de recherche au format XML. Ce fichier de configuration de recherche inclut tous les paramètres de configuration de recherche personnalisée exportables au niveau SSA, au niveau de la collection de sites ou au niveau du site à partir duquel vous démarrez l’exportation. Le fichier de configuration de recherche d'une collection de sites ne contient pas les paramètres de configuration de recherche personnalisés des sites individuels de la collection.

Lorsque vous importez un fichier de configuration de recherche, SharePoint crée et active chaque paramètre de configuration de recherche personnalisé dans la collection de sites ou le site à partir duquel vous démarrez l’importation.

Le tableau suivant répertorie les paramètres que vous pouvez exporter et importer, ainsi que toutes les dépendances vis-à-vis d’autres paramètres de configuration de recherche personnalisés. Si les paramètres de configuration de recherche personnalisés dépendent d’un paramètre de configuration de recherche personnalisé à un niveau différent, vous devez exporter et importer les paramètres à tous les niveaux appropriés.

Paramètres de recherche que vous pouvez exporter et importer

Paramètre de configuration Dépendances
Règles de requête, y compris les blocs de résultats, les résultats promus et les segments utilisateur Origines des résultats, types de résultats, schéma de recherche, modèle de classement
Origines des résultats Schéma de recherche
Types de résultats Schéma de recherche, origines des résultats, modèles d’affichage
Schéma de recherche Aucune
Modèle de classement Schéma de recherche

Vous pouvez exporter des paramètres de configuration de recherche personnalisés à partir d’une SSA et importer les paramètres dans des collections de sites et des sites. Toutefois, vous ne pouvez pas importer des paramètres de configuration de recherche personnalisés dans une SSA. Vous ne pouvez pas non plus exporter les paramètres de configuration de recherche par défaut.

Au niveau du site ou de la collection de sites, vous pouvez exporter ou importer des paramètres de configuration de recherche à l’aide de l’interface utilisateur SharePoint. Ces paramètres se trouvent dans la section Recherche de la page Paramètres du site .

Paramètres du site - Recherche

Ces paramètres sont également disponibles dans la section Administration de collection de sites. Vous pouvez également importer et exporter ces paramètres par programmation à l’aide du modèle CSOM de recherche SharePoint.

Rechercher des fichiers de configuration

Le tableau suivant répertorie les fichiers de schéma qui prennent en charge une configuration de recherche. Pour plus d’informations sur le format de schéma, voir Schémas de portabilité des paramètres de recherche SharePoint.

Remarque

Vous pouvez télécharger les fichiers de schéma à partir de SP15_search_settings_portability_schema.zip.

Schémas de portabilité des paramètres de recherche

Schéma Description
SPS15XSDSearchSet1 Spécifie le code XML qui représente les sources de résultats.
SPS15XSDSearchSet2 Spécifie le code XML qui représente les types administratifs et les membres pour la gestion d’un instance de recherche SSA. Cela inclut les types d’éléments de résultat et les paramètres de règle de propriété.
SPS15XSDSearchSet3 Spécifie le code XML qui représente les paramètres qui incluent des règles de requête, des sources de résultats, des propriétés managées, des propriétés analysées et des modèles de classement.
SPS15XSDSearchSet4 Spécifie le code XML qui représente les énumérations utilisées dans d’autres schémas.
SPS15XSDSearchSet5 Spécifie le code XML qui représente des énumérations comme ResultType utilisées dans d’autres schémas.
SPS15XSDSearchSet6 Spécifie le code XML qui représente les énumérations utilisées dans le schéma Microsoft.Office.Server.Search.Administration .

Utilisation des paramètres de configuration CSOM vers le port

Les API CSOM dont vous avez besoin pour importer et exporter vos paramètres de configuration de recherche se trouvent dans la classe SearchConfigurationPortability de l’espace de noms Microsoft.SharePoint.Client.Search.Portability .

L’exemple de code suivant montre comment exporter les paramètres de configuration de recherche d’un site.

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

Le code suivant montre comment importer les paramètres de configuration de recherche d’un site.

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

Voir aussi