Archives de la catégorie Développement

Lors de ma dernière session de présentation à l’UGSF, et dans cet article sur la recherche SharePoint pour le marketing et la CRM, nous avions présenté plusieurs modes d’intégration possibles de la recherche SharePoint 2010 avec Twitter.
Je vais ici vous présenter de manière détaillée deux modes d’intégration et leurs implémentations respectives, mais avant, un petit rappel simple sur le fonctionnement de base du moteur de recherche de SharePoint.

L’indexation des sources de contenus

Il s’agit ici du mode de fonctionnement classique de SharePoint. Il est configurable depuis l’administration centrale :

Dans cet exemple, plusieurs sources de contenus sont définies :

  • Les sites SharePoint (C’est la moindre des choses !)
  • Un site Web
  • Une base de données métier (Ici une CRM)

En somme, à une fréquence définie (et configurable), le moteur de recherche SharePoint va lire l’ensemble de ces contenus (les crawler), les indexer (en extraire les informations, les formater…), puis les rendre accessibles au travers de ses écrans de recherche, par exemple ici une recherche sur un site Web :


Pour ce faire, SharePoint utilise des connecteurs paramétrables qui lui permettent d’accéder à différentes sources de données, notamment :

  • Sites SharePoint
  • Sites Web
  • Partages réseau
  • Dossiers publics Exchange
  • Applications métiers
  • Source personnalisée

Vous retrouvez ces options depuis le formulaire de création d’une nouvelle source de contenus :


On peut même développer ses propres connecteurs, qui seront alors accessibles depuis l’option « Custom Repository »… Mais alors pourquoi ne pas indexer directement Twitter avec un connecteur spécifique ?

  • D’abord parce que Twitter n’est pas en soit une source de données accessible pour l’indexation du fait de limitations techniques (nombre de requêtes…)
  • Surtout parceque votre index serait démesurément grand ! En général un index représente 30% de la taille du contenu original…

Il y a en réalité deux options viables pour intégrer ce type de média :

  • Par fédération
  • Par API

La fédération de moteurs de recherche

Cette première option consiste à utiliser le mécanisme de fédération présent dans le moteur de recherche SharePoint.

Pour être tout à fait complet, cette option est disponible nativement pour SharePoint Server (Standard et Enterprise) et par intégration de Search Server pour SharePoint Foundation.
En quelques mots, la fédération consiste à déléguer le travail de crawling et d’indexation à un moteur de recherche distant, puis à l’appeler pour récupérer les résultats lorsqu’une recherche est déclenchée par un utilisateur.

Voici un exemple de fédération du moteur de recherche Bing dans SharePoint :


Donc dans notre exemple, nous allons faire appeler le moteur de recherche de Twitter par celui de SharePoint.
Pour ce faire, naviguez jusqu’à l’écran de gestion du moteur de recherche SharePoint, sélectionnez « Federated location » dans le menu puis cliquez sur « New location » :

Renseignez les différents champs informatifs :

Puis renseignez ces valeurs dans les champs de la zone « Location information » :

  • Location type : OpenSearch 1.0/1.1
  • Query Template : http://search.twitter.com/search.atom?q={searchTerms}
  • « More results » link template : http://search.twitter.com/search?q={searchTerms}

Vous avez défini une fédération c’est bien… Mais afin de faire apparaître les résultats dans vos pages de recherche, vous allez devoir les configurer.

Pour ce faire, exécutez une recherche sur votre SharePoint, puis depuis la page de résultats, dans le menu « Actions du site », cliquez sur « Modifier la page » :

Cliquez dans une zone de la page sur « Ajouter un composant WebPart » :

Puis sélectionnez une Web Part « Résultats fédérés » dans la catégorie « Rechercher » :

Cliquez sur « Ajouter », puis utilisez la fontion « Modifier le composant WebPart » :

Dans la liste « Emplacement », sélectionnez « Twitter » puis cliquez sur « OK »

Enregistrez et publiez vos modifications (Menu Actions du site \ Publier ) :

Relancez une recherche et admirez le résultat 😉

A noter que le présentation des résultats (Layout, styles…) est personnalisable via XSL.

Comme vous l’avez constaté pendant la configuration, cette méthode repose sur le protocole OpenSearch, vous trouverez des informations détaillées et les dernières spécifications à cette adresse :

http://www.opensearch.org

D’autres moteurs sont accessibles au travers de ce protocole, et Microsoft propose en téléchargement les fichiers de configuration de plusieurs médias à cette adresse :

http://technet.microsoft.com/en-us/sharepoint/ff727944/

Une fois téléchargés, vous pouvez les importer depuis l’écran de gestion des fédérations en utilisant la fonction :

L’intégration applicative par API

Cette seconde option consiste à utiliser les API Search de Twitter pour effectuer les requêtes et afficher les résultats dans vos pages.

La manière « lourde »

La manière « lourde » consisterait à effectuer une intégration serveur complète entre SharePoint et Twitter (Identification via oAuth, utilisation d’une query de recherche, formatage des résultats via un template…). Cette option est tout à fait réalisable, et vous trouverez des exemples pratiques pour différentes plateformes et langages en consultant le SDK à cette adresse :
https://dev.twitter.com/docs/using-search

Bien que très souple, cette solution et aussi assez complexe et réservée aux développeurs. Je vous propose donc une solution alternative plus accessible.

La manière « légère »

Ce que je vous propose ici est blen plus léger, et consiste à intégrer dans vos pages un widget fourni par Twitter, et à le configurer pour afficher les résultats souhaités.
Les plus pointilleux me feront remarquer qu’il ne s’agira pas d’une recherche sur les tweets du passé, mais d’un filtre sur les messages en temps réel. C’est vrai, mais l’idée de l’usage de ce widget est justement d’obtenir un instantané des conversations en cours, pas d’obtenir un cliché du passé.

Cette méthode se décompose en 3 étapes :

  1. Obtenir et configurer le widget original Twitter
  2. Modifier le widget pour lui transférer les paramètres de recherche SharePoint
  3. Intégrer le widget modifié à vos pages de recherche SharePoint

1. Obtenir et configurer le widget original Twitter

Commencez par configurer votre widget depuis cette adresse :
https://twitter.com/about/resources/widgets/widget_search

Depuis cet écran, pensez surtout à personnaliser les couleurs des bordures et du texte afin qu’elles correspondent à la charte graphique de votre plateforme SharePoint :


Et ne vous occupez pas de la zone « Search query » pour l’instant, nous définirons plus tard sa valeur.

Une fois vos personnalisations réalisées, cliquez sur « Finish & Grab code », puis copiez le code généré.

Observons ce code :

On constate qu’il est composé de deux blocs :

  • La première ligne ne fait que charger dans la page le script « Widget.js » depuis les serveurs de Twitter.
  • Le reste du code crée une instance d’un objet « Widget » du namespace « TWTR » avec certains paramètres.

2. Modifier le widget pour lui transférer les paramètres de recherche SharePoint

Si vous observez vos pages de recherche SharePoint, vous constaterez que les paramètres de recherche sont transmis via l’URL sous cette forme :

http://monserveur/sites/search/Pages/results.aspx?k=MARECHERCHE

Voici donc une légère modification du script original, qui va simplement, au chargement de la page de résultats de recherche, lire la valeur « MARECHERCHE » du paramètre « k » dans l’URL, puis la passer à l’attribut « search » du widget :

Pour aller plus loin, vous pouvez aussi configurer le widget pour qu’il utilise des opérateurs de recherche avancés.

Consultez le SDK Twitter au besoin :
https://support.twitter.com/articles/71577

3. Intégrer le widget modifié à vos pages de recherche SharePoint

Maintenant que vous avez configuré et modifié votre widget, vous allez pouvoir l’intégrer à votre page de recherche.

Mais vu que je suis d’un naturel gentil, altruiste et généreux (oui pas tout le temps je sais ;-)), voici de quoi intégrer twitter plus rapidement…

J’ai simplement packagé le widget avec les modifications nécessaires pour qu’il puisse être importé directement dans vos pages de recherche SharePoint.

Commence  par télécharger ce fichier : Twitter Widget for SharePoint Search (DWP)
Il contient une Web Part déjà configurée avec tout le code nécessaire.

Vous n’avez plus qu’à ouvrir votre page de résultats de recherche puis passer en mode édition par le menu « Actions du site » :

Ouvrir le menu d’ajout d’une Web Part :

Importer le fichier précédemment téléchargé :

Cliquez sur télécharger puis sélectionnez la Web Part importée :

Sauvegardez et publiez vos modifications :

Et oh miracle ! Votre page de résultats de recherche SharePoint et Twitter fonctionne !

Bilan

La solution du fichier DWP est pratique pour tester le fonctionnement finalisé, mais vous devrez utiliser une autre méthode plus industrialisée pour passer en production. En quelques mots :

  1. Enregistrer le script JS dans un fichier dédié
  2. Publier ce fichier sur une URL accessible (SharePoint ou non), par exemple dans une bibliothèque SharePoint, le dossier « Layout »…
  3. Référencer ce script dans une « Content Editor Web Part » (CEWP) et la positionner sur la page de recherche (Déploiement par script…)
Si vous m’en faites la demande, je pourrai publier une procédure détaillée de mise en production à l’occasion.

J’espère que cet article vous a intéressé, n’hésitez pas à me solliciter si vous rencontrez des problèmes dans la mise en oeuvre de cette solution !

Publicités

Très impressionnant Mathias, bravo !

The World is mine

Au cours des 12 derniers épisodes, je vous ai un peu raconté ma vie…
Mais je vous ai surtout fait partagé ce qui m’a sans doute le plus influencé dans le monde du développement .Net/Java.

Maintenant la boucle est bouclée: je me suis lancé sur le développement d’un serveur d’application .Net avec pour influence:

  • EasyPHP
  • Tomcat
  • Spring DM Server
  • OSGI
  • Spring.net
  • COM
  • Gigaspaces
  • Google Chrome
  • Eclipse RCP

Si je reviens au premier épisode d’introduction : Mathias est heureux… mais pourquoi ? je vous montre une pauvre screenshot d’une petite application Winform… mais qu’est-ce que ça cache?

Et bien, cette application exploite mon « moteur à la OSGI » pour :

  • charger des plugins, soit dans un AppDomain, soit dans un processus
  • démarrer dynamiquement les instances de service IService qui font office de point d’entré du plugin
  • demander aux services de se dessiner dans la fenêtre principale

Cela donne quelque chose similaire à…

View original post 411 mots de plus