Personnaliser l’exemple de résultats de recherche SharePoint de recherche
L’exemple Search.PersonalizedResults vous montre comment personnaliser les SharePoint en filtrant les informations en fonction de la valeur d’une propriété de profil utilisateur. Voici quelques exemples de personnalisation :
- Articles d’actualités ou autre contenu filtré par pays ou emplacement.
- Liens de navigation filtrés en fonction du rôle ou de l’organisation de l’utilisateur.
- Listes de restaurants ou de points de vente en fonction de l’emplacement de votre entreprise.
Cet exemple de code utilise un add-in hébergé par un fournisseur pour afficher les résultats de recherche à l’utilisateur qui incluent tous les sites ou uniquement les sites d’équipes à qui l’utilisateur a accès. Pour ce faire, l’exemple :
- Vérifie la valeur de la propriété de profil utilisateur AboutMe.
- Crée une chaîne de filtre de requête de recherche associée à la valeur de la propriété de profil utilisateur AboutMe.
- Exécute la requête de recherche et affiche les résultats de la requête de recherche.
Avant de commencer
Pour commencer, téléchargez l’exemple de add-in Search.PersonalizedResults à partir du projet Pratiques et modèles de développement Office 365 sur GitHub.
Notes
Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.
Utilisation de l’exemple de add-in Search.PersonalizedResults
Lorsque vous exécutez cet exemple de code, une application hébergée par un fournisseur s’affiche.

Cet article décrit la recherche personnalisée de tous les modèles de site à l’aide d’un scénario de données de profil. Le choix d’effectuer une recherche personnalisée renvoie des résultats de recherche filtrés qui contiennent uniquement des sites d’équipe, comme illustré dans la figure suivante. Notez que la colonne Modèle contient uniquement des sites de type STS.

Pour gérer les scénarios de personnalisation, vous pouvez modifier la requête de recherche en :
Lecture et test de la valeur d’une propriété de profil utilisateur pour cet utilisateur. Cet exemple de code teste la propriété About Me pour obtenir la valeur AppTest.
Prendre une action spécifique en fonction de la valeur de la propriété de profil utilisateur. Par exemple, si la valeur de la propriété de profil utilisateur À propos de moi est AppTest, cet exemple de code supprime le filtre de site d’équipe et renvoie les résultats de recherche qui contiennent tous les sites.
Entrez AppTest dans la propriété de profil utilisateur À propos de moi
En haut de votre site Office 365, choisissez votre image de profil, puis choisissez À propos de moi.

Sur la page À mon sujet, choisissez Modifier votre profil.
In About me, enter AppTest.
Cliquez sur Enregistrer tout et fermer.
Effectuer une recherche personnalisée
Revenir au add-in Search.PersonalizedResults hébergé par un fournisseur et sélectionnez Effectuer une recherche personnalisée à nouveau. Le add-in modifie le filtre sur la requête de recherche pour afficher tous les sites au lieu des sites d’équipe uniquement, comme illustré dans la figure suivante. La colonne Modèle contient désormais plusieurs types de modèles de site différents.
Dans default.aspx.cs, le choix d’effectuer une recherche personnalisée appelle la méthode btnPersonalizedSearch _ Click, qui effectue les actions suivantes :
Utilise PeopleManager pour obtenir toutes les propriétés de profil utilisateur de l’utilisateur qui exécute ce module.
Récupère et vérifie la valeur de la propriété de profil utilisateur AboutMe. Si la valeur de la propriété AboutMe est AppTest, la requête de recherche récupère tous les sites à l’aide de la chaîne de
contentclass:"STS_Site"requête. Si la valeur de la propriété AboutMe n’est pas AppTest, le filtre de site d’équipe est ajoutée à la chaîne de requête ( ), et la requête de recherche récupère uniquement les sites d’équipe.WebTemplate=STSAppelle la méthode ProcessQuery pour récupérer les résultats de la recherche en fonction de la chaîne de requête fournie. ProcessQuery montre également comment spécifier une liste de propriétés à renvoyer avec les résultats de la recherche.
Appelle la méthode FormatResults pour mettre en forme les résultats de la recherche dans un tableau HTML.
protected void btnPersonalizedSearch_Click(object sender, EventArgs e)
{
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
using (var clientContext = spContext.CreateUserClientContextForSPHost())
{
// Load user profile properties.
PeopleManager peopleManager = new PeopleManager(clientContext);
PersonProperties personProperties = peopleManager.GetMyProperties();
clientContext.Load(personProperties);
clientContext.ExecuteQuery();
// Check the value of About Me.
string aboutMeValue = personProperties.UserProfileProperties["AboutMe"];
string templateFilter = ResolveAdditionalFilter(aboutMeValue);
// Build the query string.
string query = "contentclass:\"STS_Site\" " + templateFilter;
ClientResult<ResultTableCollection> results = ProcessQuery(clientContext, query);
lblStatus2.Text = FormatResults(results);
}
}
private ClientResult<ResultTableCollection> ProcessQuery(ClientContext ctx, string keywordQueryValue)
{
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);
SearchExecutor searchExec = new SearchExecutor(ctx);
ClientResult<ResultTableCollection> results = searchExec.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();
return results;
}