service de recherche

SP2013–Mise en place du centre de recherche & configuration

Posted on Updated on

 

Bonjour à tous. Dans le précèdent article : SP2013–Création de l’application de service de recherche & overview, nous avons configuré l’application de service de recherche (Search Service Application) sur notre plateforme SharePoint 2013. Nous avons également parcouru l’ensemble des menus permettant de configurer notre moteur de recherche d’entreprise.

Dans cette exploration, certains changements sont apparu, en particulier au niveau des scopes qui ont disparu au profit des “Result sources”.

Nous allons essayer, dans cet article, de mettre en place un centre de recherche et de configurer l’application de service de recherche pour centraliser les recherches dans ce search center.

Commençons par créer une collection de sites de type “Centre de recherche d’entreprise”.

1/ Création de la collection de sites. Nous nous rendons dans l’administration centrale de SharePoint, cliquer sur le lien “Create site collections” :

01

 

Nous allons remplir le nom de la collection de sites (“Search Center” dans mon cas), la description, l’url (“search” dans mon cas) et sélectionner le modèle de site : Enterprise > Enterprise Search Center. Il faut bien sûr compléter le nom de l’administrateur de cette nouvelle collection (labs\spfarm pour moi) et cliquer sur “OK” :

02

03

 

Et bien sûr… nous patientons… :

04

 

Le résultat apparait enfin, le centre de recherche est créé. On clique sur le lien, la page d’accueil de ce nouveau centre de recherche se charge :

05

06

 

On tente une recherche et bien sûr aucun résultat n’apparait puisque le composant de crawl et ses sources de contenu n’ont pas été paramétrés et qu’aucune indexation n’a été lancée :

07

 

2/ Pour pouvoir tester l’indexation des PDF, native dans SharePoint 2013, j’ai préalablement ajouté un document PDF dans une bibliothèque de documents “Documents” sur ma collection de sites principale. J’ai utilisé ce document : http://download.microsoft.com/download/2/6/2/26253C22-D8EC-4230-A3ED-E2DEED9E8EBE/Microsoft%20SharePoint%20Workspace%202010%20Product%20Guide_Final.pdf.

 

3/ Paramétrage des sources de contenu. Dans le précédent article, nous avons créé l’application de service de recherche. Nous nous rendons donc sur la page d’administration de cette application, dans l’administration centrale de SharePoint 2013 :

08

 

On clique sur “Manage service applications” et on clique sur notre application de service de recherche (Search Service Application) :

09

 

Nous voila sur la page d’accueil de l’application, sur la gauche on sélectionne “Content Sources” :

10

 

Nous arrivons sur la page permettant de gérer les sources de contenu. Une source est déjà disponible “Local SharePoint sites”. Elle est en “Idle” (en attente, arrêtée) et aucune indexation n’a encore été lancée. On clique sur le lien “Local SharePoint Sites”, la page de ses propriétés apparaissent :

11

 

Dans les paramètres de cette source de contenu, nous voyons principalement les paramètres de la dernière indexation (type, début, durée), les url qui ont été indexées (sites SharePoint, profils, etc.) :

12

 

Ainsi que les paramètres des planifications (schedules) des indexations, qu’elles soient complètes (Full Crawl) ou incrémentielles (Incremental Crawl). Une petite nouveauté fait son apparition ici, le “Continuous Crawl” qui nous permettra d’indexer en continu cette source de données. Attention toutefois à la charge consommée par ce type de crawl qui peut être certes lissée mais consommera en continu des ressources que ce soit en terme de CPU, mémoire, disque mais également réseau. En terme d’architecture (topologie), on pourrait par exemple penser à un serveur dédié aux indexations.

On retrouve également la notion de priorité des sources de contenu (pour l’indexation) comme dans SharePoint 2010 :

13

 

On tente de lancer une indexation complète :

14

 

Un message d’avertissement nous demande de confirmer, nous confirmons :

15

 

L’indexation complète se lance (Starting). Il nous faudra patienter jusqu’à ce que la source de contenu repasse en Idle :

16

17

 

4/ L’indexation est terminée, nous pouvons vérifier que ce PDF a bien été indexé en copiant son adresse (url) dans SharePoint et en utilisant le Crawl Log. Nous commençons donc par copier cette adresse et on utilise le menu contextuel sur la source de contenu :

18

19

 

On s’aperçoit qu’il y a des “success”, des “warnings” et des “errors”. En cliquant sur le nombre en dessous de “success”, la page résumant les documents et pages indexées apparaissent. On entre l’adresse du document dans la textbox en haut (“Type a URL or host name. Use the * character as a wildcard.”) et on valide en cliquant sur “Search” :

20

 

Le document apparait bien (en “success”), le pdf est donc bien indexé :

21

 

5/ Nous pouvons dorénavant lancer une recherche sur notre collection de sites ou le search center. J’utilise le texte : “SharePoint Workspace Synchronization Details” qui apparait dans le PDF (dans le contenu), le document PDF remonte bien !

22

23

Au passage, on peut noter les nouveautés coté présentation des résultats du plus bel effet, avec au survol l’apparition des métadonnées du document, et des actions :

  • Follow => j’ai eu une erreur, alors que le UserProfile est configuré…
  • Send => mailto : envoie un mail formaté avec l’url de ce document
  • Open => ouvre le document
  • View Library => ouvre la bibliothèque contenant ce document

Ou encore sur la gauche des slicers permettant de filtrer par exemple sur la date de modification du document (tous, plus de 1 an, plus de 1 mois, etc.) et une représentation graphique synthétisant le nombre de documents sur les périodes proposées :

29

 

6/ L’indexation fonctionne donc correctement. Il nous faut maintenant vérifier que cela fonctionne. Sur la page d’accueil de notre collection de sites principale, une liste déroulante (dropdown) est apparu dans la zone de recherche. Lorsque nous sélectionnons “This Site”, les recherches sont redirigées vers la page OSSSearchResults.aspx :

30

31

 

Et si l’on sélectionne “Everything”, les recherches sont automatiquement redirigées vers le centre de recherche défini dans l’administration de l’application de service de recherche :

32

33

 

Durant cette phase de configuration, il n’a que très peu de nouveautés abordées. On notera les indexations continues, l’url de Search Center globale définie dans l’administration de l’application de service… et bien sûr une toute nouvelle présentation ! On sent toutefois un gros travail qui a été réalisé avec la “fusion” de la recherche d’entreprise de SharePoint et FAST Search et des nouveautés qui n’ont pas encore été abordées (voir l’article précédent). Nous verrons tout cela dans une configuration avancée de cette nouvelle recherche SharePoint… Il reste du travail ! Stay Tuned Sourire

Advertisements

SP2013–Création de l’application de service de recherche & overview

Posted on Updated on

 

Bonjour à tous. Je reviens une fois de plus pour vous parler de configuration d’applications de service (Service Applications), et cette fois-ci je vais m’appuyer sur le scénario comprenant la création de cette application à partir de l’administration centrale de SharePoint.

 

Voyons donc comment nous allons nous y prendre pour créer cette application.

 

1/ Rendons nous sur la page d’accueil de l’administration centrale de SharePoint 2013, et cliquons sur “Manage service applications” :

01

02

 

2/ L’application de service de recherche n’est pas créée. Nous allons donc commencer par créer cette application de la même manière qu’avec SharePoint 2010. On utilise le ruban : New > Search Service Application :

03

 

L’assistant permettant de créer cette application de service apparait. Cette fenêtre reprend complètement les paramètres demandés pour la création de ce service avec SharePoint 2010. On nous demande en effet :

  • Un nom de service : “Search Service Application”
  • Search Service account : compte qui sera utilisé pour lancer le service Windows associé à cette application de service (dans mon cas, j’ai un compte de domaine spécialisé pour les applications de services : Labs\spserviceapps)
  • Un pool d’application pour l’administration de l’application de service de recherche, avec une identité (compte géré)
  • Un pool d’application pour le WebService associé à l’application de service de recherche avec une identité (compte géré)

04

 

05

 

06

 

On lance la création de l’application de service de recherche grâce au bouton “OK” en bas de page. Cela peut prendre quelques minutes…

07

…voir même carrément planter ! Ca a été le cas lors de ma configuration, le processus de création ne s’est jamais terminé => PREVIEW !

Pourtant en relançant l’administration centrale de SharePoint 2013, l’application de service été bien créé et démarrée :

08

 

Et en cliquant sur cette ligne, on arrive sur la page résumant l’état du service, tout à l’air ok à première vue :

09

 

3/ Pourtant, on remarque tout de suite un message “pas normal” dans le bas de page : “Unable to retrieve topology component health states. This may be because the admin component is not up and running” :

11

 

Voyant ce message, j’ai pensé à l’instance d’une application de service qui ne serait pas démarrée, sans succès. Après analyse du log, de l’observateur d’évènement et un coup de google, je me suis aperçu que je n’étais pas le seul à avoir ce problème. J’ai donc suivi un workaround proposé ici : http://sharepointstruggle.blogspot.fr/2012/07/sharepoint-2013-unable-to-retrieve.html

Il suffit de télécharger les 3 updates pour Windows Server 2008R2, les installer, faire les Windows Update et redémarrer.

=> Windows Updates à installer :

    Une fois le serveur redémarré, tout à l’air de fonctionner, le message d’erreur n’apparait plus. A la place, on a un tableau résumant la topologie de la recherche. Dans mon cas, tout les composants sont sur le même serveur :

15

 

4/ Faisons maintenant le tour des liens proposés dans le “Quicklaunch”…

1. Premier lien “Farm Search Administration” :

10

Il n’y a pas grand chose dans cette page, on y retrouve principalement des informations sur la topologie.

 

2. Second lien “Crawl Log”. Les administrateur SharePoint connaissent déjà cette page qui leur permettait d’accéder aux différentes erreurs, warning lancées par l’indexation (le crawl) des sources de données :

16

 

3. Troisième lien “Crawl Health Reports”. Ici encore, on retrouve des informations que nous proposait déjà SharePoint 2010 avec des statistiques concernant l’indexation des informations/fichiers avec des filtres proposés dans le haut de page : source de contenu, composant, dates de début/fin. Ces données sont présentées sous formes de graphes (courbes). On retrouvait ce graphique dans les “Search Administratives Reports” dans SharePoint 2010 :

17

 

4. Quatrième lien “Query Health Reports”. Toujours dans le même sens que la page précédente, on nous propose ici des statistiques mais sur les recherches lancées par les utilisateurs ce coup-ci. On retrouve des filtres (date de début/fin, type de client), les données sont présentées sous forme de graphes :

18

 

5. Cinquième lien, “Usage Reports”. Ici c’est nouveau ! SharePoint 2013 nous propose de télécharger des fichiers Excel (xlsx) contenant des informations sur :

  • Nombre de requêtes
  • Requêtes les plus utilisées par jour
  • Requêtes les plus utilisées par mois
  • Requêtes sans résultats par jour/mois

C’est nouveau mais cela a un gout de déjà vu… En effet ces données étaient disponibles à travers les rapports proposés par l’application de service de recherche de SharePoint 2010.

 

6. Sixième lien “Content Sources”. Ce menu est bien connu de tous les administrateurs, c’est ici que nous allons définir du contenu qui sera indexé par l’application de service en question :

20

Ici rien n’a changé, la présentation reste la même et les informations également.

 

7. Septième lien “Crawl Rules”… rien de nouveau :

21

 

8. Huitième lien “ Server Name Mappings”… rien de nouveau :

22

 

9. Neuvième lien “File Types”… rien de nouveau :

23

 

10. Dixième lien “Index Reset”… rien de nouveau :

24

 

11. Onzième “Crawler Impact Rules”… rien de nouveau :

25

 

12. Douzième lien “Authoritative Pages”… rien de nouveau :

26

 

13. Jusqu’ici, nous n’avons pas remarque de nouveautés notables sur ces divers lien. Le treizième quant à lui, est totalement nouveau. Il s’appelle “Result sources”. Cette page va nous permettre de définir de sources de provenance pour les résultats de recherche en particulier dans le cas de fédération de diverses sources de contenu (SharePoint, Web, DFS, Exchange public folders, etc.). Ce système est dédié à remplacer les Scopes (effectivement ils n’apparaissent plus à aucun endroit dans cette administration de la recherche).

Ils ont l’avantage d’être localisés au niveau des collections de sites et plus au niveau même de l’administration de l’application de service de recherche. On peut donc les déclarer (et les rendre disponibles) au niveau des collections de sites. On devine dès à présent que certaines options doivent être disponibles au niveau de l’administration des collections de site… :

27

 

14. Quatorzième lien, “Query Rules”. Cette page va nous permettre d’établir des règles concernant les sources établies au menu précédent (les fameuses result sources). On pourra ainsi construire des règles complexe afin que nos résultats de recherches ne concordent pas seulement avec le terme entré par un utilisateur mais plutôt à un ensemble de termes. Par exemple si l’utilisateur entre “SP” ou “SharePoint” ou “SharePoint Online” ou “Office 365”, on proposera un bloc présenté différemment avec un lien pointant vers la page consacrée à SharePoint sur le site de Microsoft.

28

 

15. Quinzième lien “Query Client Types”. Ce menu reste un peu obscur pour le moment, il s’agit de prioriser le renvoi de résultats suite au lancement d’une recherche et ce suivant le type de client (et donc de fixer un seuil à atteindre avant que cette fonctionnalité soit atteinte, ils l’appellent le “query throttling”). Aucune trace dans le SDK, Technet ou MSDN…

29

 

16. Seizième lien “Search Schema”. Il s’agit ici en fait d’une fonctionnalité qui existait avec SharePoint 2010 (et 2007) qui s’appelait les “Managed Properties”. SharePoint (ou l’administrateur) vont déclarer ici des propriétés gérées, mappées sur des champs créés dans nos listes/bibliothèques de document afin de promouvoir ces propriétés et de pouvoir, par exemple, les utiliser comme paramètre ou filtre dans une recherche avancée :

  • Searchable : inclu le contenu de cette propriété gérée dans l’index et est donc recherchable comme terme en lui-même
  • Queryable : la propriété gérée peut être utilisée dans les requêtes complexes de type “[nom de la propriété]:[Valeur]” => recherches avancées
  • Retrievable : la propriété gérée peut être retournée dans les résultats de recherche
  • Refinable : la propriété peut être utilisée dans les WebPart de raffinement
  • Sortable : la propriété gérée peut être utilisée pour le tri des résultats

30

 

17. Dix-septième lien “Query Suggestions”. Ce menu va vous permettre de paramétrer des suggestion (le fameux “Did you mean XXXXX ?”) qui apparaissent dans SharePoint 2010. Ici vous pourrez exporter les suggestions actuelles dans un fichier TXT, les enrichir et ré-importer le fichier. Ce fichier est bien-sûr différent en fonction de la langue de l’interface de SharePoint.

Petite nouveauté également, le possibilité d’interdire certaines suggestions (une sorte de “noise words” appliqué aux suggestions) avec ici aussi la possibilité d’utiliser un fichier d’export/import :

31

 

18. Dix-huitième lien “Search Dictionaries”. Le lien nous renvoie vers le service de métadonnées gérées (Managed Metadata Service : MMS) :

32

 

19. Dix-neuvième lien “Search Result Removal”. Ce menu (comme avec SharePoint 2010) vous permettra d’exclure automatiquement des résultat provenant des urls (à partir de la racine de l’url que vous fournirez), ces résultats ne remonteront donc pas dans les résultats de recherche :

33

 

Dernière petite chose, à partir de la page d’accueil de l’administration de cette application de service, vous avez la possibilité de définir un “Search Center” global pour votre plateforme SharePoint. Plus besoin de le déclarer sur chacune des collections de sites, tout est centralisé dans l’administration de ce service.

35

 

Voila, nous avons fait un tour rapide de cette “nouvelle” application de service. Nous y retrouvons pas mal de concepts déjà présents avec SharePoint 2010 mais également de nouveaux (en particulier les “result sources” qui devraient nous simplifier la présentation des résultats suivant leur type, et remplaceront les “Scopes”).

On peut également ajouter, qu’avec cette mouture de SharePoint 2013, Microsoft supporte nativement l’indexation de PDF (ce que nous faisions avec un iFilter auparavant) . De plus, le crawler supporte également l’indexation de mailboxes Exchange.

 

Il nous reste maintenant à mettre tout cela en œuvre… peut être au prochain épisode !

SP2010 – Configurer Search Server avec PowerShell – Part 2

Posted on Updated on

Voici donc la suite logique des choses, comment configurer des étendues dans SharePoint 2010 Search Server à l’aide de PowerShell !

La première partie expliquant comment créer des sources de contenu se trouve ici : https://kazoumoulox.wordpress.com/2011/10/06/confsearchpowershell-part1/

Première étape, lancer le Management Shell pour SharePoint 2010, depuis le menu Démarrer > Tous les programmes > Microsoft SharePoint 2010 Products > SharePoint 2010 Management Shell :

Launch management shell

Ensuite, il faut récupérer l’instance du service de recherche avec la ligne (Entre les quotes, c’est le nom de l’application de service qui a été créée dans les précédents articles):

  • $searchapp = Get-SPEnterpriseSearchServiceApplication “Service de Recherche de SharePoint 2010 créé par Powershell”
Nous allons ensuite créer une étendue (Scope en Anglais) toujours à l’aide de Powershell :
  • $MyScope = New-SPEnterpriseSearchQueryScope -Name “Première Etendue PowerShell” -Description “Première étendue créée avec Powershell” -SearchApplication $searchapp -DisplayInAdminUI $true
=> La variable $true est une variable globale de PowerShell, pas besoin de la déclarer
Dans l’administration centrale, dans les étendues de recherche associées à l’application de service “Service de Recherche de SharePoint 2010 créé par Powershell”, on retrouve bien la nouvelle étendue (pas de règles pour le moment) :
Nous allons à présent ajouter des règles sur cette nouvelle étendue, par exemple lui indiquer quel contenu nous voulons inclure à l’étendue. Dans mon cas, tout le contenu se trouvant dans l’étendue créée précédemment :
  • New-SPEnterpriseSearchQueryScopeRule -RuleType PropertyQuery -ManagedProperty ContentSource -PropertyValue “Nouvelle Source” -FilterBehavior Include -url http://labs-sp2010 -scope $MyScope -SearchApplication $searchapp
Je voudrais ensuite ajouter une nouvelle règle me permettant de ne remonter que les éléments de certains types de contenu. Pour cela, il faut utiliser la méthode de Glyn Clough que vous trouverez ici : http://www.glynblogs.com/2011/01/create-a-content-type-search-refinement-panel-in-sharepoint-2010.html afin de pouvoir ajouter une propriété gérée pointant sur le type de contenu de chaque élément stocké dans SharePoint (autant documents que items).
En suivant ce tutorial, on obtient dans notre cas :
Création de la propriété gérée :
On la nommera ContentTypeForSearch, on pourra ajouter une petit description et on conservera le type texte pour la propriété. Ensuite, on veillera à ce que “Inclure les valeurs à partir de toutes les propriétés analysées mappées” soit bien sélectionné. Puis il faudra cliquer sur le bouton “Ajouter un mappage” :
Dans la popup modale qui apparaît, on recherchera la propriété ows_ContentType et on cliquera sur OK :
Sélectionner ensuite “Autoriser l’utilisation de cette propriété dans les zones” ainsi que “Ajoutez la propriété gérée au jeu de résultats personnalisé récupéré sur chaque requête. Remarque : par défaut, seuls les 2 premiers kilo-octets de données sont disponibles à l’affichage.” et enfin valider la page en cliquant sur OK :
On voit alors cette nouvelle propriété apparaître dans la liste avec les propriétés suivantes :
J’ai donc une nouvelle propriété gérée mappée sur la propriété ows_ContentType. il me reste à présent à lancer une indexation complète des données par le moteur de recherche de SharePoint. Cela se fait en utilisant le lien “Sources de contenu” sur la gauche puis en utilisant le menu contextuel sur la source de contenu et “Démarrer l’analyse complète” tel que suit :
L’analyse peut être un peu longue suivant le volume d’informations à indexer et suivant la configuration de votre serveur (Processeurs/RAM en particulier). Il faut donc attendre la fin de l’indexation :
OU ALORS…. On peut le faire en Powershell (vous y avez cru hein !!! genre on ne peut pas faire ça en PowerShell…)  !!!
Rappelez-vous, au début de l’exercice nous avions : $searchapp = Get-SPEnterpriseSearchServiceApplication “Service de Recherche de SharePoint 2010 créé par Powershell”.
  • Nous allons donc commencer par $metadatacategory = Get-SPEnterpriseSearchMetadataCategory –Identity SharePoint -SearchApplication $searchapp
  • Puis $metadatacategory pour vérifier le contenu :
On voit donc qu’il y a 156 propriété indexées dans le magasin de cette application de service de recherche. Nous allons maintenant récupérer celle concernant les types de contenu : ows_ContentType :
  • $crawledproperty = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Name ows_ContentType
  • Puis $crawledproperty 
On peut comparer avec les valeurs indiqués lorsque l’on regarde les propriétés de la propriété indexée :
Nous avons donc bien récupéré la propriété indexée “ows_content”. Il va maintenant falloir créer notre propriété gérée, mappée sur cette propriété indexée. Pour cela, toujours grâce à Powershell on créée une propriété gérée nommée ContentTypeSearch2 (on conserve la première pour pouvoir comparer) :

Et dans SharePoint, la nouvelle propriété gérée apparaît bien mais il y a deux soucis. Le premier est que cette propriété ne référence pas encore la propriété indexée “ows_ContentType” et également nous avions positionné “Ajoutez la propriété gérée au jeu de résultats personnalisé récupéré sur chaque requête. Remarque : par défaut, seuls les 2 premiers kilo-octets de données sont disponibles à l’affichage.” et cela n’est pas sélectionné dans notre cas.
Première chose donc, mapper la propriété gérée et la propriété indexée :
  • New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -ManagedProperty $managedproperty -CrawledProperty $crawledproperty
Dans la page SharePoint des propriétés de cette propriété gérée, on a alors :
La propriété gérée est bien mappée à la propriété indexée… Magique !  Par contre pour trouver comment cocher l’option “Ajoutez la propriété gérée au jeu de résultats personnalisé récupéré sur chaque requête. Remarque : par défaut, seuls les 2 premiers kilo-octets de données sont disponibles à l’affichage.”… sacré challenge !
En effet, aucune propriété ne permet de le faire directement (par exemple un attribut de $managedproperty qu’il faudrait mettre à True). Pas aussi simple.
Comment faire… ??? Le plus simplement que j’ai trouvé est d’ouvrir la page http://labs-sp2010:65000/_admin/search/managedproperty.aspx?property=ContentTypeForSearch2&appid={50762837-130c-4346-b7d8-f5432de62ad4} avec le bloc note et identifier dans quelle “assembly” (DLL) est situé le “code behind” exécuté lorsque l’on clique sur OK. J’ouvre donc “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Server.Search.dll” à l’aide de ILSpy ou Reflector afin de décompiler le code de cette DLL.
Je parcours alors les namespace et classes de cette assembly pour trouver la bonne classe : Microsoft.Office.Server.Search.Internal.UI.ManagedPropertyPage et la bonne méthode appelée sur le clic bouton : OkButtonClicked :
Et on localise un bout de code où l’on teste que la case à cocher (checkbox) en question est cochée ou pas :
Et on voit que deux propriétés sont mises à jour !!! QueryPropertyBlob et PutInPropertyBlob (à True pour les deux). Il faudra donc sans doutes mettre ces deux propriétés à jour par PowerShell. Je me lance alors dans le test :
  • $managedproperty.QueryPropertyBlob = $true
  • $managedproperty.PutInPropertyBlob = $true
  • $managedproperty.Update()

Et le grand test :
CA MARCHE !!! WAAAAAAAAOUUUUUUUU
Maintenant, il suffit de lancer une indexation complète, bien sûr par PowerShell (je vous rappelle) :
  • $contentsource = Get-SPEnterpriseSearchCrawlContentSource ”Nouvelle Source” -SearchApplication $searchapp
  • $contentsource.StartFullCrawl()
Lorsque l’indexation sera terminée, la dernière opération consistera à ajouter une règle sur notre étendue de recherche permettant de filtrer les résultat sur le type de contenu (pour rappel, nous voulions tous les documents remontés par la source de contenu “Nouvelle Source” et qui sont du type de contenu “TOTO” (c’est un exemple… :p )).
Mais ce sera pour la prochaine partie !  J’ai commencé cet article en octobre… il est temps qu’il sorte enfin. A bientôt donc !