Articles

Go Search
  

Other Blogs
There are no items in this list.
XVanneste > Articles
Personnaliser la refinement webpart de Fast Search

Introduction

Le refinement dans le Search center permet de pouvoir facilement filtrer sur l'ensemble des enregistrements afin de rendre la recherche plus pertinente. Cette WebPart se trouve par défaut sur la gauche et affiche les filtres de manière textuelle.

Il y a possibilité de personnaliser le refinement, notamment, l'ordre des catégories ou les catégories à afficher (voir http://blog.xvanneste.com/Lists/Billets/Post.aspx?ID=27 )

Ici j'ai ajouté en haut les Body Parts qui sont des métadonnées extrait de mes documents (voir http://blog.xvanneste.com/Lists/Billets/Post.aspx?ID=28 )

Mais on peut aller beaucoup plus loin dans le refinement et on peut le customiser entièrement en développant notre propre WebPart de refinement.

RefinementManager

La premiére chose à étudier est le RefinementManager. Celui-ci permet de récupérer le XML de refinement et donc les différentes catégories qui seront utilisé par le Refinement Panel.

On utilisera donc la méthode GetRefinementXml pour récupérer le XML du refinement panel.

Voici ce qu'on peut s'attendre à récupérer (seul la partie ResultType est mise pour des raisons de quantité):

<?xml version="1.0" encoding="utf-8"?>

<FilterPanel>

<FilterCategory Id="Microsoft_Office_Server_Search_WebControls_ManagedPropertyFilterGenerator__-357320691" ConfigId="Microsoft_Office_Server_Search_WebControls_ManagedPropertyFilterGenerator__-357320691" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" DisplayName="Result Type" ManagedProperty="format" ShowMoreLink="True" FreeFormFilterHint="" MoreLinkText="show more" LessLinkText="show fewer" ShowCounts="Count">

<Filters>

<Filter>

<Value>Any Result Type</Value>

<Tooltip>Any Result Type</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=</Url>

<Selection>Implied</Selection>

<Count></Count>

<Percentage></Percentage>

</Filter>

<Filter>

<Value>Rich Text</Value>

<Tooltip>Rich Text</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQlSaWNoIFRleHQGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>20</Count>

<Percentage>0.3174603</Percentage>

</Filter>

<Filter>

<Value>Adobe PDF</Value>

<Tooltip>Adobe PDF</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQlBZG9iZSBQREYGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>17</Count>

<Percentage>0.2698413</Percentage>

</Filter>

<Filter>

<Value>Microsoft Word</Value>

<Tooltip>Microsoft Word</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQ5NaWNyb3NvZnQgV29yZAZmb3JtYXQBAl4iAiIk%22</Url>

<Selection>Deselected</Selection>

<Count>15</Count>

<Percentage>0.2380952</Percentage>

</Filter>

<Filter>

<Value>Microsoft PowerPo…</Value>

<Tooltip>Microsoft PowerPoint</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22ARQBTWljcm9zb2Z0IFBvd2VyUG9pbnQGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>9</Count>

<Percentage>0.1428571</Percentage>

</Filter>

</Filters>

<MoreFilters>

<Filter>

<Value>Any Result Type</Value>

<Tooltip>Any Result Type</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=</Url>

<Selection>Implied</Selection>

<Count></Count>

<Percentage></Percentage>

</Filter>

<Filter>

<Value>Rich Text</Value>

<Tooltip>Rich Text</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQlSaWNoIFRleHQGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>20</Count>

<Percentage>0.3174603</Percentage>

</Filter>

<Filter>

<Value>Adobe PDF</Value>

<Tooltip>Adobe PDF</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQlBZG9iZSBQREYGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>17</Count>

<Percentage>0.2698413</Percentage>

</Filter>

<Filter>

<Value>Microsoft Word</Value>

<Tooltip>Microsoft Word</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQ5NaWNyb3NvZnQgV29yZAZmb3JtYXQBAl4iAiIk%22</Url>

<Selection>Deselected</Selection>

<Count>15</Count>

<Percentage>0.2380952</Percentage>

</Filter>

<Filter>

<Value>Microsoft PowerPo…</Value>

<Tooltip>Microsoft PowerPoint</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22ARQBTWljcm9zb2Z0IFBvd2VyUG9pbnQGZm9ybWF0AQJeIgIiJA%3D%3D%22</Url>

<Selection>Deselected</Selection>

<Count>9</Count>

<Percentage>0.1428571</Percentage>

</Filter>

<Filter>

<Value>Web Page</Value>

<Tooltip>Web Page</Tooltip>

<Url>/Search/Pages/results.aspx?k=anatomie&amp;r=format%3D%22AQhXZWIgUGFnZQZmb3JtYXQBAl4iAiIk%22</Url>

<Selection>Deselected</Selection>

<Count>2</Count>

<Percentage>0.03174603</Percentage>

</Filter>

</MoreFilters>

</FilterCategory>

</FilterPanel>

Comme on peut le voir on a deux grosses parties, la première est Filters qui contient la collection de filtre. Cette collection de filtre est composée du nom, du Tooltip, de l'url de refinement, du nombre de document et du pourcentage par rapport au total.

La deuxième partie est le MoreFilters qui reprend le filtre mais correspond à l'ensemble des données. (Attention dans MoreFilters on a une redondance par rapport à Filters).

Commençons notre WebPart. La première chose à faire est d'hériter de RefinementWebPart afin de récuperer l'ensemble des caractéristiques de cette webpart.

[ToolboxItemAttribute(false)]

public class RefineWP : RefinementWebPart

{}

A partir de là, on peut personnaliser le comportement du web part.

Dans le CreateChildControl on va utiliser le GetRefinementXml pour récuperer le XML. Pour cela on utilisera la variable _RefinementManager qui est héritée de RefinementWebPart.

protected override void CreateChildControls()
{
XDocument xdoc = GetXDocFromXmlDoc(this._RefinementManager.GetRefinementXml());
var q = from c in xdoc.Descendants("FilterCategory") select new RefinementXmlPart((string)c.Attribute("DisplayName").Value, (string)c.Attribute("Id").Value, (XElement)c);
FillControlLst(q);
foreach (Control ctrl in lstControl)
{
this.Controls.Add(ctrl);
}
base.CreateChildControls();
}

Ici il manque quelque test, en effet _RefinementManager peut être nulle si le xml des filter categories est mal formaté, GetRefinementXml peut aussi retourner nulle. Mais ce code est pour la démo.

 

GetXPathNavigator

Si on prend notre code tel quel, il y aura un problème de redondance, en effet la webpart RefinementWebPart dont on hérite va créer son refinement textuel, nous on veut ajouter un refinement graphique pour le Format et pour BodyPart. On aura donc deux fois format et bodypart dans le panel refinement. On va surcharger GetXPathNavigator qui permet de modifier le XML utiliser.

protected override XPathNavigator GetXPathNavigator(string viewPath)
{
XPathNavigator xpath= base.GetXPathNavigator(viewPath);
if (xpath == null)
return xpath;

XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(xpath.OuterXml);
XDocument xdoc = GetXDocFromXmlDoc(xmldoc);
var q = (from e in xdoc.Descendants("FilterCategory") where e.Attribute("ManagedProperty").Value == "format" || e.Attribute("ManagedProperty").Value == "bodyparts" select e);
q.Remove();
return xdoc.CreateNavigator();
}

Ici on sélectionne tous les nœuds du fichier XML qui pointent sur format et sur bodyparts et on les enlève du XML retourné par XPathNavigator.

On aurait pu les retirer du Filter Categories definition mais le souci c'est que les informations sont importantes pour créer les aspects visuels de refinement.

Apres nettoyage, voici le refinement panel :

Résultat

Une fois le Filter Categorie Definition complété correctement et le code de création des Charts et de l'ImageMap body de compilé. Voici ce que l'on obtient :

Les images sont bien entendu réactives :

 

Et permettent en cliquant dessus de filtrer la recherche :

Le code se trouve sur http://xvanneste.codeplex.com Nom du projet XVRefinementWP.

Comprendre l’architecture de FAST

L'architecture de Fast Search est composée de plusieurs parties principales, ci-dessous le diagramme des différentes parties :

Nom

Rôle

Crawler

Le crawler permet de faire la connexion à la source de données (SharePoint Site, Web Site…..)

Content Processor

Le content processor compile les données récupérées

Indexer

L'indexer stocke les informations traité par le content processor

Query Processor

Le Query processor traite les requêtes de l'utilisateur pour en ressortir les informations indexées

Federation

La fédération permet d'agréger différente source de données compatible Open Search

 

Le Content Processor permet de travailler les données inclues dans les documents. Le content processor, aussi appelé Pipeline de Fast Search, peut entièrement être personnalisé par code. Chaque partie peut être customisée pour les besoins de la recherche.
Par exemple des dictionnaires propres à la société peuvent être insérés dans l'entity extractor, des formats spécifiques peuvent être appris et transformés par le format conversion.

 

 

Format Conversion : Transforme différents type de fichiers en format texte

Language Encoding et Detection : Détecte le langage du document et l'encodage de celui-ci ce qui permettra le traitement sur la langue par la suite

Tokenisation : par rapport à la culture et a la langue du texte, retrouve les dates, numéro de téléphone, currency etc….

Lemmatization : Recherche les synonymes des mots et regroupe ceux-ci, par exemple résoudre, résolve, résolution.

Entity Extraction : Extrait des termes par rapport au contenu et a un ou plusieurs dictionnaires, OOTB extrait les compagnies, les personnes, la localité.

Date and Time Normalization : normalise les dates, par exemple 10/05/2010, 10 mai 2010, 10-05-2010, Lundi 10 mai 2010.

Document Vector : vectorise les documents pour retrouver les documents similaires voir les doublons.

Web Links Analysis : analyse le nombre de fois qu'un document est pris en référence pour augmenter le ranking de celui-ci.

Map Crawled Properties : Finit par mapper les métadonnées qui ont été trouvées dans les documents

Entity or Metadata Extractor [Fast Search for SharePoint 2010]

L'extraction de métadonnées permet, dans un document, d'en remonter les informations importante, par exemple dans un document historique les dates sont importantes, dans des fiches de produits le nom des produits mais aussi leur catégorie sont importants pour en faire un catalogue par exemple.

Avec Fast certaines extractions de propriété sont built in comme les compagnies, les personnes ou la localisation du document. Par exemple suite a une recherche on peut voir la liste des compagnies présentent dans les documents :

Bien entendu on peut créer notre propre extraction de métadonnées.

L'extraction de métadonnées se configure en 4 parties :

  • Création et déploiement du dictionnaire d'extraction, probablement l'étape la plus importante
  • Configuration de Fast Search pour prendre en compte le dictionnaire
  • Création de la managed metadata
  • Configuration du refinement.

Création et déploiement du dictionnaire d'extraction

Le dictionnaire est un fichier XML, vous avez droit a trois dictionnaire whole words (mot entier) et deux part word (partie de mots). Les dictionnaires sont dans c:\FastSearch\Components\resourcestore\dictionaries\matching.

Les dictionnaires en questions sont :

Wholewords_extraction{1,2,3} et

Wordparts_extraction{1,2}

Le dictionnaire que nous allons créer permet de faire un refinement en fonction de la partie du corps dont parle le document. On va donc créé un dictionnaire qui fait le matching avec :

Regroupement

Partie du corps

Tete

cou

tete

nuque

oreille

nez

bouche

dent

langue

cerveau

Buste

ventre

poitrine

dos

poumon

cœur

estomac

intestin

foie

buste

Bras

coude

mains

bras

Bassin

bassin

rein

uretre

penis

hanche

vagin

fesse

anus

Jambe

jambe

genou

pied

cheville

cuisse

Pour faire le dictionnaire le xml doit etre de la forme :

<dictionary>

<entry key="valeur a chercher" value="valeur de correspondance"/>

</dictionary>

Par exemple :

<entry key="William H. Gates" value="Bill Gates"/>

Signifie qu'à chaque fois que le moteur de recherche trouvera William H. Gates il fera le regroupement avec Bill Gates ainsi les recherches sur Bill Gates retourneront Bill Gates ET William H. Gates.

Dans notre cas il faut indiquer au moteur de recherche qu'a chaque fois qu'une recherche sur tête, par exemple, est effectuée il faut retourner tous les documents qui contiennent cou, tête, nuque, oreille, nez, bouche, dent, langue, cerveau.

On aura donc :

<dictionary>

    <entry key="cou" value="Tete"/>

    <entry key="tete" value="Tete"/>

    <entry key="nuque" value="Tete"/>

    <entry key="crane" value="Tete"/>

    <entry key="oreille" value="Tete"/>

    <entry key="nez" value="Tete"/>

    <entry key="bouche" value="Tete"/>

    <entry key="dent" value="Tete"/>

    <entry key="langue" value="Tete"/>

    <entry key="cerveau" value="Tete"/>

</dictionary>

 

Voilà le dictionnaire final bodyParts.xml:

<?xml version="1.0" encoding="UTF-8"?>

 

<dictionary>

 

<!-- the following entry will recognize the name "William H. Gates" and normalize it to "Bill Gates"

<entry key="William H. Gates" value="Bill Gates"/>

-->

 

    <entry key="cou" value="Tete"/>

    <entry key="tete" value="Tete"/>

    <entry key="nuque" value="Tete"/>

    <entry key="crane" value="Tete"/>

    <entry key="oreille" value="Tete"/>

    <entry key="nez" value="Tete"/>

    <entry key="bouche" value="Tete"/>

    <entry key="dent" value="Tete"/>

    <entry key="langue" value="Tete"/>

    <entry key="cerveau" value="Tete"/>

 

    <entry key="ventre" value="Buste"/>

    <entry key="poitrine" value="Buste"/>

    <entry key="dos" value="Buste"/>

    <entry key="poumon" value="Buste"/>

    <entry key="coeur" value="Buste"/>

    <entry key="estomac" value="Buste"/>

    <entry key="intestin" value="Buste"/>

    <entry key="foie" value="Buste"/>

    <entry key="buste" value="Buste"/>

 

    <entry key="coude" value="Bras"/>

    <entry key="mains" value="Bras"/>

    <entry key="bras" value="Bras"/>

 

 

    <entry key="bassin" value="Bassin"/>

    <entry key="rein" value="Bassin"/>

    <entry key="uretre" value="Bassin"/>

    <entry key="penis" value="Bassin"/>

    <entry key="hanche" value="Bassin"/>

    <entry key="vagin" value="Bassin"/>

    <entry key="fesse" value="Bassin"/>

    <entry key="anus" value="Bassin"/>

 

    <entry key="jambe" value="Jambe"/>

    <entry key="genou" value="Jambe"/>

    <entry key="pied" value="Jambe"/>

    <entry key="cheville" value="Jambe"/>

    <entry key="cuisse" value="Jambe"/>

</dictionary>

 

 

Maintenant on n'a plus qu'à l'uploader dans les resources de fast. Pour cela on lance le PowerShell de Fast et on met la commande :

Add-FastSearchResource –FilePath C:\Users\Administrator.XVDOM\Desktop\bodyparts.xml –Path dictionaries/matching/wholewords_extraction1.xml

Une fois que cela est fait le fichier Wholewords_extraction1.xml contient le contenu de bodyparts.xml

Configuration de Fast Search

Maintenant que le dictionnaire est fait, il faut activer le wholewordsextractor1 (qui utilise le dictionnaire XML Wholewords_extraction1.xml).

Pour cela on va dans C:\FastSearch\etc\config_data\DocumentProcessor\. Dans ce répertoire on ouvre optionalprocessing.xml.

Dans le bas du fichier on a les processors :

<processor name="wholewordsextractor1" active="no" />

<processor name="wholewordsextractor2" active="no" />

<processor name="wholewordsextractor3" active="no" />

<processor name="wordpartextractor1" active="no" />

<processor name="wordpartextractor2" active="no" />

Par défaut ils sont tous a no, bien entendu comme nous on a besoin que le wholewordsextractor1 fonctionne on va le passer a yes:

<processor name="wholewordsextractor1" active="yes" />

Pour que le fichier de configuration soit pris en compte par Fast on va redemarrer le procserver_1:

On ouvre une commande Dos (attention pas une commande powershell mais bien une Dos)

Nctrl status pour avoir l'état des services fast :

Nctrl restart procserver_1 pour redémarrer le document processor 1. Ensuite on utilise nctrl status pour voir quand il a fini de démarrer.

Maintenant on peut refaire un full crawl du connector et du query (autrement seul les nouveaux documents prendront en compte la metadata extraction)

Création de la managed metadata

Maintenant qu'on a l'extraction de configurer il faut la mapper a une manage metadata.

Premièrement on va dans Manage Service Application/ Fast Search Query/ Fast Search Administration.

Et là on sélectionne Managed Properties :

On clique sur Add Managed Properties :

Notre propriétés s'appellera BodyParts. Ensuite on clique sur add mapping car on va la mapper a wholewordsextractor1 qui est dans la catégorie MESG Linguistics.

On clique sur Add.

On met en place le stemming pour que les mots s'y rapprochant soit pris en compte (exemple cœur et coeur)

Ensuite on met que la propriété peut être query et refinement :

Maintenant on peut faire une query avec BodyParts.

Ici on a tous les documents qui parle de cou, tête, nuque, oreille, nez, bouche, dent, langue, cerveau

 

Configuration du refinement

Comme pour la langue on va ajouter un refinement pour bodyparts.

Dans le fichier XML du refinement (voir pour la langue) on ajoute la ligne :

<Category Title="Body Parts" Description="Use this filter to restrict results by company" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="1" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="20" ShowMoreLink="True" MappedProperty="bodyparts" MoreLinkText="show more" LessLinkText="show fewer" ShowCounts="Count" />

 

Attention il faut, peut-être, aussi augmenter le nombre de catégorie.

Résultat

Si une personne fait une recherche sur anatomie par exemple :

On a une catégorie dans le refinement en plus :

Si je clique sur tete :

Ici on voit dans les quelques lignes retournées dans la description quelque mot clés. Bien entendu comme tout le document n'est pas affiché les autres documents les mots clé sont dans le contenu mais pas dans la description.

Ajout du langage du document au Refinement Panel de Fast Search

Dans les managed property de Fast on a le Detected Language:

Central Administration / Manage Service Application/ Fast Search Query/ Fast Search Administration:

Dans les managed property on clique sur detected language:

On coche Refiner Property et Deep refiner:

On clique sur OK et on relance un full crawl pour mettre à jours les anciens documents.

Ensuite on édite la page de résultat de la recherche et on va dans les propriétés du refinement panel :

Dans le panel Refinement on décoche Use Default Configuration et on clique sur les trois petits points à coté de Filter Category Definition :

Dans la fenêtre on ajoute cette ligne :

<Category Title="Detected Languages" Description="Use this filter to restrict results to detected languages" Type="Microsoft.Office.Server.Search.WebControls.ManagedPropertyFilterGenerator" MetadataThreshold="1" NumberOfFiltersToDisplay="4" MaxNumberOfFilters="20" ShowMoreLink="True" MappedProperty="detectedlanguage" MoreLinkText="show more" LessLinkText="show fewer" ShowCounts="Count" />

Cette ligne ajoute la Catégorie de titre « Detected Language » avec la description correspondante, c'est une « managed property » comme on l'a vu au-dessus, elle affiche des qu'une valeur est disponible, elle en affiche 4 par défaut et jusque 20. On a le lien pour voir plus de résultat (entre 4 et 20). La propriété Mappée est detectedlanguage (en minuscule sinon on a une erreur) et les libellés pour afficher plus ou moins d'info et le compte des documents.

Maintenant quand je fais une recherche sur mon site :

 

Failed to communicate with the WCF service: Command powershell de fast

Si en exécutant une command powershell pour fast vous obtenez le message d'erreur Failed to communicate with the WCF Service, c'est parce que votre compte utilisateur ne fait pas partie du groupe FastSearchAdministrators.

Ne pas oublier de se reloguer pour que le changement de compte prenne effet.

FAST Search pour SharePoint et PDF

Fast index les documents PDF OOTB, mais cela n'est pas configuré par défaut sous SharePoint.

Sous Fast dans le répertoire Bin de Fast Search il y a un programme qui s'appelle PdfToText. Ce programme est le « iFilter » PDF pour fast.

Si dans une commande dos on tape, par exemple :

On retrouve notre fichier :

Le contenu n'est certes pas très beau pour nous mais le principal c'est que cela soit « indexable ».

Si l'on demande directement à fast d'indexer un document PDF avec l'utilitaire docpush :

Docpush –c sp pathfilepdf :

Alors on retrouve bien le fichier dans le résultat de la recherche (l'url qui est présente n'étant pas la bonne dû à l'utilisation de docpush et pas du crawl de SharePoint).

Comme on peut le voir le contenu est bien indexé.

Pareil si je fais une recherche sur une phrase du fichier :

 

Le souci c'est que si je mets le fichier dans un Library de SharePoint, et que je lance un full crawl alors je ne retrouve pas mon fichier.

Pour cela il faut en fait vérifier deux choses.

Dans l'administration centrale de SharePoint / Manage Service Applications / Fast Search Query

Dans File type il faut PDF :

En effet en haut de la page il est marqué :Use this page to specify file types to include in the content index

Par contre dans administration centrale de SharePoint / Manage Service Applications / Fast Search Connector

Dans File type il ne faut pas PDF, hors par défaut il l'est :

En effet en haut cette fois ci il est marqué : Use this page to specify file types to exclude in the content index

Et voilà pourquoi par défaut les PDF ne sont pas indexés.

Apres un full crawl :

On retrouve nos fichiers PDF et l'indexation du contenu a eu lieu. Par contre on n'a pas de miniatures J

 

FAST Search pour SharePoint et PDF

Fast index les documents PDF OOTB, mais cela n'est pas configuré par défaut sous SharePoint.

Sous Fast dans le répertoire Bin de Fast Search il y a un programme qui s'appelle PdfToText. Ce programme est le « iFilter » PDF pour fast.

Si dans une commande dos on tape, par exemple :

On retrouve notre fichier :

Le contenu n'est certes pas très beau pour nous mais le principal c'est que cela soit « indexable ».

Si l'on demande directement à fast d'indexer un document PDF avec l'utilitaire docpush :

Docpush –c sp pathfilepdf :

Alors on retrouve bien le fichier dans le résultat de la recherche (l'url qui est présente n'étant pas la bonne dû à l'utilisation de docpush et pas du crawl de SharePoint).

Comme on peut le voir le contenu est bien indexé.

Pareil si je fais une recherche sur une phrase du fichier :

 

Le souci c'est que si je mets le fichier dans un Library de SharePoint, et que je lance un full crawl alors je ne retrouve pas mon fichier.

Pour cela il faut en fait vérifier deux choses.

Dans l'administration centrale de SharePoint / Manage Service Applications / Fast Search Query

Dans File type il faut PDF :

En effet en haut de la page il est marqué :Use this page to specify file types to include in the content index

Par contre dans administration centrale de SharePoint / Manage Service Applications / Fast Search Connector

Dans File type il ne faut pas PDF, hors par défaut il l'est :

En effet en haut cette fois ci il est marqué : Use this page to specify file types to exclude in the content index

Et voilà pourquoi par défaut les PDF ne sont pas indexés.

Apres un full crawl :

On retrouve nos fichiers PDF et l'indexation du contenu a eu lieu. Par contre on n'a pas de miniatures J

 

Activer les Advanced Filter Pack sous Fast Search For Sharepoint

Fast Permet d'indexer plus de 400 types de fichiers (pdf, jpg, tiff, etc…..) mais cela n'est pas activé par defaut.
Pour l'activer :

  • Lancer le PowerShell de Fast
  • Se mettre dans le répertoire c:\FastSearch\installer\scripts\
  • Taper la ligne de commande : .\AdvancedFilterPack –enable

 

Sur la copie d'écran l'advanced filter pack avait déjà été activé.

Le Pattern & Practice SharePoint 2010 en release

Cela faisait plusieurs mois que l'équipe de chez Microsoft travailler dessus, ça y est les Pattern & Practices SharePoint 2010 sont sortie en release :

http://msdn.microsoft.com/en-us/library/ff770300.aspx

http://www.microsoft.com/downloads/details.aspx?FamilyID=64b55569-2168-4545-8b7c-f185b2cf967d&displaylang=en

Dedans vous pouvez retrouver :

Comment développer un bon système de configuration de SharePoint 2010

Le service locator qui permet de retrouver le serveur ou tourne un service applicatif SharePoint

Un logger pour SharePoint

Plus tout un ensemble de point sur le développement Sand Box ou Farm Solution etc….

 

Manager les profils utilisateurs depuis SharePoint 2010

SharePoint 2010 possède un service de synchronisation des profils utilisateurs qui fait beaucoup parler de lui J Mais un des avantages de ce services est de pouvoir manager directement les profils utilisateurs depuis l'administration central de SharePoint.

Prenons un exemple, suite à la synchronisation presque tous les utilisateurs ont les bonnes propriétés. Un seul utilisateur apparait de cette manière :

Comme vous pouvez voir xvdom\rhadley ne correspond pas au nom de la personne.

Si on va dans les paramètres du profil on obtient ceci :

Comme vous pouvez voir le Name est en lecture seule et globalement on a qu'une partie du profil de l'utilisateur. La question est comment le modifier ? On a la possibilité de le modifier dans l'AD mais cela serait rébarbatif.

Dans l'administration centrale de SharePoint -> Manage Service Application -> User Profil Service Application. On a une option qui est Manage User Profile.

A partir d'ici on peut rechercher un profile utilisateur :

Et le modifier

Ici on a beaucoup plus de propriété et notamment le nom de l'utilisateur :

Une fois modifier :

On obtient les bonnes informations de l'utilisateur

Qu'en est-il de l'ad.

Prenons un exemple, dans la saison 6 de House Robert Chase revient dans l'équipe du docteur house. Le manager repasse donc de Cuddy a House. Faisons le changement dans la gestion des profils de SharePoint :

Les modifications peuvent ne pas apparaitre de suite dans les profils dus au cache, un iisreset ou un recycle sur l'application pool peut accélérer les changements (bien entendu ne pas faire en production)

Mais qu'en est-il dans l'ad :

On a toujours Lisa Cuddy.

Relançons la synchronisation des profils (en environnement de production un timer job le fait automatiquement) :

Et voilà on a managé les profils utilisateurs à partir de SharePoint.

Attention : pour que la synchronisation soit bidirectionnelle il faut que l'utilisateur du service de synchronisation ait le droit en ecriture sur l'AD :

De plus il faut indiquer le sens des propriétés :

On va dans Manage User Properties :

On selectionne notre propriété, ici manager :

Dans l'édition on voit le mapping mis en place

On clique sur remove et on refait la propriété dans le sens inverse (mode export)

 

 

 

1 - 10 Next

 ‭(Hidden)‬ Admin Links