Search

IT Pro Magazine – SharePoint 2013 en 5 points

Posted on

Hello à tous

Dans le numéro du moi de Mai, vous pouvez trouvez mon article sur SharePoint 2013 en 5 points.

Consultable sur le site : www.itpro.fr

Bonne lecture !

 

SharePoint 2013 : Taxonomy & Search Service Application Database & VariantType

Posted on

Beaucoup de changement sont apparus au niveau du moteur de Search, la cause étant le renouveau en terme d’architecture, FAST oblige, mais aussi la capacité à tenir la charge notamment sur la haute disponibilité. Ici je me suis intéressé sur le schéma de base de données de Search Service Application Database, qui s’est vu offrir de nouvelle table et modèle. Je me concentre plus particulièrement sur les gestion de la Taxonomy. En effet, lors de certains test relatif à la construction de champs taxonomique purement CUSTOM (TAXHTFIELD0 etc..), je me suis demandé si les VariantType lors de la création via Powershell étaient toujours renseignés au sein des tables SQL sous SharePoint 2013. Il s’avère que NON, car le modèle à changer et permet aujourd’hui d’offrir plus de souplesse.

 

SharePoint 2010 Schéma :

Voici le schéma relatif à la gestion de la Taxonomy sous Search, en somme un schéma assez simple.

2010mapping

 

Le contenu de la table MSSManagedProperties

2010-managed

Suivi du contenu de la table MSSCrawledProperties où nous retrouvons notre Colonne VariantType.

 

2010-crawl

SharePoint 2013  Schéma :

Voici maintenant l’évolution , ca risque de piquer un peu !

 

image

 

Cette fois-ci nous retrouvons de nouvelle tables et relations, l’existant de 2010 est présent mais a été remanié.

MSSSchemaOwner : Schéma Directeur , Permet la gestion du multi tenant et d’assuré de la disponibilité sur la ferme, elle comprend MSSTenant et MSSSiteCollection

Dépendent d’elle : MSSSchemaPropertyMappings, MSSCrawledProperties, MSSManagedProperties, MSSSchemaPropertyMappingsPending, MSSManagedPropAlias, MSSMnagedPropOverrides

 

Notons aussi l’évolution de la table MSSCrawledProperties

2013

Comme vous le pouvez constater le VariantType a disparu.

Ainsi que MSSManagedProperties

image

VariantType Déprécié:

Afin de vérifier que la création de d’une nouvelle CrawledProperty et de m’assurer que les VariantType ont bien disparu, direction MSDN

http://technet.microsoft.com/en-us/library/ff608064(v=office.15).aspx l’on voit l’option VariantType est toujours supporté.

Alors un petit script pour tester :

$searchapp = Get-SPEnterpriseSearchServiceApplication
$cat = Get-SPEnterpriseSearchMetadataCategory -SearchApplication $searchapp -Identity People
$crawlprop = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category $cat

New-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Name "MyCrawlProp" -PropSet "00110329-0000-0110-c000-000000111146"

-Category "People" -IsNameEnum $false -VariantType 4127 -IsMappedToContents $false

 

Et lors de son exécution l’on s’aperçoit qu’elle est finalement dépréciée !

image

 

La CrawledProperty est bien créée mais ne possède plus la propriété VariantType ( Un champ vide se situe sous PropertyName)

image

Nous pouvons conclure qu’il vous faudra lors de la migration de certains scripts s’assurer que les options soient disponible.

IT Pro Magazine : SharePoint, Search et la Taxonomie

Posted on

Hello à tous !

Dans le numéro d’octobre, vous pouvez retrouver en détail l’exploitation de la Taxonomie dans le moteur de recherche ” Search”.

Consultable bientôt sur le site : www.itpro.fr

 

 

Magazine Programmez – SharePoint 2010 PowerShell & Search

Posted on

Hello à tous !

Ce mois-ci dans le numéro de Programmez vous retrouverez un article sur l’exploitation de la brique Search via des scripts PowerShell.

L’article est téléchargeable ici : http://www.programmez.com/magazine.php

Bonne lecture

SharePoint 2010 : UGSF- Taxonomy & Search (Conférence)

Posted on

Le mois de Juin, sera dédié au moteur Search  et Fast de SharePoint 2010 !  Le User Group SharePoint France, présentera le 21 Juin, chez Microsoft, des conférences sur ces sujets. Je présenterai en l’occurence  l’utilisation de la “Taxonomie avec Search ( Best Practices )”.

Le programme : http://www.ugsf.fr/BLOGUGSF/Lists/Billets/Post.aspx?ID=6

Les Slides :

View more : Nabil Babaci
Bonne Lecture

Sharepoint 2010 – PowerShell et Search (Metadata)

Posted on

Dans notre article nous allons aborder la modification de propriété d’indexation du moteur de recherche, ainsi que celle des Métadonnées gérées de SharePoint 2010 en PowerShell.

L’objectif recherché est de proposer des exemples simples, compréhensibles et de voir comment via l’utilisation de ILSPY, que certaines commandes ne sont pas si complètes que ça.

 

Crawling

Trois cmdlets sont principalement utilisées pour le Crawling : Get-SPEnterpriseSearchMetadataCrawledProperty, qui permet de récupérer les propriétés, Set-SPEnterpriseSearchMetadataCrawledProperty, celle-ci pour les mettre à jour et New-SPEnterpriseSearchMetadataCrawledProperty, pour la création.

Voici un exemple afin de récupérer des composants existant et de les mettre à jour avec la propriété IsMappedToContents qui permet de faire un mapping sur des métadonnées existantes, nous utilisons un fichier XML pour la récupération des éléments.

<? xml version=”1.0″ encoding=”utf-8″?>

<SearchProperties>

<ServiceName>Search Service Application</ServiceName>

<CrawledProperties>

<CrawledProperty Name=”ows_ContentType” />

</CrawledProperties>

<ExistingProperties>

<ManagedProperty Name=”ContentType”/>

</ExistingProperties>

<NewManagedProperties>

<!–Types = 1:Text, 2:Integer,3:Decimal,4:DateTime,5:YesNo,6 :Binary–>

<ManagedProperty Type=”4″ Name=”Demo”>

<Map Category=”Basic” Variant=”64″>15</Map>

</ManagedProperty>

</NewManagedProperties>

</SearchProperties>

 

Voici maintenant le code de Recherche :

if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )

{

Add-PsSnapin Microsoft.SharePoint.PowerShell

}

#Fichier XML

[System.Xml.XmlDocument] $XmlDoc = new-object System.Xml.XmlDocument

$file = resolve-path(“.MonFichier.xml”)

if (!$file)

{

Write-Host “Fichier non trouvé- Opération Annulé.” -ForegroundColor red

Break

}

write-host -f Green “Traitement du fichier:” $file

$XmlDoc = [xml](Get-Content $file)

 

#Parse des données

$sa = $XmlDoc.SearchProperties.ServiceName

$searchapp = Get-SPEnterpriseSearchServiceApplication $sa

 

$CrawledPropNodeList = $XmlDoc.SearchProperties.CrawledProperties

 

write-host -f Yellow ” Recherche des données Crawl existantes :”

foreach ($CrawledPropNode in $CrawledPropNodeList.CrawledProperty)

{

$SPCrawlProp = $CrawledPropNode.Name

#Vérification

if($crawledproperty =Get-SPEnterpriseSearchMetadataCrawledProperty -Name $SPCrawlProp -VariantType $SPCrawlVariant -SearchApplication $searchapp -ea “silentlycontinue”)

{

write-host -f Green “Des Crawl existent: Nom :” $crawledproperty.Name “- Indexé :” $crawledproperty.IsMappedToContents

write-host  “Mise à jour :”

$crawledproperty | Set-SPEnterpriseSearchMetadataCrawledProperty -IsMappedToContents $True

 

write-host -f Green “Nom :” $crawledproperty.Name “- Indexé :” $crawledproperty.IsMappedToContents

}

else

{

write-host -f Red “Veuillez vérifier dans le fichier XML et Sharepoint qu’ils existent”

}

}

 

Metadata

Concernant les Metadata ici nous utilisons deux méthodes Get-SPEnterpriseSearchMetadataManagedProperty, pour récupérer des métadonnées et Set-SPEnterpriseSearchMetadataManagedProperty, pour la mise à jour.

Concernant les attributs nous utilisons EnabledForScoping, pour définir l’indexation, FullTextQueriable, pour rendre la propriété requêtable, RespectPriority qui correspond dans votre interface utilisatrice aux phrases suivantes : « Inclure les valeurs à partir de toutes les propriétés analysées mappées » ou « Inclure les valeurs à partir d’une propriété analysée unique en fonction de l’ordre spécifié »

function ExistingMeta

{

#Gestion de propriétés pour Settings

 

$OthersPropertyNodeList = $XmlDoc.SearchProperties.ExistingProperties

foreach ($PropertyNode in $OthersPropertyNodeList.ManagedProperty)

{

$SharePointProp = $PropertyNode.Name

if($mp=Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $SharePointProp -ea “silentlycontinue” )

{

if($mp.EnabledForScoping -eq $False)

{

$mp | Set-SPEnterpriseSearchMetadataManagedProperty -EnabledForScoping 1

}

if($mp.FullTextQueriable -eq $False)

{

$mp | Set-SPEnterpriseSearchMetadataManagedProperty -FullTextQueriable 1

}

if($mp.RespectPriority -eq $False)

{

$mp | Set-SPEnterpriseSearchMetadataManagedProperty -RespectPriority 1 -ea “silentlycontinue”

}

}

}

}

 

Concernant la création nous utilisons la cmdlet suivante New-SPEnterpriseSearchMetadataManagedProperty

try

{

write-host “Création :”

$mp = New-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Name $SharePointProp -Type $SharePointPropType -EnabledForScoping 1 -FullTextQueriable 1

$mp.HasMultipleValues = $True

$mp.Update()

}

catch [Exception]

{

write-host -f Red “Erreur de création” $_;

}

 

Pour associer un mapping au Metadata il vous faut exécuter le code suivant :

 

$PropertyNodeList = $XmlDoc.SearchProperties.NewManagedProperties

foreach ($PropertyNode in $PropertyNodeList.ManagedProperty)

{

$SharePointProp = $PropertyNode.Name

$SharePointPropType = $PropertyNode.Type

$SharePointPropMapList = $PropertyNode.Map

$SharePointPropMultiple = $PropertyNode.Multiple

 

foreach ($SharePointPropMap in $SharePointPropMapList)

{

$SPMapCat = $SharePointPropMap.Category

$SPMapName = $SharePointPropMap.InnerText

$SPVariant = $SharePointPropMap.Variant

$cat = Get-SPEnterpriseSearchMetadataCategory –SearchApplication $searchapp –Identity $SPMapCat

$prop = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category $cat -Name $SPMapName -VariantType $SPVariant

write-host -f Cyan $cat.Name “-” $prop.Name

$mp=Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $SharePointProp -ea “silentlycontinue”

try

{

write-host “Création de la donnée finale”

$property = New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -CrawledProperty $prop -ManagedProperty $mp

}

catch [Exception]

{

write-host -f Red “Erreur de création de la donnée finale” $_;

}

}

}

 

ILSPY

 

Deux propriétés ne sont pas accessibles au niveau des options des cmdlets, celles qui apparaissent dans la section suivante de l’interface utilisatrice des métadonnées : « Optimiser le stockage des propriétés gérées »

Pour mettre à jour les propriétés nous utilisons ILSPY afin de voir le code appelé dans la librairie suivante : Microsoft.Office.Server.Search.dll puis nous cherchons la propriété suivante : Microsoft.Office.Server.Search.Internal.UI.ManagedPropertyPage, la méthode correspondante à OkButtonClicked(object sender, EventArgs e). Dans cette méthode nous observons que deux propriétés n’existent pas dans les attributs des cmdlets,  QueryPropertyBlob = true; et PutInPropertyBlob = true;

Il ne vous reste plus qu’à les appeler dans votre code PowerShell de la façon suivante :

$mp. QueryPropertyBlob = $True

$mp. PutInPropertyBlob = $True

$mp.Update()

 

Notons toutefois que ces propriétés sont référencées dans la MSDN et sont pleinement accessible en utilisant les API de SharePoint. En conclusion nous avons la possibilité grâce à PowerShell d’automatiser certains processus de création et de modification des composants de recherche.