Liste SharePoint personnalisée créée

Paramétrer la recherche avancée sur les métadonnées dans SharePoint 2013

Dans SharePoint, un utilisateur souhaite faire une recherche sur les métadonnées à partir de l’écran de recherche avancée. L’écran de recherche avancée est une page standard d’un site créé à partir du modèle de site Centre de recherche de base.

Concrètement, l’utilisateur souhaite faire une recherche sur les métadonnées du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

Les notions de projet, langue et confidentialité sont des propriétés des documents. Elles sont gérées sous forme de métadonnées dans un type de contenu spécifique.

Par ailleurs, vous devez atteindre cet objectif sans faire un programme, ni même un JavaScript !

L’idée retenue est donc de jouer sur les paramètres des fichiers XML de la configuration de la recherche de SharePoint afin de faire une recherche sur les métadonnées. Ces fichiers XML sont facilement accessibles pour l’administrateur.

Avant de continuer prenez connaissance de l’article sur le principe de fonctionnement de la recherche SharePoint, qui présente les notions de propriétés analysées (« crawled properties ») et de propriétés gérées (« managed properties »).

La première étape consiste à créer les colonnes de sites et le type contenu.

Création d’un type de contenu

Vous créez un type de contenu nommé Paris Core Columns et de type de contenu parent Document. Bien évidemment, vous pouvez créer le type de contenu adapté pour faire une recherche sur les métadonnées.

type de contenu nommé Paris Core Columns
Type de contenu nommé Paris Core Columns

Ensuite, vous créez la colonne de site nommée Projet et de type choix avec les valeurs: Audit, Gouvernance, Migration, Performances.

Puis, il faut créer la colonne de site nommée Restriction et de type choix avec les valeurs: Tres-secret, Confidentiel, Restreint, Public.

Ensuite, vous rattachez ces colonnes, ainsi que les colonnes existantes Auteur, Objet et Langue au type de contenu Paris Core Columns.

Colonnes des type de contenu nommé Paris Core Columns
Colonnes des type de contenu nommé Paris Core Columns

Dans ce scénario, vous associez le type de contenu à une bibliothèque nommée Docs et c’est son type de contenu par défaut. Bien évidemment, vous utilisez la bibliothèque que vous voulez.

Alimenter en documents

Pour que l’indexation fonctionne, il faut déposer des documents dans la bibliothèque Docs. Cette étape est primordiale et doit se faire avant même le paramétrage de la recherche sur les métadonnées à cause du fonctionnement de l’indexation.

En effet, pour pouvoir associer une propriété gérée à une propriété analysée (cf. principe de fonctionnement de la recherche SharePoint), celle-ci doit être remontée par le programme d’indexation (mssearch.exe). Hors, celui-ci ne peut le faire que s’il existe des documents qui exposent ces propriétés analysées.

Créer un jeu d’essai

Par ailleurs, pour tester convenablement la recherche sur les métadonnées, vous devez imaginer les futures requêtes.

Dans notre cas, les requêtes vont porter sur les critères du type de contenu: Titre, Nom, Auteur, Objet, Projet, Langue, Restriction.

Soit 7 critères, auxquels il faut rajouter la date de dernière modification. La date permet de répondre aux requêtes du type « tous les documents de la semaine dernière ». Les 8 critères donnent 255 combinaisons possibles (2 puissance 8 -1), sans compter le contenu des documents !

Dans la pratique, il est impossible d’avoir un jeu d’essai pour tous les cas possibles. Dans ce scénario, vous allez constituer un jeu d’essai d’environ 50 documents avec des propriétés différentes.

Vous pouvez accélérer l’indexation en la forçant via la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche > Content source puis sur la source de contenu : Start Incremental Crawl.

L’indexation incrémentielle est très rapide. Les utilisateurs se plaignent parfois de la lenteur supposée de l’indexation. Si c’est le cas, vous adaptez le réglage de la fréquence d’indexation.

SharePoint 2013, qui dispose d’une architecture de recherche différente de celle de SharePoint 2010, a la possibilité d’indexer en continu. SharePoint 2010 ne sait pas le faire. Toutefois, il est possible de régler une indexation incrémentielle toutes les 5 minutes, sans dégrader les performances.

Une fois le mappage fait (plus loin), il sera nécessaire de lancer une indexation complète.

Quand l’indexation des nouveaux documents est dans l’état idle, vous pouvez passer à l’étape suivante qui consiste à créer des propriétés gérées associées aux propriétés analysées.

Création de la propriété gérée

Nativement, SharePoint sait faire le mappage entre certaines propriétés analysées et les propriétés gérées d’origine (« Out Of The Box / OOTB »), en particulier les métadonnées des documents Office.

Pour les colonnes de sites que vous avez créées, vous devez créer une nouvelle propriété gérée puis l’associer à une des propriétés analysées.

Vous devez faire la manipulation suivante sur les deux colonnes de sites : Projet et Restriction. Cette manipulation est indispensable pour la recherche sur les métadonnées des utilisateurs.

Lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Metadata Properties puis New Managed Property.

Nommez la propriété : monProjet et vérifiez que le type de données est bien Text. Mettez le nom abrégé de votre organisme à la place de « mon ». Les caractères « _ » ou « # » ne sont pas acceptés.

Ensuite, cliquez sur Add Mapping: la fenêtre Crawled property selection s’ouvre.

Dans cette fenêtre, vous pouvez soit filtrer par catégorie, soit filtrer directement sur le nom. Vous allez utiliser cette méthode car les colonnes de sites SharePoint sont facilement repérables.

Préfix ows_

En effet, elles sont préfixées par ows_ suivi de leur nom interne.

Tapez directement ows_projet puis cliquez sur le bouton Find.

Crawled property selection
Crawled property selection

Cet écran affichera toutes les propriétés analysées trouvées du même type que la propriété gérée. Si vous ne voyez pas la propriété analysée, vérifiez:

  • Que le type de contenu Paris Core Columns est bien associé à la bibliothèque de documents Docs,
  • Que la propriété analysée Projet est bien renseignée pour au moins un document. Si besoin, rajoutez au moins un document avec la propriété analysée renseignée,
  • Que l’indexation a bien été faite depuis. Dans le doute relancez une indexation incrémentale,
  • Que le nom interne est bien Projet et donc le nom de la propriété analysée est ows_Projet. Lisez l’article sur le nom interne des colonnes,
  • Que le type de donnée est bien Text.

Si ows_Projet(Text) apparaît bien; cliquez dessus pour le sélectionner puis cliquez sur le bouton OK pour valider: vous revenez sur le fenêtre New Managed Property.

Dans cette fenêtre, cochez Allow this property to be used in scopes pour pouvoir utiliser la propriété gérée dans une étendue de recherche (cf. plus bas), ainsi que Add managed property to custom results set retrieved on each query: la raison est expliquée dans l’article consacré aux principes de fonctionnement de la recherche.

Création d'une propriété gérée
Création d’une propriété gérée

Cliquez sur le bouton OK.

Refaites la même manipulation, en l’adaptant, pour la colonne de site Restriction.

Si vous faites une erreur, ou si vous oubliez de cocher une case par exemple, vous pouvez modifier à nouveau la propriété gérée. Vous ne pouvez pas modifier le type de données (Texte, Entier, etc.). Si vous faites une erreur sur le type de données, vous supprimez la propriété gérée puis vous la créer à nouveau.

Indexation complète

Une fois les propriétés gérées créées, il est nécessaire de refaire une indexation complète (et non incrémentale) pour que le programme d’indexation les intègre dans l’index.

L’utilisateur interroge l’index lorsqu’il fait une recherche sur les métadonnées.

Si c’est compatible avec votre environnement, il serait préférable de recréer entièrement l’index. Dans notre cas, ce n’est pas strictement nécessaire. L’avantage de recréer un nouvel index est de supprimer les erreurs éventuelles de l’index qui finissent toujours par s’accumuler et qui dégradent les performances.

Attention ! La réinitialisation d’index va supprimer totalement l’index, toutes sources de contenu confondues: aucune recherche sur les métadonnées n’aboutira tant que l’index ne sera pas reconstitué. Par ailleurs, la reconstitution de l’index est une opération consommatrice de ressources: les performances globales de la ferme SharePoint seront pénalisées. Ces opérations doivent d’abord être testées puis ensuite planifiées, notamment dans le cas d’un index volumineux de plusieurs centaines, voire milliers, de Go.

Pour réinitialiser l’index, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Index Reset. Laissez cochée la case Deactivate search alerts during reset. Si vous la décochez, les utilisateurs qui ont créé des alertes sur la recherche sur les métadonnées vont recevoir des emails intempestifs. Cliquez sur bouton Reset Now puis sur le bouton OK de la fenêtre de confirmation.

Le crawler va recréer entièrement l’index, lors de la prochaine indexation complète. Dans le cas où la prochaine indexation est incrémentielle, le programme d’indexation force d’autorité une indexation complète si l’index n’a pas déjà fait l’objet d’une indexation complète.

Forcer une indexation complète

Pour gagner du temps, ou si vous n’avez pas voulu réinitialiser l’index, vous pouvez forcer une indexation complète.

Pour forcer une indexation complète, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Content Sources.

Avec la souris, survolez Local SharePoint sites puis cliquez sur la flèche à droite.

Local SharePoint sites
Local SharePoint sites

Cliquez sur Start Full Crawl pour démarrer l’analyse complète.

La durée de l’analyse dépend évidemment du volume de documents à analyser.

Dans l’administration de la recherche, l’historique de l’analyse permet d’avoir une vision d’ensemble des différentes analyses.

Quand l’indexation est dans l’état idle, vous ajoutez les propriétés gérées à la recherche avancée.

Modifier la recherche avancée

Si vous ne disposez pas d’un site de recherche avancée, vous devez d’abord en créer un pour permettre la recherche sur les métadonnées des utilisateurs.

Pour créer un site de recherche avancée, ouvrez la page d’accueil de votre site puis cliquez sur Actions du site > Nouveau site.

Filtrez sur la catégorie Recherche et sélectionnez le modèle Centre de recherche de base.

Nommez-le Cherche avec l’url cherche puis cliquez sur le bouton Créer: une fenêtre de recherche toute simple (« A la Google ! ») s’affiche:

centre de recherche
Centre de recherche

Cliquez sur le lien Paramètres avancées.

centre de recherche avancée
Centre de recherche avancée

Si vous cliquez sur la liste déroulante propriété, vous voyez apparaître les propriétés gérées qui ont été reconnues nativement par SharePoint: Auteur, Description, Nom, Taille, URL, Date de modification, Créé par, dernière modification par.

Ajouter des propriétés gérées

Vous allez modifier cette recherche avancée pour ajouter vos propriétés gérées.

Pour cela, cliquez sur Actions du site (le menu habituel en haut à gauche) puis Modifier la page.

Avec la souris, survoler la zone de recherche avancée puis cliquer sur le lien Edition et choisir Modifier le composant WebPart.

Modifier le composant WebPart
Modifier le composant WebPart

Dans les paramètres de la zone de recherche avancée, qui est apparu sur la droit, sous Étendues, cochez la case Afficher le sélecteur d’étendue.

Afficher le sélecteur d’étendue
Afficher le sélecteur d’étendue

Le sélecteur d’étendues permet de sélectionner l’étendue souhaitée, si vous en possédez plusieurs. Ce choix est cohérent avec la définition précédente de la propriété gérée.

Ensuite, cliquez sur le moins de Étendues.

Puis, dessous, cliquez sur le plus de Propriétés.

Ensuite, cliquez dans la zone Propriétés qui débute par <root xmlns:xsi= »http://www.w…

Enfin, cliquez sur les 3 petits points qui apparaissent:

La fenêtre web qui s’affiche n’est pas pratique pour faire les modifications.

Aussi, vous allez copier temporairement son contenu dans un éditeur plus pratique comme par exemple Notepad++.

Copiez tout le texte qui apparaît et collez-le dans Notepad++, suivi d’entrée.

Afin de faciliter la lecture du fichier, vous pouvez faire les petites manipulations suivantes. Elles sont facultatives mais elles vous permettront de mieux voir ce que vous faites.

Editer dans Notepad++

Dans Notepad++, remplacez tous les double-espace par un seul espace. Cette opération est à faire 5 fois de suite.

Dans Notepad++, remplacer en mode étendue la chaîne « > < » par « >\r\n<« . Les commandes \r\n font passer à la ligne. Pensez à le faire en mode étendue pour avoir un retour chariot entre > et <.

Une fois ces manipulations faites, vous obtenez le fichier présenté ainsi.

Étendue de recherche mise en forme
Étendue de recherche mise en forme

Cherchez la balise <PropertyDefs>: vous retrouvez les propriétés gérées reconnues par SharePoint (Auteur, Description, Nom, Taille, URL, etc.)

Propriétés gérées reconnues par SharePoint
Propriétés gérées reconnues par SharePoint

Entre les balises <PropertyDefs> et </PropertyDefs>, insérez:

<PropertyDef Name= »monProjet » DataType= »text » DisplayName= »Projet »/>

Refaites cette opération pour la propriété gérée maRestriction.

PropertyDef
PropertyDef

Ensuite, cherchez la balise <ResultTypes>: elle se trouve juste en dessous de la balise </PropertyDefs>.

ResultTypes
ResultTypes

Dans la balise <ResultTypes>, chercher la balise <ResultType DisplayName= »Tous » Name= »default »>

ResultType
ResultType

Juste avant </ResultType>, ajouter: <PropertyRef Name= »monProjet » />

PropertyRef
PropertyRef

Refaites cette opération pour la propriété gérée maRestriction.

En fait, vous pouvez ajouter les balises ci-dessus à l’endroit que vous voulez dans le bloc <ResultTypes>, selon l’affichage souhaité.

Sélectionnez et copiez tout le contenu du fichier notepad++.

Ensuite, collez dans la fenêtre de l’éditeur de texte ouvert dans SharePoint puis cliquer sur le bouton OK. Il est totalement inutile de remettre en forme.

Puis, cliquez sur le bouton OK de la Zone de recherche avancée.

Enfin, dans le ruban Page, cliquez sur Arrêter la modification.

Modification de l'étendue
Modification de l’étendue

Vous devez voir en bas de la liste les champs Projet et Restriction.

Lancement de la requête personnalisée de recherche

L’utilisateur souhaite faire une recherche sur les métadonnées du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

Notamment, cela donne:

Recherche sur les métadonnées
Requête personnalisée de recherche

Vous pouvez simplifier cet écran de recherche (suppression des langues inutiles, modification des libellés, etc.) en modifiant les fichiers XML de configuration.

Recherche sur les métadonnées

Vous noterez le panneau d’affinement (sur la gauche) qui permet de filtrer les résultats de recherche:

Recherche sur les métadonnées
Requête personnalisée de recherche (résultat)

Il est aussi possible de faire apparaître dans le panneau d’affinement, les métadonnées rajoutées par nos soins: Projet et Restriction.

Pour information, la requête complète est ALL(site) (scope: »All Sites ») (DetectedLanguage= »en ») (monProjet:Audit AND maRestriction:Tres-secret).

Si le problème n’est toujours pas résolu, consultez aussi le billet relatif aux métadonnées gérées cachées.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *