Table of Contents
Introduction
Cet article fait partie d’une série concernant la recherche de SharePoint 2013 :- SharePoint 2013 - Recherche - Création et configuration d’une application de service de recherche
- SharePoint 2013 - Recherche - Création d’un centre de recherche
- Sharepoint 2013 - Recherche - Le Continuous Crawl
- SharePoint 2013 - Recherche - Gérer les synonymes grâce au thésaurus
- SharePoint 2013 - Recherche - Présentation des Query Rules
- SharePoint 2013 - Recherche - Présentation des Query Suggestions
- SharePoint 2013 - Recherche - Présentation du contexte utilisateur (User Segmentation) (Cet article)
- SharePoint 2013 : Recherche - Gérer l'extraction des noms de société (Publication à venir)
Le "User Segmentation" est une nouveauté de SharePoint 2013 qui vous permet d’afficher des résultats de recherche en fonction d’attributs de l’utilisateur, attributs nommés "User Segments".
Quand je parle d’attributs, ce ne sont pas uniquement des attributs issus du profil de l’utilisateur, mais des attributs de tout type comme le type de navigateur utilisé; comme vous devez coder ce que vous choisissez être le critère, vous avez donc un champ d’action très large.
Le principe de fonctionnement est qu’une WebPart (que vous aurez développée) tentera de faire correspondre la valeur de l’attribut choisi avec la valeur d’un Term spécifié comme "User Segment" d’une Query Rule.
Si le Term est trouvé, son ID est passé à la requête et l’action de la Query Rule est exécutée.
Note : Si vous avez frôlé l’évanouissement et /ou n’avez rien compris aux 2 phrases précédentes, je vous conseille vivement d’aller lire l’article suivant : SharePoint 2013 : Recherche – Présentation des Query Rules,
Scénario choisi pour cet article
Je choisis pour cet article de me baser sur le champ "Fonction" des utilisateurs :
- Attribut "Job Title" dans l’AD,
- Nom interne "SPS-JobTitle" dans SharePoint.
J’afficherai un "Promoted Result" différent selon que la fonction de la personne soit un "Manager tyrannique" ou un "Sbire exploité".
Les étapes de mise en place
Les 3 étapes à suivre pour mettre en place ce système sont les suivantes :
- Créer un Term pour chaque "User Segment",
- Développer une w Query Rules" href="http://social.technet.microsoft.com/wiki/contents/articles/19236.sharepoint-2013-recherche-presentation-des-query-rules-fr-fr.aspx" target="_blank">SharePoint
2013 : Recherche – Présentation des Query Rules,
Scénario choisi pour cet article
Je choisis pour cet article de me baser sur le champ "Fonction" des utilisateurs :
- Attribut "Job Title" daebpart héritant de la ContentBySearchWebPart et qui prendra en compte ces Terms,
- Créer une (ou plusieurs) query rule(s) pour traiter les différents "User Segment".
Etape 1 : Création des Terms relatifs aux "User Segments"
Créez via l’interface ou via code les Terms représentant les valeurs de la propriété sur lesquelles vous souhaitez vous baser, ici "Manager tyrannique" et "Sbire exploité".
Vous pouvez créer ces Terms de plusieurs façons :
1. Par matching des propriétés utilisateur
Bonne nouvelle dans ce cas, SharePoint 2013 utilise par défaut un Term Set nommé "People" pour y stocker les valeurs des propriétés Department, Job Title et Location issues des User Profiles.
Et c’est précisément sur ce Term Set "Job Title" que je vais me baser pour cet article.
2. Par l’interface, via les "Site Settings" de votre collection de sites3. Par code
NavigationTerm term = navigationTermSet.CreateTerm("Manager tyrannique", NavigationLinkType.FriendlyUrl, Guid.NewGuid());
Etape 2 : Création de la WebPart
Note : Si vous ne savez pas développer (ou n’avez pas envie, çà marche aussi dans ce cas), plusieurs articles du chapitre "Références" situé à la fin de cet article comporte des codes source Visual Studio prêts à l’emploi.
La webpart est à développer par vos soins, et vous aurez pour celle-ci à :
- La faire hériter de la ContentBySearchWebPart
-
Implémenter la méthode "Onload" comme suit
- Créer la méthode qui va tenter de matcher votre propriété avec un des Terms, en spécifiant la propriété à utiliser et le nom du Term Set
-
Compiler, builder, déployer votre wsp
- Insérer la WebPart sur une page, et insérez une seconde webpart (votre custom ou une "Content Search" que vous configurerez comme suit (elle récupère les résultats de votre webpart custom)
Etape 3 : Création de la ou des Query Rule(s)
Pour une présentation complète des Query Rules, vous pouvez consulter cet article : SharePoint 2013 : Recherche – Présentation des Query Rules.
1. Créez une Query Rule et cliquez sur "Add User Segment" dans la section encadrée ci-dessous
2. Saisissez un titre, et cliquez sur "Add user segment term"3. Sélectionnez votre Term et cliquez sur "Save" dans les 2 fenêtres4. Dans la section "Query Conditions", cliquez sur "Remove Condition"Ce qui a pour effet de déclencher la règle sur toute les requêtes5. Ajoutez votre Promoted Result (ou autre) et cliquez sur "Save".Au final :
Ici, les "Manager tyrannique" se verront afficher une image de vacances au Bahamas, pendant que les "Sbire exploité" verront une image de "Pole Emploi", avec un … message d’encouragementRésultat
1. Je lance ma page en tant qu’"Administrator" (le manager), il voit bien l’image configurée dans ma Query Rule
2. Je me connecte ensuite en tant que moi-même (le sbire !), et je vois bien mon image "personnalisée" …Cas des accès anonyme
Je vous recommande la lecture de cet article de Waldek Mastykarz sur les problèmes d’utilisation du trio "Content Search WebPart / User Segments / Anonymous Search Results Cache".
En résumé :
it seems that at this moment it is not possible to use Anonymous Search Results Cache with User Segments.
Références
- User segmentation in SharePoint 2013,
- Using User Context (AKA Segmentation) in Search with SharePoint 2013
- Set up User Segmentation to drive adaptive experiences in a Product Catalog in SharePoint 2013
- Using the Anonymous search results cache on SharePoint 2013 public-facing websites
- Adaptive experiences in a Product Catalog in SharePoint 2013 using Facebook location data
- User Context Sensitive Searching In SharePoint 2013 Part 1
- User Context Sensitive Searching In SharePoint 2013 Part 2