Rendre la recherche SharePoint multilingue

Rendre la recherche SharePoint multilingue


Dans l’article Partie 11: Définir les critères de requête sur les informations, j’explique que la recherche multilingue sur des métadonnées gérées n’est tout simplement pas supportée par défaut par SharePoint, que cela soit en 2010 ou 2013. Heureusement, il existe des solutions de contournement.

Note importante : Si vous êtes en Office 365, et bien, euh…tant pis pour vous car ces astuces nécessitent de jouer avec PowerShell. Quelle idée de parler plusieurs langues dans votre entreprise aussi! 😉

Rendre la propriété TaxCatchAllLabel « crawlable »

La première astuce pour rendre la recherche multilingue est de se servir de la propriété TaxCatchAllLabel de SharePoint. Cette propriété correspond à l’une des métadonnées de la fameuse TaxonomyHiddenList, dont la nature est expliquée ici.

Exemple de métadonnées gérées multilingue

Prenons l’exemple avec la valeur « Nouvelle-Écosse ». Si vous regardez la valeur de cette propriété dans cette liste, vous observerez ceci:

Valeurs de la TaxonomyHiddenList

En effet, les valeurs anglaise et française apparaissent. Si vous regardez encore plus dans le détail à l’aide par exemple de SharePoint Manager, vous obtiendrez même ceci pour l’élément de liste concerné:

Observations de la valeur avec SharePoint Manager

Maintenant l’idée est de rendre cette propriété disponible (ows_TaxCatchAllLabel) dans la recherche pour pouvoir la requêter directement (vu qu’elle contient les labels dans toutes les langues). En effet, pourquoi ne pas se servir des informations utilisées pour les requêtes CAML pour la recherche ? 😉 Cet objectif se réalise en deux étapes:

1 ère étape : Changer la visibilité de la colonne TaxCatchAllLabel

Par défaut, cette métadonnée n’apparaît pas dans la liste des propriétés d’analyse (Crawled properties) de SharePoint. La raison? Tout simplement parce que cette métadonnée est marquée comme « cachée » par défaut (Hidden = true).

Nous allons donc la rendre visible pour qu’elle apparaisse dans la liste des crawled properties. Mais attention, il y a plusieurs façons de faire :

  • Rendre cette colonne visible depuis la liste des champs du site racine de la collection : Dans ce cas, il vous faut le faire juste après la création de la collection de sites ou avant la création de vos types de contenu pour que le changement soit répliqué partout (dans tous les types de contenus créés après, et ensuite toutes les listes créées avec ces types de contenu)
  • Lors de la création de vos types de contenus : Si vous créez vos types de contenu par code, il devient alors très facile de changer la propriété de cette colonne. Celle-ci sera répliquée dans toutes les instances de listes utilisant ce type de contenu.
  • Au niveau de l’instance de liste : bien que fonctionnelle, cette solution est à éviter.

Pour cet exemple, je choisis la première solution en appliquant un script PowerShell juste après la création de la collection de sites (cet exemple reste de base, simplement pour vous montrer le principe):

Après une indexation complète, vous obtiendrez la crawled property souhaitée. Il ne vous reste plus qu’à la « mapper »!

Association de la crawled property

 

2 ème étape : « Mapper » la propriété sur une propriété de recherche

L’étape d’après consiste simplement à « mapper » cette propriété à une propriété gérée de recherche pour permettre la recherche multilingue.

Configuration de la propriété gérée

Pour le résultat final suivant:

Résultats de recherche multilingue

Utiliser les synonymes SharePoint

Une autre méthode permettant de rendre la recherche multilingue est l’utilisation de fichier de synonymes.

Les synonymes sont en effet utilisés lors de requêtes de recherche pour effectuer des extensions ou des remplacements (pour 2010 uniquement) de mots clés. Il s’agit généralement d‘un fichier (XML pour 2010, CSV pour 2013) permettant de spécifier des synonymes pour une langue particulière ou bien toutes les langues.

Je n’entre pas dans le détail ici, le principe étant simplement de faire correspondre le terme dans une langue à un autre terme dans une autre pour qu’il soit remonté par la recherche. Pour cela, on utilisera des extensions de mot clés plutôt que des remplacements.

Pour mon exemple, cela donnera simplement ceci:

En SharePoint 2010, via XML

En SharePoint 2010, les synonymes se configurent par fichiers XML selon la procédure suivante : http://technet.microsoft.com/fr-fr/library/dd361734(v=office.14).aspx

Note : L’inconvénient majeur de ce genre de solution est qu’il vous faudra créer votre fichier à la main en XML et le déployer sur chacun des serveurs de votre ferme.

Heureusement, il existe des outils pour automatiser le déploiement et rendre la saisie plus facile sous forme de CSV. Pour le script PowerShell, ça se passe ici (testé et approuvé;)).

En 2013, via CSV

En SharePoint 2013, c’est maintenant possible en CSV : http://technet.microsoft.com/fr-fr/library/jj219579.aspx

+ There are no comments

Add yours