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 :
- Créez les modèles d’affichage d’annuaire de site.
- Définissez le type de résultat du répertoire de site.
- Créez la page de résultats.
- 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
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.
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é.Renommez les copies que vous avez effectuées des fichiers Item_SiteDirectory.html et Item_SiteDirectory_HoverPanel.html comme indiqué.
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";
.
- Remplacez la valeur de balise
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">
.
- Remplacez la
Pour définir le type de résultat d’annuaire de site
Accédez à Paramètres> du siteTypes de résultats de recherche>, puis choisissez Nouveau type de résultat.
Nommez votre nouveau type de résultat Répertoire de site de base.
Dans la zone À quoi doivent ressembler ces résultats ? , sélectionnez Répertoire de sites.
Cliquez sur Enregistrer.
Pour créer la page de résultats
- Dans le menu Paramètres du site , sélectionnez Contenu du site.
- Sélectionnez Pages.
- Dans la bibliothèque Pages, sélectionnez Fichiers> Nouvellepagede document>.
- 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.
- Sélectionnez Créer.
Pour modifier les propriétés du composant WebPart Résultats
Dans la page Répertoire du site , choisissez Paramètres>Modifier la page.
Dans le composant WebPart Résultats de la recherche, choisissez le menu Composant WebPart , puis Modifier le composant WebPart.
Dans le volet d’outils du composant WebPart, choisissez Modifier la requête pour ouvrir le Générateur de requêtes.
Dans le champ Texte de la requête , entrez ce qui suit :
ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>
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.
Choisissez OK pour fermer le Générateur de requêtes.
Dans Modèles d’affichage, sélectionnez Utiliser les types de résultats pour afficher les éléments.
Sélectionnez Répertoire de site de base dans la liste Type de résultat pour l’élément .
Dans la section Apparence , remplacez le titre par Sites auxquels j’ai accès.
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.
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
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
- 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.
- Récupérez les propriétés Title, Description, Rollup image et URL pour les éléments d’actualité ou d’événement.
- 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
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.
Scénario d’actualités proposées
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.
Exemple de code pour la recherche personnalisée
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.
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 .
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();
}