Les conditions dans les types de résultats : Types de contenus ou types de contenus ?

En allant plus avant dans la création de nouveaux types de résultats pour la présentation de résultats de recherche personnalisés, je me suis heurté à un élément de langage que je qualifierais pour le moins de déroutant.

D’où proviennent ces « types de contenus » (Figure 1-Liste des types de contenus) que l’on doit insérer comme condition d’un type de résultat. En cherchant dans les types de contenus de mon site, je n’ai rien trouvé comme correspondance.

result_types_1

result_types_2

Figure 1-Liste des types de contenus

La dénomination en anglais est légèrement moins déroutante (je plaisante) : on parle de « site content types » pour les types de contenus que vous connaissez déjà bien et de « types of content » (Figure 2) pour les éléments de conditions de « Result Types ».

result_types_3

Figure 2-Type of content

La liste des types de contenu (ou types of content) est non modifiable.

Elle provient d’un dictionnaire interne de type <string, PropertyRule> de la classe Microsoft.Office.Server.Search.Administration.MappedPropertyRules imbriquée dans la classe Microsoft.Office.Server.Search.Administration.PropertyRule

Le fait de sélectionner « Microsoft Word » comme type de contenu dans la liste est équivalent à définir les conditions suivantes sur la propriété personnalisée « FileType » : FileType= »docx » OR FileType= »doc » OR FileType= »docm » OR FileType= »dot » OR FileType= »dotx »

Pour être plus parlant les 2 cas suivants sont totalement identiques :

Cas 1 : Définition de conditions par type de contenu

result_types_4

Cas 2 : Définition de conditions par propriétés

result_types_5

Vous trouverez ci-dessous un tableau des équivalences :

Condition « Type de contenu » Condition avec propriétés personnalisées équivalentes
Microsoft Access
FileType="accdb" OR FileType="accdc"
OR FileType="accde" OR FileType="accdr"
OR FileType="accdt"
Microsoft Excel
FileType="xls" OR FileType="xlsx"
OR FileType="xlsm" OR FileType="xlsb"
OR FileType="xltm" OR FileType="xltx"
OR FileType="xlam"
Microsoft OneNote
FileType="one"
Microsoft PowerPoint
FileType="ppt" OR FileType="pptx"
OR FileType="pptm"
Microsoft Publisher
FileType="pub"
Microsoft Visio
FileType="vdw" OR FileType="vdx"
OR FileType="vsd" OR FileType="vss"
OR FileType="vst" OR FileType="vsx"
OR FileType="vtx"
Microsoft Word
FileType="docx" OR FileType="doc"
OR FileType="docm" OR FileType="dot"
OR FileType="dotx"
Discussion
StartsWith(ContentTypeId,"0x012002")
Répondre
StartsWith(ContentTypeId,"0x0107")
Courrier électronique
FileType="eml" OR FileType="msg"
OR FileType="exch"
Image
FileType="bmp" OR FileType="dib"
OR FileType="jpeg" OR FileType="png"
OR FileType="gif" OR FileType="rle"
OR FileType="wmf" OR FileType="ico"
OR FileType="wpd" OR FileType="odg"
OR FileType="tiff"
PDF
FileType="pdf"
Texte
FileType="odt" OR FileType="txt"
OR FileType="url" OR FileType="csv"
Vidéo SharePoint
StartsWith(ContentTypeId),"0x0120D520A808"
OR SecondaryFileExtension="wmv"
OR SecondaryFileExtension="avi"
OR SecondaryFileExtension="mpg"
OR SecondaryFileExtension="asf"
OR SecondaryFileExtension="mp4"
OR SecondaryFileExtension="ogg"
OR SecondaryFileExtension="ogv"
OR SecondaryFileExtension="webm"
XML
FileType="xml" OR FileType="infopathml"
Zip
FileType="zip"
Blog SharePoint
WebTemplate="blog"
Communauté SharePoint
WebTemplate="COMMUNITY"
Forum de discussion SharePoint
contentclass="sts_list_discussionboard"
OR contentclass="sts_listitem_discussionboard"
Bibliothèque de documents SharePoint
contentclass="sts_list_documentlibrary"
Liste SharePoint
contentclass="sts_list" OR contentclass="sts_list_432"
OR contentclass="sts_list_genericlist"
OR contentclass="sts_list_agenda"
OR contentclass="sts_list_announcements"
OR contentclass="sts_list_contacts"
OR contentclass="sts_list_events"
OR contentclass="sts_list_issuetracking"
OR contentclass="sts_list_links"
OR contentclass="urn:content-class:spspeople"
OR contentclass="sts_list_gantttasks"
OR contentclass="urn:content-classes:spssiteregistry"
OR contentclass="sts_list_tasks"
Billet Microblog SharePoint
StartsWith(ContentTypeId,
"0x01FD4FB0210AB50249908EAA47E6BD3CFE8B")
OR StartsWith(ContentTypeId,
"0x01FD59A0DF25F1E14AB882D2C87D4874CF84")
Bibliothèque d’images SharePoint
contentclass="sts_list_picturelibrary"
Site SharePoint
contentclass="sts_site"
OR contentclass="sts_web"
Enquête SharePoint
contentclass="sts_list_survey"
OR contentclass="sts_listitem_survey"
Wiki SharePoint
StartsWith(ContentTypeId),"0x010108")
OR StartsWith(ContentTypeId),
"0x010100C568DB52D9D0A14D9B2FD
CC96666E9F2007948130EC3DB06
4584E219954237AF39004C1F8B4
6085B4d22B1CDC3DE08CFFB9C")
Élément de la liste des bibliothèques d’images SharePoint
contentclass="sts_listitem_picturelibrary"
Élément de liste SharePoint
contentclass="sts_listitem_6510"
OR contentclass="sts_listitem_contacts"
OR contentclass="sts_listitem_events"
OR contentclass="sts_listitem_issuetracking"
OR contentclass="sts_listitem_links"
OR contentclass="urn:content-classes:spslisting"
OR contentclass="urn:content-class:spslisting:news"
OR contentclass="urn:content-classes:spspersonlisting"
OR contentclass="sts_listitem_gantttasks"
OR contentclass="urn:content-class:spssearchquery"
OR contentclass="urn:content-classes:spssitelisting"
OR contentclass="sts_listitem_tasks"
OR contentclass="urn:content-classes:spstextlisting"
OR contentclass="sts_listitem_genericlist"
Page web
FileType="html" OR FileType="mhtml"
AND contentclass!="sts_listitem_documentlibrary"
Fichier Vidéo
SecondaryFileExtension="wmv"
OR SecondaryFileExtension="avi"
OR SecondaryFileExtension="mpg"
OR SecondaryFileExtension="asf"
OR SecondaryFileExtension="mp4"
OR SecondaryFileExtension="ogg"
OR SecondaryFileExtension="ogv"
OR SecondaryFileExtension="webm"

Pour terminer, un petit script Windows PowerShell pour énumérer les types de résultats et leurs conditions par défaut au niveau d’une collection de sites. Il vous permettra de vérifier la correspondance entre une condition par défaut (type de contenu) et un ensemble de conditions personnalisées.

# Définition du site SharePoint
$siteUrl = "http://intranet.contoso.com";
$site = Get-SPSite $siteUrl;

# Définition d'un objet SearchObjectOwner
# pour récupérer le paramétrage de recherche
$searchOwner = New-Object 
  Microsoft.Office.Server.Search.Administration.SearchObjectOwner(
  [Microsoft.Office.Server.Search.Administration.SearchObjectLevel]::SPSite,
  $site.RootWeb);

# get current search service application
$sspApp = Get-SPEnterpriseSearchServiceApplication;

# Création d'un ResultItemTypeManager à partir
# d'une application de service de recherche
$resMgr = New-Object
  Microsoft.Office.Server.Search.Administration.ResultItemTypeManager($sspApp);

# Récupération des types de résultats liés
$resMgr.GetResultItemTypes($searchOwner, $false) | % {
  Write-Host ("{0}" -f $_.name) -foregroundcolor cyan;
  foreach ($pr in $_.Rules.PropertyRules) {
    Write-Host (" PropertyRule={0}" -f $pr) -foregroundcolor yellow;
  };
}

Travailler efficacement grâce à SharePoint 2013 #1

Dans les entreprises, des outils modernes et simples contribuent à travailler de manière efficace avec ses collaborateurs. Pour répondre aux enjeux économiques de demain, il est nécessaire d’avoir une collaboration sans failles.

SharePoint 2013 en version on premise ou sur Office 365 apporte une brique de services collaboratifs à forte valeur ajoutée pour l’entreprise.

Je vous propose de découvrir dans cette chronique quelques fonctionnalités autour du travail collaboratif qui vous permettront d’atteindre une bonne efficacité individuelle et collective.

Aujourd’hui zoom sur une fonctionnalité très demandée par les utilisateurs de la plate-forme collaborative Microsoft qui est apparue avec la version 2013 : le glisser-déposer. Il est désormais très simple de mettre à disposition des documents sur un site SharePoint.

Depuis votre explorateur Windows, glissez-déposez un ou plusieurs documents vers votre librairie de documents SharePoint. Cela fonctionne aussi si vous voulez charger un dossier contenant plusieurs fichiers, vous serez toutefois limités à des chargement de 100 documents simultanés.

Pour utiliser cette fonctionnalité il vous faudra :

  • Soit un navigateur web supportant le html5 : IE 10, Chrome ou Firefox dans leur dernière version.
  • Soit IE 8 ou IE 9 avec Office 2013 installé ou le composant gratuit skydrive pro si vous avez une version antérieure d’Office.

IE7 ne supporte pas du tout cette fonctionnalité.

Découvrez la vidéo présentant cette fonctionnalité :

Remplacer des fichiers existants dans une bibliothèque de documents sur SharePoint 2013 via une feature.

Introduction

Au cours de vos développements sur SharePoint, vous avez sûrement déjà voulu remplacer un fichier déjà présent dans une bibliothèque de documents. Et comme vous aimez faire les choses proprement, vous avez alors pensé à utiliser un Module dans une Feature et c’est alors que vous vous retrouviez confronté à une des limites des précédentes versions de SharePoint : il n’était pas possible de remplacer un fichier de manière déclarative, c’est-à-dire via l’element.xml de votre Module.

Seul l’attribut IgnoreIfAlreadyExists permettait de dire à SharePoint d’ignorer votre fichier si ce dernier existait déjà et donc de ne pas remplacer le fichier existant. Je n’ai jamais trouvé cet attribut très clair car en résumé : « on dit à SharePoint de ne pas faire quelque chose, qui de toute façon, ne sait pas faire« . 

Ci-dessous un exemple d’element.xml avec l’attribut IgnoreIfAlreadyExists :

elementXML

Au final, cela nous permettait surtout d’éviter l’erreur SharePoint suivante :

ErrorFileExists

Et si l’on souhaitait vraiment remplacer ce fichier ?

Et bien vous étiez bon pour un petit peu de code, le plus souvent en ajoutant un Event Receiver à votre Feature. Je vous passe ces quelques lignes de code dont vous n’aurez plus besoin de toute façon grâce à un tout nouvel attribut made in SharePoint 2013 !

L’attribut « ReplaceContent »

Une des nouveautés de SharePoint 2013 est donc justement de palier à cette précédente limitation. Il est maintenant possible de remplacer un fichier existant dans une bibliothèque de documents de manière déclarative via un module. Il suffit d’ajouter un ReplaceContent=”TRUE” de la même manière que vous spécifiez auparavant le IgnoreIfAlreadyExists= »TRUE ».

Ci-dessous un exemple en reprenant l’element.xml utilisé dans le premier paragraphe :

elementXML

De cette manière, SharePoint remplacera votre fichier si ce dernier existe déjà. Un seul point qui peut poser problème et sur lequel il faut être vigilant : si le fichier que vous tentez de remplacer est extrait par un autre utilisateur (en statut « check-out »), alors l’activation de votre feature vous renverra une erreur. Assurez-vous donc que rien ne perturbera le remplacement de votre fichier (workflow d’approbation ou extraction en cours par exemple).

Wissam BOUAYADI

Consultant SharePoint

MCNEXT

Les origines de résultats (results sources) pour faire une recherche Bing dans SharePoint 2013

La recherche sur SharePoint a été grandement améliorée depuis MOSS 2007. SharePoint 2010 pouvait être complété avec FAST, et SharePoint 2013 l’intègre désormais de base à l’installation permettant de trouver l’information bien plus efficacement.

Nous allons nous intéresser à la fédération de recherche, c’est-à-dire la possibilité de fédérer différentes sources de résultats lors d’une recherche dans l’intranet.

Nous allons voir comment il est possible de configurer les origines de résultats (results sources) pour réellement étendre les possibilités du moteur de recherche de SharePoint.

Le but sera à la fin de pouvoir afficher des résultats de recherche provenant de Bing et de Wikipedia, et ce directement lors d’une recherche dans SharePoint.

Les origines de résultats pour se connecter à Bing

C’est dans le concept des origines de résultats (results sources) où le moteur de recherche de SharePoint est très intéressant. Contrairement aux sources de contenus, le but n’est pas de spécifier à SharePoint ce qu’il doit indexer mais plutôt dire à SharePoint quel index utiliser, et éventuellement utiliser celui d’un autre moteur de recherche.

Sur SharePoint 2013, nous allons utiliser les « origines de résultats » (results sources), les « règles de requêtes » (query rules) et leurs « blocs de résultats » (results blocks) qui viennent remplacer les « emplacements fédérés » (federated search) ainsi que les « étendues de recherches » (scopes) de SharePoint 2010.

Nous allons configurer le moteur de recherche SharePoint pour qu’il puisse effectuer des recherches sur des moteurs tiers comme Bing.

Dans l’administration de l’application de service de recherche, nous allons dans le menu « Origines de résultats ». Nous créons une « Nouvelle origine de résultats ».

Après le nom et la description, nous pouvons configurer le protocole et avons le choix entre SharePoint local, SharePoint distant, OpenSearch 1.0/1.1, Exchange.

Dans notre cas, nous choisissons OpenSearch qui est un protocole permettant de fournir les résultats de recherche dans un format standardisé.

Ensuite, nous configurons l’URL Source en mettant http://www.bing.com/search?q={searchTerms}&format=rss , {searchTerms} étant un token qui sera remplacé par le mot que vous recherchez. Si vous allez sur http://www.bing.com/search?q=mcnext&format=rss , vous arrivez sur le format RSS de la recherche du mot « mcnext » dans Bing ; format compatible avec OpenSearch.

Nous laissons l’authentification anonyme, Bing étant un moteur de recherche où nous n’avons pas besoin d’être authentifié.

Ajout d'une origine de résultats

Ajout d’une origine de résultats

Nous retournons sur la liste des origines de résultats, où nous pouvons faire un clic droit sur « Bing » celui que nous avons créé, puis « Source de test ». En fait c’est simplement pour tester sur l’URL que nous avons mis fonctionne. Une fenêtre s’ouvre et nous dit que le test a réussi … ou non.

Test d'une origine de résultat

Test d’une origine de résultat

A ce terme de la configuration, vous pouvez déjà utiliser les WebParts de recherche pour y sélectionner la source ainsi créée. En revanche si j’utilise la page de résultats par défaut du centre de recherche, pas de changement puisque cette page utilisera une origine de résultat par défaut sans tenir compte de celle tout juste créée pour Bing. Voyons comment nous pouvons y remédier avec les règles de requêtes (query rules).

Un result block Bing avec les Query Rules

Nous cherchons donc à configurer la recherche pour que la recherche par défaut puisse amener des résultats depuis Bing. Pour cela, nous utilisons les règles de requêtes ou query rules.

Concrètement notre WebPart de recherche est configurée sur l’origine de résultats par défaut de SharePoint : « Résultats SharePoint locaux ». Lorsque nous tapons « bing mcnext », ce texte est passé par les règles de requêtes configurées pour cette origine de résultats. Chaque règle permet de transformer la requête pour effectuer des actions particulières (comme ajouter un filtre sur le type de résultats par exemple).

Dans l’administration, cliquez sur « Règles de requêtes » (Query Rules). Avant tout, vous devez sélectionner votre origine de résultat. Nous voulons agir sur celle par défaut « Résultats SharePoint Locaux » (Local SharePoint results). Une fois sélectionnée, vous voyez les différentes règles prédéfinies. Nous créons une nouvelle règle de requête pour Bing.

Dans les conditions de requêtes, nous configurons le fait que lorsqu’on commence ou termine la requête par le mot « bing », notre règle doit s’appliquer. Nous ajoutons donc deux conditions avec « correspondance de texte de la requête avancée », une pour faire correspondre le début, l’autre pour la fin de la requête.

Nouvelle règle de requête

Nouvelle règle de requête

En bas de page, vous pouvez ajouter des actions quand la règle est activée. Vous pouvez ajouter des résultats promus (best bets), ou des blocs de résultats (results blocks).

Résultat promu (best bet)

Résultat promu (best bet)

Bloc de résultats (results block)

Bloc de résultats (results block)

Nous ajoutons un bloc de résultat, une fenêtre s’ouvre. Dans la section « Requête », nous faisons chercher notre bloc de résultats dans l’origine de requête Bing tout juste créée. Dans la section « Paramètres », nous pouvons éventuellement configurer un lien « Plus de résultats » menant vers le site officiel de Bing. Nous mettons alors l’URL http://www.bing.com/search?q={subjectTerms} .

Une fois retournés sur le centre de recherche, nous cherchons donc « bing mcnext ». Les résultats s’affichent avec un bloc de résultats correspondant aux résultats du mot « mcnext » provenant de Bing. Le reste des résultats plus bas, sont les résultats de SharePoint qui correspondent aux mots clés « bing mcnext ».

Recherche Bing MCNEXT

Recherche Bing MCNEXT

Nous voyons donc comment il est possible de compléter le moteur de recherche SharePoint par un moteur de recherche externe comme Bing ou tout autre qui est compatible OpenSearch.

On peut par exemple se servir de Bing pour se connecter à Wikipedia ou autre site.

Recherche Wikipédia SharePoint

Recherche Wikipédia SharePoint

Nous avons donc vu comment le moteur de recherché SharePoint 2013 peut être étendu grâce aux origines de résultats en se connectant à d’autres moteurs de recherche. Par la suite, il est également possible d’incruster les résultats de ces moteurs dans les résultats même de SharePoint proposant aux utilisateurs une fédération de recherche efficace pour les utilisateurs.

Les blocs de résultats (results blocks) avec le moteur de recherche SharePoint 2013

Le moteur de recherche SharePoint 2013 a été amélioré en intégrant de base le produit FAST. Ce moteur intelligent peut être configuré pour les besoins de chaque organisation.

Nous allons voir comment le moteur peut être configuré pour analyser une requête, l’interpréter pour réaliser une action particulière.

L’objectif de la configuration est de faire en sorte que lorsqu’on cherche  « SFD SharePoint », SharePoint comprenne que nous cherchons des SFD (spécifications fonctionnelles détaillées), qui sont en général des fichiers Word avec une extension *.docx. Que nous cherchons donc des fichiers Word qui correspondent au mot-clé SharePoint.

Création d’une règle de requête avec un bloc de résultats

Les règles de requêtes (query rules) et les blocs de résultats (results blocks) font partie des nouveautés de SharePoint 2013.

Dans l’administration de la recherche SharePoint 2013, nous allons dans « Règles de requêtes ».

Nous sélectionnons un contexte, et plus précisément une origine de résultats. Nous prenons celle par défaut « Résultats SharePoint locaux » (Local Sharepoint results). Une liste de règles s’affichent, nous pouvons nous inspirer de celle créée par défaut pour « Word ». En faisant un clic droit sur celle-ci, nous cliquons sur « Copier ».

Dans la page qui s’ouvre, nous la nommons « SFD ».

Dans la section « Conditions de la requête », nous avons deux conditions où SharePoint cherche à reconnaître les mots comme « doc, docx, word etc. ». Une condition pour le début, l’autre pour la fin de la requête. Pour les deux conditions, nous remplaçons les différentes expressions par « SFD » et « specs », séparés par des « ; ».

Dans la section « Actions », nous pouvons sélectionner soit des résultats promus (best bets), soit des blocs de résultats (results blocks). Nous allons faire un bloc de résultat. Etant donné que nous avons copié la règle « Word », nous avons déjà un bloc configuré. Nous le modifions en cliquant sur « Modifier ».

Ajout d'une règle de requête

Ajout d’une règle de requête

Une fenêtre s’ouvre, où nous modifions le titre du bloc, en français et en anglais. Nous laissons les « paramètres » définis, ils permettent notamment de limiter le bloc à deux résultats, et d’afficher un lien « Plus ».

Edition d'un bloc de résultat

Edition d’un bloc de résultat

Une fois terminé, nous cliquons sur OK et enregistrer pour valider le bloc de résultat et la règle de requête.

Test de la requête « SFD SharePoint »

Lorsque nous retournons sur le centre de recherche, nous tapons « sfd sharepoint ».

Recherche SFD SharePoint

Recherche SFD SharePoint

Nous voyons qu’un bloc de résultats est formé en haut de tous les résultats. Ce bloc affiche les résultats de type Word d’une recherche du mot « sharepoint ». Nous voyons ensuite les autres résultats de recherche des mots « sfd sharepoint ».

Ainsi nous pouvons configurer le moteur de recherche afin qu’il comprenne nos contraintes métier comme le fait de retrouver un fichier Word lorsque nous parlons de « SFD », ou encore un fichier Powerpoint lorsque nous cherchons « diapos » ou « planches ».

Les Composed Looks dans SharePoint 2013

Introduction

Beaucoup de choses ont changé depuis l’arrivée de la nouvelle version de SharePoint. Vous rappelez-vous des thèmes dans SharePoint 2010 ? Et bien dites maintenant bonjour aux …  Composed Looks !

Change the look

Galerie des Composed Looks

Les Composed Looks, c’est quoi ?

Pour en donner une définition simple, les Composed Looks sont un assemblage de composants graphiques qui vont vous permettre en un minimum d’effort  de créer des thèmes.

Bien sûre, ces derniers ne seront pas pertinents pour tous vos projets mais ils ne sont pas à négliger car cette nouvelle fonctionnalité va vous permettre de composer une charte graphique de manière très simple en utilisant :

  • une Master Page
  • une palette de couleurs
  • une palette de polices
  • une image de fond

Lire la suite

Configuration de la topologie de recherche sharepoint 2013

Les GEDs SharePoint dépassent couramment le million de documents.

Dans ce contexte, il faut créer (au moins) deux indexeurs en équilibre de charge, ce qui nous permettra en plus d’offrir de la tolérance de panne.

1.       Préambule

La source d’info :

On retrouve logiquement une grande partie du paramétrage de fast sur http://technet.microsoft.com/fr-fr/library/jj219705.aspx

un PFE indien a fait un post de blog dessus.

Les prérequis :

Pas de tests en prod !

          Deux serveurs SharePoint 2013 sur lesquels on n’a pas encore crée de service de recherche (de toute façons, vous ne voulez pas du wizard pour une install en production 😉

  • o   Le service de recherche ne doit pas être démarré sur les autres nœuds. Si oui, il faut faire un Stop-SPEnterpriseSearchServiceInstance -identity (noeud)

          Un répertoire local de stockage sur chaque serveur ou (mieux) plusieurs répertoires sur un espace partagé. Ils doivent exister et êtres vides.

  • o   Sur ces répertoires, le compte de ferme doit avoir le contrôle. Ceci se fait en accordant une permission au groupe local WSS_ADMIN_WPG qui le contient.
  • o   Un bug fait que les répertoires sont testés localement sur le serveur ou on lance le script. Ils doivent donc être tous être crées sur ce nœud si le stockage est local.

          Classiquement :

  • o   Ouvrir une session avec le compte d’Install de la ferme
  • o   Lancer Powershell en mode administrateur

Si vous avez créé un service de recherche avec une topologie incorrecte, ou que le script échoue, une chance, dropper un service applicatif prend deux lignes J

 $spapp = Get-SPServiceApplication -Name « Search Service Application »
 Remove-SPServiceApplication $spapp -RemoveData

A faire avant chaque tentative. Gardez aussi à l’esprit que l’ordonnanceur interne de SharePoint n’est pas en temps réel, il vaut mieux donc attendre 5 mn avant de relancer le script au cas  où un job serait encore dans la file du SPTIMER.

2.       Les rôles

On doit répartir les rôles query, admin, stats et content sur nos deux nœuds.

Dans mon exemple, je suivrais la matrice suivante :

ROLE

SPIDX1 (Principal)

SPIDX2 (Backup)

CRAWL

X

X

ADMIN

X

 

CONTENT

X

X

STATS

X

 

QUERY

X

X

3.       Les partitions

          Le minimum pour l’équilibrage est deux partitions  (0/1)

          Le minimum pour la tolérance de panne est de découper en un maitre et un replica pour chaque partition (0/1 répliqué en 1/0)

On aura donc quatre composants Index.

4.       Le script

Partant de cette configuration, on peut commencer à écrire le script :

J’ai utilisé la nomenclature du technet.

# RAZ!

# Supprime le service applicatif et les BDD existantes

$spapp = Get-SPServiceApplication -Name « Search Service Application »

Remove-SPServiceApplication $spapp -RemoveData

#==============================================================

#Configuration Search Service Application (SSA)

#==============================================================

$SearchApplicationPoolName = « SearchAdminApplicationPool »

$SearchApplicationPoolAccountName = « SP2013\SP_SEARCH »

$SearchServiceApplicationName = « Search Service Application »

$SearchServiceApplicationProxyName = « Search Service Application Proxy »

$DatabaseInstance = « SQL2012\SPSQL2013 »

$DatabaseName = « Sharepoint2013_SearchService »

#Nom des serveurs d’index

$App1 = “SPIDX1”

$App2 = « SPIDX2 »

#Reps Exemples. Attention à mettre deux reps differents en Stockage partagé!

$IndexLocationServer1 = « D:\IDX_HostA »

$IndexLocationServer2 = « D:\IDX_HostB »

# Création des reps (avec le bug local)

New-Item -Path « \\SPIDX1\d$\IDX_HOSTA » -type directory -force

New-Item -Path « \\SPIDX1\d$\IDX_HOSTB » -type directory -force

New-Item -Path « \\SPIDX2\d$\IDX_HOSTB » -type directory -force

#==============================================================

# Création du Pool s’il n’existe pas

#==============================================================

Write-Host -ForegroundColor DarkGray « Test – Pool SSA »

$SPServiceApplicationPool = Get-SPServiceApplicationPool -Identity $SearchApplicationPoolName -ErrorAction SilentlyContinue

if (!$SPServiceApplicationPool)

{

Write-Host -ForegroundColor Yellow « Création – Pool SSA »

$SPServiceApplicationPool = New-SPServiceApplicationPool -Name $SearchApplicationPoolName -Account $SearchApplicationPoolAccountName -Verbose

}

#==============================================================

#Search Service Application

#==============================================================

Write-Host -ForegroundColor DarkGray « Test – SSA »

$SearchServiceApplication = Get-SPEnterpriseSearchServiceApplication -Identity $SearchServiceApplicationName -ErrorAction SilentlyContinue

if (!$SearchServiceApplication)

{

Write-Host -ForegroundColor Yellow « Création – SSA »

$SearchServiceApplication = New-SPEnterpriseSearchServiceApplication -Name $SearchServiceApplicationName -ApplicationPool $SPServiceApplicationPool.Name -DatabaseServer $DatabaseInstance -DatabaseName $DatabaseName

}

Write-Host -ForegroundColor DarkGray « Test – SSA Proxy »

$SearchServiceApplicationProxy = Get-SPEnterpriseSearchServiceApplicationProxy -Identity $SearchServiceApplicationProxyName -ErrorAction SilentlyContinue

if (!$SearchServiceApplicationProxy)

{

Write-Host -ForegroundColor Yellow « Création – SSA Proxy »

New-SPEnterpriseSearchServiceApplicationProxy -Name $SearchServiceApplicationProxyName -SearchApplication $SearchServiceApplicationName

}

#==============================================================

# Démarrer le service – IDX1

#==============================================================

$HostA = Get-SPEnterpriseSearchServiceInstance -Identity $App1

Write-Host -ForegroundColor DarkGray « Test – SSI 1 »

if($HostA.Status -ne « Online »)

{

Write-Host -ForegroundColor Yellow « Démarrage – SSI 1 »

Start-SPEnterpriseSearchServiceInstance -Identity $HostA

While ($HostA.Status -eq « Online »)

{

Start-Sleep -s 5

}

Write-Host -ForegroundColor Yellow « SSI 1 Démarré »

}

#==============================================================

# Démarrer le service – IDX2

#==============================================================

$HostB = Get-SPEnterpriseSearchServiceInstance -Identity $App2

Write-Host -ForegroundColor DarkGray  » Test – SSI 2″

if($HostB.Status -ne « Online »)

{

Write-Host -ForegroundColor Yellow  » Démarrage– SSI 2″

Start-SPEnterpriseSearchServiceInstance -Identity $HostB

While ($HostB.Status -eq « Online »)

{

Start-Sleep -s 5

}

Write-Host -ForegroundColor Yellow « SSI 2 Démarré »

}

#==============================================================

# Créer une nouvelle topologie vide pour pouvoir la modifier, et la remplir.

#==============================================================

$InitialSearchTopology = $SearchServiceApplication |

Get-SPEnterpriseSearchTopology -Active

$NewSearchTopology = $SearchServiceApplication | New-SPEnterpriseSearchTopology

#==============================================================

# Composants IDX1 : Stats, Index, Crawl, Admin, Query

#==============================================================

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA

New-SPEnterpriseSearchCrawlComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA

New-SPEnterpriseSearchAdminComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA

#==============================================================

# Composants IDX2: Index, Crawl, Query (noeud de backup)

#==============================================================

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB

New-SPEnterpriseSearchCrawlComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB

#==============================================================

# Création de deux indexs, deux partitions = 4 replicas

# spécifier les répertoires permet d’éviter de le stocker dans « Office Servers… »

# A = 0/1 B= 1/0

#==============================================================

New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA -IndexPartition 0 -RootDirectory $IndexLocationServer1

New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB -IndexPartition 1 -RootDirectory $IndexLocationServer2

New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostA -IndexPartition 1 -RootDirectory $IndexLocationServer1

New-SPEnterpriseSearchIndexComponent -SearchTopology $NewSearchTopology -SearchServiceInstance $HostB -IndexPartition 0 -RootDirectory $IndexLocationServer2

#==============================================================

# Enregistrement de la topologie

#==============================================================

Write-Host -ForegroundColor Yellow « Enregistrement tolologie »

Set-SPEnterpriseSearchTopology -Identity $NewSearchTopology

#==============================================================

# Suppression de l’ancienne

#==============================================================

Write-Host -ForegroundColor DarkGray « Suppression tolologie.old »

Remove-SPEnterpriseSearchTopology -Identity $InitialSearchTopology -Confirm:$false

Write-Host -ForegroundColor Yellow « Supprimée »

#==============================================================

#Check Search Topology

#==============================================================

Get-SPEnterpriseSearchStatus -SearchApplication $SearchServiceApplication -Text

Write-Host -ForegroundColor Yellow « Topologie configurée! »

 5.       Résultat attendu :

topo

 On peut aussi tester en ligne de commande par, par exemple,

 Get-SPEnterpriseSearchStatus –SearchApplication « Serch Service Application »

 Emmanuel ISSALY

Architecte Infrastructure Sharepoint

MCNEXT