Présentation et personnalisation du moteur de recherche de MOSS 2007
Date de publication : 10/10/2007
Par
Stephane Eyskens (Tutoriaux et articles) (Blog)
Cet article a pour but de présenter le moteur de recherche inclus dans MOSS 2007. J'aborderai également la manière
de personnaliser ce moteur afin de l'exploiter au mieux.
I. Présentation du moteur
II. Les sources de contenu (Content Sources)
II-A. Les différents types de sources
II-B. Création d'une source personnelle
II-C. Les différentes manières de construire l'index
II-C-1. Full Crawl
II-C-2. Incremental Crawl
II-C-3. Les règles (crawl rules)
II-C-4. Les exclusions
III. Les portées de recherche (scopes)
III-A. Qu'est-ce qu'un scope?
III-B. Créer un scope
III-C. Ajout d'un scope dans la collection de sites
IV. Créer un Search Center utilisant un scope personnel
IV-A. Créer le search center
IV-B. Créer les pages de recherche et de résultat
IV-B-1. Création de la page de recherche
IV-B-2. Création de la page résultat
IV-C. Ajouter les onglets dans le search center qui pointent vers notre scope
V. Ajouter une colonne personnelle (de liste) dans le moteur de recherche
V-A. Création de notre colonne
V-B. Ajout de la colonne dans les propriétés gérées par le moteur (managed property)
V-C. Utilisation de notre propriété dans un moteur de recherche avancé
VI. Utiliser une colonne liée aux profils utilisateurs dans le moteur de recherche
VI. Personnalisation des résultats
VI-A. Ajout de Best Bets et de mots clés
VI-B. Personnalisation de l'affichage des résultats via XSLT
VIII. Conclusion
I. Présentation du moteur
De la même manière que le moteur de WSS 3, le moteur de recherche de MOSS 2007 permet de rechercher un ou plusieurs mots dans
le contenu des documents stockés dans Sharepoint. Il permet également de rechercher dans le metadata (métadonnée) associé aux documents ou
aux listes personnelles ou encore aux profils utilisateurs.
Il permet également de créer des sources de recherche différentes de Sharepoint et des zones de recherche personnelles.
La gestion du moteur s'effectue dans la centrale d'administration au niveau du SSP (Shared Services Provider) ou éventuellement grâce à l'outil en ligne de commande stsadm. L'utilisation du moteur
se fait quand à elle dans la partie applicative de Sharepoint c'est à dire au niveau des collections de sites. MOSS 2007 offre des modèles de
sites facilitant la création d'espaces de recherche.
II. Les sources de contenu (Content Sources)
Les sources de contenu permettent d'effectuer des recherches sur des données issues de sources
différentes. Cela va d'une ressource réseau partagée, au site Sharepoint ou au site Web hébergé sur un
serveur tiers.
II-A. Les différents types de sources
Il existe actuellement cinq types de sources différents.
- Sharepoint Sites:Ce type permet de spéficier une source de données issue de Sharepoint
- Web Site:Ce type permet de spécifier n'importe quelle ressource externe se trouvant sur le web.
- File Shares:Ce type permet de spécifier une ressource réseau (partage) contenant des fichiers partagés et pour lesquels on désire effectuer des recherches
- Exchange public folders:Ce type permet de spécifier un répertoire Exchange
- Business Data:Ce type permet de spécifier une ressource contenue dans le BDC pour autant que celle-ci ait été construite avec les énumérateurs requis. Vous pouvez utiliser un bon exemple (AdventureWorks2000.xml) qui se trouve dans le SDK et qui fonctionne très bien
II-B. Création d'une source personnelle
Lorsque vous installez MOSS, une ressource est automatiquement créée, celle-ci est nommée "Local Office Sharepoint Server Sites". Elle permet d'effectuer une recherche
sur tous les sites Sharepoint. Elle inclut par défaut toutes les applications créées dans Sharepoint. Chaque nouvelle application
que vous créerez sera automatiquement ajoutée à ce content source et toutes les collections et sites contenus dans cette application seront
automatiquement indexées par le moteur sauf exclusion explicite.
Pour créer une source personnelle, vous devez aller dans SSP=>Search Settings=>Content Sources=>Add Content Source et vous
arrivez sur cet écran
Vous devez choisir le type de source, lui donner un nom et en fonction du type de source, vous devrez spécifier une URL à partir de laquelle
le moteur doit crawler ou bien une application dans le cas d'un BDC.
Vous pourrez à partir de cet écran spécifier une planification automatique de l'exécution de la réindexation totale ou partielle.
Dans notre exemple, on va créer une nouvelle source qui pointe sur un partage de fichiers. Nous utiliserons ensuite ce content source dans un scope. Il est donc
important de procéder à cette étape avant de passer aux autres sections de ce tutoriel. Veuillez procéder comme suit:
- Créez un répertoire "Demo" sur votre disque dur, placez-y deux fichiers un word et un exel
- Partagez ce répertoire afin qu'il soit accessible via le chemin \\<votre machine>\\Demo
- Allez dans la centrale d'administration Sharepoint, créez une nouvelle source à partir de l'écran illustré ci-dessus
- Appelez-là "Demo", spécifiez le type "File Shares" et saisissez "\\<votre machine>\\Demo"
- Cochez la case "Start Full Crawl" et cliquez sur Ok
La nouvelle source doit être en train de s'indexer, elle aura de ce fait le status "Crawling Full", vous devez attendre que ce status
passe en "Idle". Dans notre exemple, ce doit être très rapide car nous n'avons mis que deux documents dans la ressource partagée.
Lorsque l'indexation est terminée, vous devriez constater que le nombre d'éléments dans votre index général a augmenté.
En cliquant sur Search Settings => Content Sources and Crawl Schedules, vous devriez à présent obtenir ceci
Nous réutiliserons cette source dans les sections suivantes.
II-C. Les différentes manières de construire l'index
II-C-1. Full Crawl
On peut décider de reconstruire l'index de manière totale en spécifiant un Full Crawl, soit indexation totale.
Lorsque l'on choisit ce type d'indexation, le système nettoie entièrement l'index existant et le reconstruit en repartant de zéro.
Cette manière de procéder peut bien sûr prendre un certain temps en fonction des différentes sources définies dans le système.
Il est préférable d'éviter une réindexation complète pour des raisons de performance. Il est par contre obligatoire de refaire une
indexation totale lorsque des règles d'indexation ont été ajoutées/modifiées/supprimées (voir Crawl Rules ici plus bas).
II-C-2. Incremental Crawl
Un Incremental Crawl soit indexation partielle consiste à mettre à jour l'index existant en y ajoutant/supprimant les éléments
nouveaux/supprimés contenus par les différentes sources. Une indexation partielle est moins coûteuse en terme de performance et doit donc être privilégiée comme tâche planifiée.
II-C-3. Les règles (crawl rules)
Ces règles sont appliquées durant l'indexation totale ou partielle. Elles peuvent servir à exclure explicitement certaines URL, elles peuvent également servir à spécifier
un compte d'authentification différent selon la resource indexée.
II-C-4. Les exclusions
Cet écran permet de spécifier une liste d'URL pour lesquelles on ne souhaite pas obtenir de résultat dans le moteur de recherche. Une règle d'exclusion
sera alors créée.
III. Les portées de recherche (scopes)
III-A. Qu'est-ce qu'un scope?
Un scope permet de spécifier une zone de recherche dans le but de permettre à l'utilisateur d'affiner sa recherche. Par défaut
les scopes All Sites et People sont disponibles. Ceux-ci permettent donc à l'utilisateur d'effectuer une recherche soit dans tous les
sites, soit de rechercher une personne. Ils ne peuvent donc pas effectuer une recherche dans la zone "Finance" ou "Ressources Humaines" par exemple.
En créant des scopes personnels, on va pouvoir permettre à l'utilisateur de limiter ses recherches à une zone bien précise.
Les scopes répondent à une ou plusieurs règles qui vont permettre au moteur d'intégrer les résultats de l'indexation de manière à précisémment délimiter
les résultats aux scopes définis.
Deux scopes sont automatiquement créés par le système, il s'agit de "All Sites" et de "People".
Le scope "All Sites" se compose de deux règles
| All Content |
Cette règle spécifie d'inclure tous les sites Sharepoint existants |
| contentclass = .... |
Cette règle demande au système d'exclure tous les profils utilisateurs qui font bien sûr partie de "All Content" afin d'éviter que des résultats de recherche concernant des profils apparaissent à la fois dans une recherche de type "All Sites" et de type "People" |
L'autre scope automatiquement créé est "People" et il demande au système de n'inclure que les ressources de type "Profil Utilisateur".
III-B. Créer un scope
Pour créer un scope, vous devez aller dans Search Settings->View Scopes->New Scope
Ensuite, vous devez lui ajouter une ou plusieurs règles. Celles-ci peuvent être de type:
- Web Address: permet de spécifier une URL à partir de laquelle il faut inclure/exclure le contenu dans le scope
- Property Query: permet de spécifier une condition sur une propriété de metadata autorisé
- Content Source: permet de spécifier une source de contenu parmi les sources définies sur le système. C'est ce type que nous utiliserons dans notre exemple
- All Content: indique au système de prendre tout le contenu.
Lorsque l'on a choisi un type de règle, il faut indiquer au système ce qu'il faut en faire
- Include: tous les éléments conformes à la règle seront inclus sauf ceux qui seraient exclus par une autre règle
- Require: chaque élément du scope doit être conforme à la règle quelles que soient les autres règles
- Exclude: chaque élément conforme à cette règle sera exclu du scope
Ajoutez le scope Demo avec la règle qui pointe sur la source de contenu "Demo" préalablement créée comme illustré sur l'image ci-dessous et cliquez sur Ok.
Lorsque vous avez ajouté le scope, vous pouvez revenir sur l'écran précédent (search settings) afin de forcer la mise à jour
du scope en cliquant sur "Start Update" entouré en rouge dans l'image ci-dessous.
Ceci fait, cliquez sur "View Scopes" et ensuite sur "Refresh" jusqu'à ce que le status soit "Ready".
Lorsque votre scope est en état "Ready", il est prêt à être utilisé dans la partie applicative.
III-C. Ajout d'un scope dans la collection de sites
Pour pouvoir utiliser un scope personnel dans un centre de recherche, il faut au préalable l'ajouter dans la liste des scopes de la collection dans laquelle on souhaite les utiliser. Pour ce faire, cliquez sur
Site Actions => Site Settings => Search Scopes. Vous arriverez dans l'écran suivant:
Vous devez à présent ajouter le scope "Demo Source" dans les groupes "Search Dropdown" et "Advanced Search" afin de pouvoir les utiliser dans les webparts
utilisés dans les centres de recherche.
Pour les ajouter, cliquez respectivement sur les liens "Search Dropdown" et "Advanced Search", ensuite cochez le scope grâce à la case à cocher se trouvant à côté du libellé.
IV. Créer un Search Center utilisant un scope personnel
Un "Search Center" est un modèle de site permettant de créer aisément un moteur de recherche personnalisé.
IV-A. Créer le search center
Pour créer un search center, il suffit de cliquer sur "View All Site Content => Create => Sites and workspaces" pour arriver sur l'écran suivant:
Notez que la "Publishing Feature" doit être activée au niveau de la collection pour pouvoir créer un search center
Soyez certain de cliquer sur l'onglet "Enterprise" et ensuite de sélectionner l'entrée "Search Center". Cliquez
ensuite sur OK.
Le site est à présent créé et vous disposez d'une zone de recherche permettant d'effectuer une recherche sur deux scopes. Les scopes All Sites et People
Le moteur est fonctionnel sur ces deux scopes. Vous pouvez dores et déjà effectuer l'une ou l'autre recherche pour vérifier son bon fonctionnement. Le but de l'exercice
qui suit est d'insérer un troisième onglet qui porte sur notre scope "Demo Source".
IV-B. Créer les pages de recherche et de résultat
Chaque onglet présent dans le moteur de recherche pointe sur une page principale permettant d'effectuer une recherche et sur une page de résultat affichant les
résultats correspondant à la recherche. Si l'on souhaite ajouter un nouvel onglet, il faut donc créer deux pages.
IV-B-1. Création de la page de recherche
Cliquez sur Site Actions => Create Page pour obtenir l'écran suivant
Sélectionnez le modèle SearchMain comme illustré ci-dessus et cliquez sur Ok
IV-B-2. Création de la page résultat
Cliquez sur Site Actions => Create Page pour obtenir l'écran suivant
Sélectionnez le modèle SearchResult comme illustré ci-dessus et cliquez sur Ok
IV-C. Ajouter les onglets dans le search center qui pointent vers notre scope
A présent, revenez sur la page principale de votre moteur de recherche. Cliquez sur Site Actions => Edit Page et ensuite
cliquez sur "Add New Tab".
Liez ce nouveau tab à la page principale de recherche que vous avez créé précédemment. Lorsque vous cliquez sur Ok, le système
vous redirige sur cette nouvelle page. Cliquez sur Site Actions => Edit Page pour modifier le webpart de recherche. Ensuite, modifiez
le webpart comme illustré ci-dessous
Dans le panneau des propriétés du webpart, dans la rubrique "Miscellaneous/Divers", vous trouverez la propriété "Target search result page URL". Saisissez le nom
de votre page de résultat préalablement créée comme illustré ci-dessous et cliquez sur Ok.
Effectuez maintenant une recherche en cliquant sur l'onglet "Demo Source" et ensuite sur Ok. Vous êtes redirigé vers la page de résultat "DemoSourceSearchResults.aspx". Cliquez
ensuite sur Site Actions => Edit Page pour modifier le webpart "Search Core Results" afin de limiter la recherche au scope "Demo Source".
Modifiez le webpart Search Core Results comme illustré ci-dessous
Dans le panneau des propriétés du webpart, allez dans la section "Miscellaneous/Divers" et dans la propriété "Scope", saisissez "Demo Source".
Refaites la même recherche que précédemment, vous constaterez que cette fois, les résultats sont limités au scope spécifié. Dans la page de résultat, cliquez
sur Site Actions => Edit Page afin d'ajouter un nouvel onglet (on ne l'a fait que pour la page principale jusqu'ici). Cliquez ensuite sur "Add New Tab" et créez l'onglet
comme illustré ci-dessous
Ceci fait, il ne vous reste plus qu'à modifier le webpart "SearchBox" pour lui dire que la page de résultat est DemoSourceSearchResults.aspx comme nous
l'avions fait lorsque nous avons ajouté l'onglet "Demo Source" dans la page principale de recherche.
Le search center doit à présent être fonctionnel sauf pour la partie recherche avançée qui ne devrait pas fonctionner lorsque vous l'activez à partir
de votre onglet "Demo Source". Ceci est dû au fait que le webpart "SearchBox" sur vos pages de recherche principale et de résultat ne pointe pas vers la bonne URL.
Soit vous le faites pointer vers la même URL que pour le scope "All Sites", soit vous crééz une page de recherche avancée personnelle, soit vous décidez de ne pas afficher
le lien permettant d'effectuer une recherche avançée. Quoique vous fassiez, le paramétrage se fait dans les propriétés du webpart "SearchBox".
V. Ajouter une colonne personnelle (de liste) dans le moteur de recherche
Dans cette section, nous allons voir comment ajouter une colonne personnelle de metadata en tant que propriété gérée par le moteur de recherche (managed property) et
utiliser ensuite celle-ci dans une recherche avancée.
V-A. Création de notre colonne
Pour l'exemple, créez simplement une colonne de type texte intitulée "Demo" dans une bibliothèque de documents. Ensuite, insérez un nouveau
document en veillant bien à affecter une valeur à la colonne démo. En effet, si vous oubliez cette étape, vous ne retrouverez pas
la propriété dans la liste des propriétés gérables.
Nous référencerons ensuite cette propriété pour que le moteur de recherche puisse l'indexer.
V-B. Ajout de la colonne dans les propriétés gérées par le moteur (managed property)
Les propriétés gérées par le moteur sont listées dans la centrale d'administration au niveau du SSP => Search Settings => Metadata property mapping. Toute une
série de propriétés existe déjà comme vous pouvez le voir ci-dessous
Elles peuvent d'ailleurs être utilisées dans les search center. Avant de pouvoir ajouter notre nouvelle propriété, il est imparatif de refaire un incremental ou un full crawl de Local Office Sharepoint Server Sites afin
que celui-ci tienne compte de la nouvelle colonne que l'on a ajouté au niveau de notre bibliothèque.
Pour ajouter notre propriété qui pointe sur la colonne Demo, il faut ensuite revenir dans les propriétés et cliquer sur
"New Managed Property".
Vous arrivez sur l'écran suivant:
Après avoir donné un nom à votre propriété comme par exemple "Demo", cliquez sur "Add Mapping", dans la zone de texte, tapez
"Demo" et ensuite cliquez sur "Find". Le système vous retourne la propriété.
Lorsque vous cliquez sur Ok, vous pouvez visualiser votre propriété
Cette nouvelle propriété ayant été enregistrée comme propriété gérable est désormais utilisable dans le moteur de recherche mais vous devez
d'abord refaire un crawl
V-C. Utilisation de notre propriété dans un moteur de recherche avancé
Reprenez le search center précédemment créé, cliquez sur l'onglet All Sites et ensuite sur Advanced Search pour arriver sur l'écran
de recherche avancée. Cliquez ensuite sur Site Actions => Edit Page pour modifier le webpart de recherche avancée comme
illustré ci-dessous
Dans le panneau de propriétés du webpart, localisez la section "Properties" et ensuite la zone de texte "Properties". Cette zone contient
le flux XML décrivant les propriétés devant être inclues dans la liste de colonnes sur lesquelles on peut effectuer une
recherche.
Vous obtenez par défaut, la structure XML suivante:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<LangDefs>
<LangDef DisplayName="Arabic" LangID="1"/>
<LangDef DisplayName="Bengali" LangID="69"/>
<LangDef DisplayName="Bulgarian" LangID="2"/>
<LangDef DisplayName="Catalan" LangID="3"/>
<LangDef DisplayName="Chinese" LangID="4"/>
<LangDef DisplayName="Croatian/Serbian" LangID="26"/>
<LangDef DisplayName="Czech" LangID="5"/>
<LangDef DisplayName="Danish" LangID="6"/>
<LangDef DisplayName="Dutch" LangID="19"/>
<LangDef DisplayName="Finnish" LangID="11"/>
<LangDef DisplayName="French" LangID="12"/>
<LangDef DisplayName="German" LangID="7"/>
<LangDef DisplayName="Greek" LangID="8"/>
<LangDef DisplayName="Gujrati" LangID="71"/>
<LangDef DisplayName="Hebrew" LangID="13"/>
<LangDef DisplayName="Hindi" LangID="57"/>
<LangDef DisplayName="Hungarian" LangID="14"/>
<LangDef DisplayName="Icelandic" LangID="15"/>
<LangDef DisplayName="Indonesian" LangID="33"/>
<LangDef DisplayName="Italian" LangID="16"/>
<LangDef DisplayName="Japanese" LangID="17"/>
<LangDef DisplayName="Kannada" LangID="75"/>
<LangDef DisplayName="Korean" LangID="18"/>
<LangDef DisplayName="Latvian" LangID="38"/>
<LangDef DisplayName="Lithuanian" LangID="39"/>
<LangDef DisplayName="Malay" LangID="62"/>
<LangDef DisplayName="Malayalam" LangID="76"/>
<LangDef DisplayName="Marathi" LangID="78"/>
<LangDef DisplayName="Norwegian" LangID="20"/>
<LangDef DisplayName="Polish" LangID="21"/>
<LangDef DisplayName="Portugese" LangID="22"/>
<LangDef DisplayName="Punjabi" LangID="70"/>
<LangDef DisplayName="Romanian" LangID="24"/>
<LangDef DisplayName="Russian" LangID="25"/>
<LangDef DisplayName="Slovak" LangID="27"/>
<LangDef DisplayName="Slovenian" LangID="36"/>
<LangDef DisplayName="Spanish" LangID="10"/>
<LangDef DisplayName="Swedish" LangID="29"/>
<LangDef DisplayName="Tamil" LangID="73"/>
<LangDef DisplayName="Telugu" LangID="74"/>
<LangDef DisplayName="Thai" LangID="30"/>
<LangDef DisplayName="Turkish" LangID="31"/>
<LangDef DisplayName="Ukrainian" LangID="34"/>
<LangDef DisplayName="Urdu" LangID="32"/>
<LangDef DisplayName="Vietnamese" LangID="42"/>
</LangDefs>
<Languages>
<Language LangRef="12"/>
<Language LangRef="7"/>
<Language LangRef="17"/>
<Language LangRef="10"/>
</Languages>
<PropertyDefs>
<PropertyDef Name="Path" DataType="text" DisplayName="URL"/>
<PropertyDef Name="Size" DataType="integer" DisplayName="Size"/>
<PropertyDef Name="Write" DataType="datetime" DisplayName="Last Modified Date"/>
<PropertyDef Name="FileName" DataType="text" DisplayName="Name"/>
<PropertyDef Name="Description" DataType="text" DisplayName="Description"/>
<PropertyDef Name="Title" DataType="text" DisplayName="Title"/>
<PropertyDef Name="Author" DataType="text" DisplayName="Author"/>
<PropertyDef Name="DocSubject" DataType="text" DisplayName="Subject"/>
<PropertyDef Name="DocKeywords" DataType="text" DisplayName="Keywords"/>
<PropertyDef Name="DocComments" DataType="text" DisplayName="Comments"/>
<PropertyDef Name="Manager" DataType="text" DisplayName="Manager"/>
<PropertyDef Name="Company" DataType="text" DisplayName="Company"/>
<PropertyDef Name="Created" DataType="datetime" DisplayName="Created Date"/>
<PropertyDef Name="CreatedBy" DataType="text" DisplayName="Created By"/>
<PropertyDef Name="ModifiedBy" DataType="text" DisplayName="Last Modified By"/>
</PropertyDefs>
<ResultTypes>
<ResultType DisplayName="All Results" Name="default">
<Query/>
<PropertyRef Name="Author" />
<PropertyRef Name="Description" />
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
</ResultType>
<ResultType DisplayName="Documents" Name="documents">
<Query>IsDocument=1</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Word Documents" Name="worddocuments">
<Query>FileExtension='doc' Or FileExtension='docx' Or FileExtension='dot'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Excel Documents" Name="exceldocuments">
<Query>FileExtension='xls' Or FileExtension='xlsx' Or FileExtension='xlt'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Presentations" Name="presentations">
<Query>FileExtension='ppt'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
</ResultTypes>
</root>
|
Vous allez devoir ajouter votre propriété dans la section PropertyDefs et dans une ou plusieurs sous section de ResultTypes en fonction
de ce que vous souhaitez permettre à l'utilisateur. Nous utiliserons All Results dans notre exemple.
En ajoutant donc ceci dans PropertyDefs:
<PropertyDef Name="Demo" DataType="text" DisplayName="Demo"/>
|
et ceci dans ResultType => All Results
<PropertyRef Name="Demo" />
|
Notre nouvelle propriété est utilisable dans la recherche comme vous pouvez le constater
Nous pouvons donc effectuer une recherche
et ceci nous donne comme résultat
VI. Utiliser une colonne liée aux profils utilisateurs dans le moteur de recherche
Comme pour le metadata personnel, on peut exposer une propriété liée aux profils des utilisateurs dans le moteur de recherche. L'approche est la même que
pour le metadata à ceci près que l'on utilise les propriétés référencées au sein des profils. Le profiling dans MOSS mériterait un article mériterait un article
dédié, nous n'aborderons donc pas l'intérêt de celui-ci dans ce tutoriel. Je vais simplement montrer comment ajouter la propriété "WorkPhone" présente par défaut dans les profils
utilisateurs dans le moteur de recherche afin de permettre les utilisateurs d'effectuer des recherches dessus.
Tout d'abord, localisons cette propriété. Elle se trouve dans la centrale d'aministration au niveau des profils utilisateurs. L'image ci-dessous
la montre.
Nous souhaitons donc afficher cette propriété dans les options de recherche d'une personne. Si vous cliquez sur votre search center,
dans l'onglet "People" et ensuite sur "Search Options", vous obtenez ceci:
et nous souhaitons obtenir ceci
Pour obtenir ce résultat, il faut modifier la page en cliquant sur Site Actions => Edit Page et ensuite modifier le webpart
People Search
Allez ensuite dans les propriétés du webpart et dans la section "Miscellaneous/Divers", vous retrouverez une zone de texte intitulée "Properties". Cette zone contient
toutes les propriétés à afficher sous format XML qui par défaut, contient ceci (tronqué pour des raisons d'affichage)
<Properties>
<Property Name="FirstName" ManagedName="FirstName" .../>
<Property Name="LastName" ManagedName="LastName" .../>
<Property Name="Department" ManagedName="Department" .../>
<Property Name="JobTitle" ManagedName="JobTitle" .../>
<Property Name="Responsibility" ManagedName="Responsibility" .../>
<Property Name="Skills" ManagedName="Skills" .../>
<Property Name="QuickLinks" ManagedName="QuickLinks" .../>
</Properties>
|
Nous allons ajouter WorkPhone en ajoutant une ligne XML comme ceci
<Property Name="WorkPhone" ManagedName="WorkPhone" ProfileURI="urn:schemas-microsoft-com:sharepoint:portal:profile:WorkPhone"/>
|
Pour obtenir enfin ceci:
<Properties>
<Property Name="FirstName" ManagedName="FirstName" .../>
<Property Name="LastName" ManagedName="LastName" .../>
<Property Name="Department" ManagedName="Department" .../>
<Property Name="JobTitle" ManagedName="JobTitle" .../>
<Property Name="Responsibility" ManagedName="Responsibility" .../>
<Property Name="Skills" ManagedName="Skills" .../>
<Property Name="QuickLinks" ManagedName="QuickLinks" .../>
<Property Name="WorkPhone" ManagedName="WorkPhone" ..."/>
</Properties>
|
Voilà, le tour est joué, vous pouvez à présent effectuer une recherche en spécifiant une valeur pour workphone.
VI. Personnalisation des résultats
VI-A. Ajout de Best Bets et de mots clés
Il est possible d'utiliser des mots clés (keywords) et des synonymes afin d'orienter l'utilisateur vers des ressources
plus significatives liée à sa recherche. Ceci peut se faire grâce à l'utilisation des Best Bests. Pour paramétrer des Best Bets, vous devez
aller au niveau de votre collection dans Site Actions => Site Settings => Search Keywords pour obtenir cet écran
Vous pouvez ajouter un mot clé ainsi qu'un ou plusieurs synonymes qui si ils sont tapés dans le moteur par l'utilisateur déclencheront l'affichage
du best bet.
Dans l'écran ci-dessus, j'ai défini le mot clé "Excel" auquel j'ai ajouté les synonymes "Document Excel" et "Sheet". Dès que l'un de ces mots
sera saisi par l'utilisateur dans le moteur de recherche, celui-ci affichera automatiquement le(s) best best(s) lié(s) comme vous pouvez le constater
ci-dessous
VI-B. Personnalisation de l'affichage des résultats via XSLT
Le webpart "SearchCoreResults" offre un bouton XSLT parmi ses propriétés. Il est possible de modifier ce script XSLT pour obtenir un affichage de résultat
person