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 :
- Créez les modèles d’affichage d’annuaire de sites.
- Définissez le type de résultat de l’annuaire de sites.
- Créez la page de résultats.
- 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
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.
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\Searchdossier du lecteur réseau mappé.Renommez les copies que vous avez faites des fichiers d'SiteDirectory.html _ et d’élémentSiteDirectory_HoverPanel.html comme _ indiqué.

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";
- Modifiez
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">.
- Modifiez
Pour définir le type de résultat de l’annuaire de sites
Go to Site Paramètres > Search > Result Types, and then choose New Result Type.
Nommez votre nouveau type de résultat Basic Site Directory.
Dans la zone À quoi doivent ressembler ces résultats ? sélectionnez Annuaire de sites.

Cliquez sur Enregistrer.
Pour créer la page de résultats
- Dans le menu Paramètres site, sélectionnez Contenu du site.
- Sélectionnez Pages.
- Dans la bibliothèque de pages, sélectionnez Fichiers Nouvelle page > de > document.
- 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.
- Sélectionnez Créer.
Pour modifier les propriétés du volet Web Des résultats
On the Site Directory page, choose Paramètres > Edit Page.
Dans le volet Résultats de la recherche, choisissez le menu du site Web, puis modifiez le contenu.

Dans le volet d’outils du site Web Part, sélectionnez Modifier la requête pour ouvrir le Générateur de requêtes.
Dans le champ de texte Requête, entrez ce qui suit :
ContentClass:STS_Web OR ContentClass:STS_Site path:http://<YourServer>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.

Choisissez OK pour fermer le Générateur de requêtes.
Dans les modèles d’affichage, sélectionnez Utiliser les types de résultats pour afficher des éléments.
Sélectionnez Annuaire de sites de base dans le type de résultat pour la liste d’éléments.
Dans la section Apparence, modifiez le titre sur Sites à qui j’ai accès.
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.

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

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
- 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.
- 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.
- 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

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.
Scénario d’actualités
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.
Exemple de code pour la recherche personnalisée
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.

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.

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