Personnalisations de recherche pour SharePoint

Notes

La page suivante concerne les sites classiques dans SharePoint Online. Ces fonctionnalités ne sont pas pris en charge dans les sites SharePoint modernes. Pour implémenter des fonctionnalités similaires dans les SharePoint les composants Web De recherche PnP modernes à 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 annuaire de sites basé sur la recherche, de résultats de recherche personnalisés ou de la portabilité de la configuration de la recherche.

Annuaire de sites basé sur la recherche

SharePoint recherche vous permet de créer un annuaire de sites basé sur la recherche sans écrire de code personnalisé.

Pour créer un annuaire de sites :

  1. Créez les modèles d’affichage d’annuaire de sites.
  2. Définissez le type de résultat de l’annuaire de sites.
  3. Créez la page de résultats.
  4. Modifiez les propriétés du volet Web Des résultats.

Notes

La procédure suivante utilise les modèles d’affichage liés au site sans modification. Si vous souhaitez modifier l’affichage des résultats de l’annuaire de sites, modifiez les modèles d’affichage que vous créez.

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

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

  2. Faites des copies des fichiers HTML du modèle d’affichage qui maient le mieux ce que vous essayez de faire. Pour le scénario d’annuaire de sites, il s'Site.html élément _ et élément _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 faites des fichiers d'SiteDirectory.html _ et d’élémentSiteDirectory_HoverPanel.html comme _ indiqué.

    Modèles d’affichage d’annuaire de site

  4. Ouvrez le fichier _SiteDirectory.html'élément et a apporté les modifications suivantes :

    • Modifiez <title> la valeur de la balise de l’élément de site à l’annuaire de sites.
    • Modifiez la première <div> balise après la balise <body> d’ouverture de <div id="Item_Site"> <div id="Item_SiteDirectory"> .
    • Modifiez le nom de fichier JavaScript du modèle d’affichage de panneau de var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_Site_HoverPanel.js"; pointeur de . var hoverUrl = "~sitecollection/_catalogs/masterpage/Display Templates/Search/Item_SiteDirectory_HoverPanel.js";
  5. Ouvrez le fichier _SiteDirectory_HoverPanel.html'élément et a apporté les modifications suivantes :

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

Pour définir le type de résultat de l’annuaire de sites

  1. Go to Site Paramètres > Search > Result Types, and then choose New Result Type.

  2. Nommez votre nouveau type de résultat Basic Site Directory.

  3. Dans la zone À quoi doivent ressembler ces résultats ? sélectionnez Annuaire 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 site, sélectionnez Contenu du site.
  2. Sélectionnez Pages.
  3. Dans la bibliothèque de pages, sélectionnez Fichiers Nouvelle page > de > document.
  4. Dans la page Créer une page, spécifiez l’annuaire de sites pour le titre et l’annuaire de sites pour le nom de l’URL.
  5. Sélectionnez Créer.

Pour modifier les propriétés du volet Web Des résultats

  1. On the Site Directory page, choose Paramètres > Edit Page.

  2. Dans le volet Résultats de la recherche, choisissez le menu du site Web, puis modifiez le contenu.

    Menu de la partie Web

  3. Dans le volet d’outils du site Web Part, sélectionnez Modifier la requête pour ouvrir le Générateur de requêtes.

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

  5. Sélectionnez Requête 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 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 les modèles d’affichage, sélectionnez Utiliser les types de résultats pour afficher des éléments.

  8. Sélectionnez Annuaire de sites de base dans le type de résultat pour la liste d’éléments.

  9. Dans la section Apparence, modifiez le titre sur Sites à qui j’ai accès.

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

    La figure suivante montre un exemple de page d’annuaire de sites 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 se fait 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 add-in de recherche qui affiche du contenu pertinent, tel que des actualités et des événements, destiné à 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 SharePoint web De résultats de recherche et les modèles d’affichage par défaut pour afficher les informations d’actualités, y compris le titre, la description et l’image de déploiement. Affichez les dix premiers éléments d’actualités. Lorsque l’utilisateur choisit l’image de déploiement, le titre ou le lien Lire plus, la page d’article d’actualités est chargée.

Vous pouvez également créer un module de recherche à l’aide de l’API de requête (CSOM ou REST). Vous pouvez configurer le nombre d’éléments d’actualités à afficher à l’aide des propriétés du module 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 informations d’actualités et d’événements propres à l’utilisateur

  1. Modifiez la requête pour filtrer les actualités et les résultats 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 le titre, la description, l’image de rollup et les propriétés d’URL des éléments d’actualités ou d’événements.
  3. Implémenter une logique de tri pour les événements et actualités combinés en fonction de la propriété LastModifiedDate.

Scénario d’événements à venir

Dans ce scénario, le add-in 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 SharePoint de recherche pour modifier la requête afin de récupérer uniquement les informations sur les événements à venir. Pour ce faire, spécifiez le texte de requête ContentClass:STS_ListItem_Events du partie Web Part. Pour modifier l’affichage des résultats des événements, 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 de sorte que lorsque l’utilisateur choisit l’image, le titre ou le lien Lire 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 Voir plus, les dix résultats des événements suivants soient affichés dans le volet Web.

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

Dans ce scénario, le add-in de recherche affiche les résultats de la recherche en tant que contenu mis en avant destiné à vos utilisateurs à des endroits tels que des pages d’accueil de division et intranet d’entreprise. Vous pouvez l’implémenter avec un élément de module 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 recherche à partir de SharePoint et afficher les résultats.

L’exemple de personnalisation des résultats de recherche dans un exemple de SharePoint de recherche montre un exemple de recherche de base et un exemple de résultats de recherche personnalisés qui utilise la requête de recherche CSOM. L’exemple de recherche de base permet à l’utilisateur de fournir un filtre de recherche à utiliser pour une recherche à l’échelle du client. Les sites sont recherchés en fonction de ce filtre fourni par l’utilisateur.

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

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

Ensuite, il crée la requête en fonction de ce que l’utilisateur a entré. Elle limite la requête aux collections de sites, puis appelle la méthode ProcessQuery, en passant le contexte et la requête dans l’appel de méthode. Elle renvoie ensuite les résultats ProcessQuery sous la forme d’un tableau de résultats, qui est ensuite 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 crée 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 renvoyés à l’objet > ClientResult<T.

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

La méthode FormatResults itère les résultats et construit un tableau 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 n’importe quel type est renvoyée dans les résultats de la recherche. Si ce n’est pas le cas, seuls les modèles web STS sont renvoyé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 la 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 de service de recherche (SSA) et vous devez utiliser les API de recherche pour effectuer cette opération par programme. L’option d’exportation n’est pas disponible dans SharePoint’interface utilisateur.

L’exemple de recherche Importation et exportation 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és exportables au niveau de la SSA, au niveau de la collection de sites ou au niveau du site à partir de laquelle vous commencez 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 de laquelle vous démarrez l’importation.

Le tableau suivant répertorie les paramètres que vous pouvez exporter et importer, ainsi que 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 blocs de résultats, résultats promus et segments d’utilisateurs 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 les collections de sites et les 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 SharePoint’interface utilisateur. Ces paramètres se trouvent dans la section Recherche de la page Paramètres site.

Paramètres du site - Recherche

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

Rechercher des fichiers de configuration

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

Notes

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

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

Schéma Description
SPS15XSDSearchSet1 Spécifie le XML qui représente les origines des résultats.
SPS15XSDSearchSet2 Spécifie le XML qui représente les types et les membres d’administration pour la gestion d’une instance de recherche SSA. Cela inclut les types d’élément de résultat et les paramètres de règle de propriété.
SPS15XSDSearchSet3 Spécifie le XML qui représente les paramètres qui incluent les règles de requête, les origines des résultats, les propriétés gérées, les propriétés analyse et les modèles de classement.
SPS15XSDSearchSet4 Spécifie le XML qui représente les éumérations utilisées dans d’autres schémas.
SPS15XSDSearchSet5 Spécifie le XML qui représente des enumérations telles que ResultType qui sont utilisées dans d’autres schémas.
SPS15XSDSearchSet6 Spécifie le XML qui représente les éumérations utilisées dans microsoft.Office. Schéma Server.Search.Administration.

Utilisation du CSOM pour le portage des paramètres de configuration

Les API CSOM dont vous avez besoin pour importer et exporter vos paramètres de configuration de recherche sont dans la classe SearchConfigurationPortability dans Microsoft.SharePoint. Espace de noms 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