Recherche sur des métadonnées créées par l’utilisateur

Dans SharePoint 2010, un utilisateur souhaite faire une recherche 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.

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.

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, l’utilisateur est un fervent adepte du no-code: tout doit être fait par paramétrage, sans jamais développer un programme, 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 2010. Ces fichiers XML sont facilement accessibles pour l’administrateur. Celui-ci n’est pas obligé d’aller « fouiller » dans les abscons web.config.

Avant de continuer prenez connaissance de l’article sur le principe de fonctionnement de la recherche SharePoint 2010, 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

Le type de contenu nommé Paris Core Columns et de type de contenu parent Document est créé.
type de contenu nommé Paris Core Columns
La colonne de site nommée Projet et de type choix est créée avec les valeurs: Audit, Gouvernance, Migration, Performances.

La colonne de site nommée Restriction et de type choix est créée avec les valeurs: Tres-secret, Confidentiel, Restreint, Public.

Ces colonnes, ainsi que les colonnes existantes Auteur, Objet et Langue, sont rattachées au type de contenu Paris Core Columns.
Colonnes des type de contenu nommé Paris Core Columns
Le type de contenu est associé à une bibliothèque nommée Docs (par exemple). C’est le type de contenu par défaut.

Alimentation 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 à cause du fonctionnement de l’indexation. En effet, pour pouvoir associer une propriété gérée à une propriété analysée, 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.

Par ailleurs, pour tester convenablement la recherche il est nécessaire d’imaginer les requêtes qui seront faites.

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. Notre jeu de documents sera donc constitué 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. Le problème vient plutôt du réglage de la fréquence d’indexation qui n’est pas adaptée.

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.

Lorsque l’indexation des nouveaux documents est terminée, 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.

La manipulation suivante doit dont être faite sur les deux colonnes de sites: Projet et Restriction.

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.

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
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 précité 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
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. Seul le type de données (Texte, Entier, etc.) ne peut pas être modifié: Si vous faites une erreur sur le type de données, vous serez obligé de supprimer la propriété gérée puis de la recréer.

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.

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

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 vont recevoir des emails intempestifs. Cliquez sur bouton Reset Now puis sur le bouton OK de la fenêtre de confirmation.

Lors de la prochaine indexation complète, l’index sera recréé entièrement. 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.

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

Une fois que l’indexation complète est terminée, il reste à ajouter 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 allez d’abord en créer un.

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 cliquez sur le bouton Créer: une fenêtre de recherche toute simple (« A la Google ! ») s’affiche:
centre de recherche
Cliquez sur le lien Paramètres avancées.
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.

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

Dessous, cliquez sur le plus de Propriétés.

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

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.

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 « >rn<« . Les commandes rn 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.
Etendue 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
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
Ensuite, cherchez la balise <ResultTypes>: elle se trouve juste en dessous de la balise </PropertyDefs>.
ResultTypes
Dans la balise <ResultTypes>, chercher la balise <ResultType DisplayName= »Tous » Name= »default »>
ResultType
Juste avant </ResultType>, ajouter: <PropertyRef Name= »monProjet » />

Refaites cette opération pour la propriété gérée maRestriction.
PropertyRef
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++.

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.

Cliquez sur le bouton OK de la Zone de recherche avancée.

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

Vérifiez que vos modifications ont bien été prises en compte.
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 souhaitait faire une recherche 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.

Cela donne:
Requête personnalisée de recherche
Cet écran de recherche peut être simplifié (suppression des langues inutiles, modification des libellés, etc.) en jouant avec les fichiers XML de configuration.

Vous noterez le panneau d’affinement (sur la gauche) qui permet de filtrer les résultats de recherche:
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).

Laisser un commentaire

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