Traitement d’élément XML personnalisé
Dernière modification : mardi 22 juin 2010
S’applique à : SharePoint Server 2010
Dans cet article
Vue d’ensemble de XML Mapper
Analyse de contenu XML
Détection de format et analyse d’élément
Personnalisation de xmlmapper.xml
Format de fichier de xmlmapper.xml
Exemple de configuration XML Mapper
Le pipeline de traitement d’élément dans FAST Search Server 2010 for SharePoint comprend une phase XML Mapper facultative pour créer des propriétés analysées à partir de parties spécifiques d’éléments XML analysés. Pour plus d’informations sur la façon d’activer la phase XML Mapper dans le pipeline de traitement d’élément, voir Configuration de traitement facultatif des éléments.
Cet article explique comment configurer le mappage de propriétés à l’aide du fichier de configuration xmlmapper.xml et contient les sections suivantes :
Vue d’ensemble de XML Mapper
Utilisez XML Mapper pour l’analyse sur partage de fichiers et sur le Web de documents XML qui requièrent une extraction et une transformation personnalisées. Lorsque XML Mapper est activé dans le pipeline, tous les éléments analysés qui sont des documents XML sont mappés. N’utilisez pas XML Mapper pour analyser du contenu inconnu ou des sources multiples, car la configuration risque d’établir des correspondances avec des éléments XML analysés n’ayant aucun intérêt.
La spécification des parties du contenu XML à mapper s’effectuer à l’aide de XPath 1.0 et d’une fonctionnalité fournie par le fichier de configuration proprement dit. Par exemple, vous pouvez gérer plusieurs expressions, ajouter des séparateurs de chaînes, fractionner des chaînes et supprimer des espaces.
Pour chaque instruction de mappage, vous spécifiez les propriétés analysées auxquelles le contenu XML extrait est mappé. Pour plus d’informations sur les propriétés analysées, voir Planifier le schéma d’index (FAST Search Server 2010 for SharePoint) (éventuellement en anglais) et Référence de schéma d’index.
Analyse de contenu XML
Lorsque XML Mapper est activé dans le pipeline, tous les éléments analysés qui sont des documents XML sont mappés. Vous devez par conséquent vous assurer d’analyser uniquement du contenu XML connu. Si vous analysez des sources multiples ou du contenu XML inconnu, vous risquez sans le vouloir d’établir des correspondances avec des éléments XML analysés qui utilisent les éléments XML mappés à d’autres fins. Cela peut entraîner l’existence de métadonnées incorrectes dans votre index.
Il existe principalement deux manières d’analyser du contenu XML dans FAST Search Server 2010 for SharePoint.
Créer des documents XML bruts à l’aide du Content SSA (FAST Search Connector). Cela vous permet d’extraire des documents XML à partir de serveurs web, de partages de fichiers et de bibliothèques de documents SharePoint.
Notes
Un élément analysé peut comporter plusieurs parties, telles qu’un élément de liste SharePoint ou un message électronique avec plusieurs pièces jointes. Le XML Mapper mappe le contenu XML qui apparaît uniquement dans la première (principale) partie de l’élément analysé, et non dans les pièces jointes.
Utilisez le connecteur de base de données FAST Search pour extraire du contenu XML à partir d’une colonne d’une table de base de données (pour plus d’informations, voir Analyse de contenu de base de données avec le connecteur de base de données FAST Search (éventuellement en anglais) sur Microsoft TechNet). Dans la règle d’analyse SQL, vous pouvez spécifier qu’une colonne donnée dans une table de base de données est mappée à la propriété interne prédéfinie nommée data. Il s’agit de la même propriété interne que celle qui renferme le contenu principal d’un document lorsqu’elle est passée d’un connecteur d’indexation au pipeline de traitement d’élément.
L’exemple suivant montre une règle d’analyse simple qui extrait une description formelle XML d’un produit à partir d’une table nommée Product vers la propriété interne nommée data.
SELECT Product.formalDescription AS data FROM Product
Important
La propriété data ne peut pas être mappée en tant que propriété analysée, mais sera dans ce cas traitée car le contenu représente un document de type XML. Les considérations relatives au type de contenu décrites dans Détection de format et analyse d’élément s’appliquent également à ces genres d’éléments.
Détection de format et analyse d’élément
Le pipeline de traitement d’élément détecte le type de contenu en analysant les données réelles dans l’élément extrait. S’il contient du code XML valide, il sera traité comme XML et converti à l’aide du XML Mapper. Certains contenus XML peuvent ne pas avoir de déclarations XML valides et peuvent contenir des noms d’éléments fréquemment utilisés en HTML. Dans ces cas-là, les éléments XML analysés peuvent être confondus pour des éléments HTML. Une solution à ce problème consiste à contourner la détection de format pour les éléments analysés ayant l’extension de nom de fichier « .xml ». Pour cela, vous devez ajouter la règle de conversion suivante au fichier de configuration user_converter_rules.xml.
<ConverterRules>
<IFilter>
<trust>
<ext name=".xml" mimetype="text/xml" />
</trust>
</IFilter>
</ConverterRules>
Cette configuration permet de s’assurer que tous les fichiers ayant l’extension « .xml » sont toujours traités comme du contenu XML. Pour plus d’informations, voir Configurer FAST Search Server for SharePoint de façon à utiliser un IFilter tiers.
Le pipeline de traitement d’élément mappe le corps principal de tous les éléments (y compris les éléments XML) à la propriété gérée nommée body. Cela signifie que le contenu de tous les éléments et attributs est accessible à la recherche dans l’index de texte intégral par défaut et dans la propriété gérée nommée body. Ce mappage vient s’ajouter au mappage facultatif effectué à l’aide de XML Mapper. Si certaines parties des données XML (ou toutes) sont constituées de métadonnées, vous souhaiterez peut-être contrôler ce mappage à un niveau plus granulaire. Vous pouvez mapper une partie plus spécifique des données XML (ou même une valeur factice) à la propriété gérée nommée body. La procédure suivante explique comment effectuer ce mappage.
Pour mapper du contenu XML spécifique à la propriété gérée body
Spécifiez une configuration XML Mapper qui mappe des parties spécifiques des données XML à une nouvelle propriété analysée au nom unique.
Spécifiez un mappage de cette propriété analysée à la propriété gérée nommée body. Pour plus d’informations, voir Gérer des propriétés analysées à l’aide de Windows PowerShell (FAST Search Server 2010 for SharePoint) (éventuellement en anglais) sur Microsoft TechNet.
Assurez-vous que l’indicateur MergeCrawledProperties de la propriété body est défini dans le schéma d’index. Pour plus d’informations, voir Gérer des propriétés gérées à l’aide de Windows PowerShell (FAST Search Server 2010 for SharePoint) (éventuellement en anglais) sur TechNet.
Personnalisation de xmlmapper.xml
Pour modifier ce fichier de configuration, vous devez être membre du groupe local FASTSearchAdministrators sur le nœud d’administration FAST Search Server 2010 for SharePoint.
Pour modifier xmlmapper.xml
Assurez-vous que la phase XML Mapper est activée dans le pipeline de traitement d’élément. Pour plus d’informations, voir Configuration de traitement facultatif des éléments.
Sur le nœud d’administration, créez le fichier suivant s’il n’existe pas :%FASTSEARCH%\etc\config_data\DocumentProcessor\XMLMapper.xml.
Modifiez %FASTSEARCH%\etc\config_data\DocumentProcessor\XMLMapper.xml dans un éditeur de texte.
Exécutez la commande psctrl reset pour réinitialiser tous les processeurs d’éléments en cours d’exécution dans le système.
Format de fichier de xmlmapper.xml
Voici la structure de base du fichier xmlmapper.xml.
<XMLPropertiesCreator>
<propset>propertySetValue</propset>
<type>variantTypeValue</type>
<paragraph-sep>paragraphSeparatorValue</paragraph-sep>
<XMLMappings>
<Namespace name='namespaceName' uri='uriName' />
<Mapping path='XPath' attr='propName' propset='GUID' type='varType'
sep-str='separator' post-str='postString'
ignore-whitespace='yes|no' strip-tags='yes|no'
shallow='yes|no' mode='append|prepend|overwrite' />
<SubTree base-path='basePath' >
<Mapping path='XPath' attr='propName' propset='GUID' type='varType'
sep-str='separator' post-str='postString'
ignore-whitespace='yes|no' strip-tags='yes|no'
shallow='yes|no' mode='append|prepend|overwrite' />
</SubTree>
<MappingGroup base-path='basePath' attr='propName' propset='GUID' type='varType'
sep-str='separator' pre-str='preString' post-str='postString'
rec-sep-str='recSeparator' rec-pre-str='recPreString' rec-post-str='recPostString'
select='merge|first|longest' mode='append|prepend|overwrite' >
<Mapping path='XPath' sep-str='separator' post-str='postString'
ignore-whitespace='yes|no' strip-tags='yes|no' shallow='yes|no' />
</MappingGroup>
</XMLMappings>
</XMLPropertiesCreator>
Pour plus d’informations sur la syntaxe XML des différents éléments, voir XML Mapper, schéma.
Exemple de configuration XML Mapper
Pour cet exemple, considérez l’élément XML suivant comme entrée de contenu.
<Document>
<Title>My title</Title>
<Date>2010-01-06T14:25:04Z</Date>
<Size>128</Size>
<Tags>
<Tag>funny</Tag>
<Tag>hilarious</Tag>
</Tags>
<Tutti>Hello</Tutti>
<Frutti>World</Frutti>
</Document>
L’exemple suivant fournit une configuration XML Mapper qui extrait des informations à partir d’un élément de ce genre.
<XMLPropertiesCreator>
<propset>d6ee4933-09c4-46e3-a5e4-b3787cb4a090</propset>
<type>31</type>
<XMLMappings>
<Mapping attr="mytitle" path="//Title"/>
<Mapping attr="mysize" path="//Size" type="3"/>
<Mapping attr="mydate" path="//Date" type="64" propset="38c35ad5-69ee-4776-886f-95961a73d52d"/>
<Mapping attr="mytags" path="//Tag" sep-str=";"/>
<MappingGroup attr="mymulti" base-path="/Document" select="first">
<Mapping path="Tutti"/>
<Mapping path="Frutti"/>
</MappingGroup>
</XMLMappings>
</XMLPropertiesCreator>
Dans cet exemple, XML Mapper applique le mappage indiqué au Tableau 1.
Tableau 1. Mappages XML Mapper
Élément |
Mappé à |
---|---|
//Title |
mytitle dans le propset « d6ee4933-09c4-46e3-a5e4-b3787cb4a090 » avec type variant ayant la valeur « 31 ». |
//Size |
mysize dans le propset « d6ee4933-09c4-46e3-a5e4-b3787cb4a090 » avec type variant ayant la valeur « 3 ». |
//Date |
mydate dans le propset « 38c35ad5-69ee-4776-886f-95961a73d52d » avec type variant ayant la valeur « 64 ». |
//Tag |
mytags dans le propset « d6ee4933-09c4-46e3-a5e4-b3787cb4a090 » avec type variant ayant la valeur « 31 ». Les correspondances d’éléments multiples seront séparées par un point-virgule. |
/Document/Tutti |
mymulti dans le propset « d6ee4933-09c4-46e3-a5e4-b3787cb4a090 » avec type variant ayant la valeur « 31 ». select="first" signifie que seul le premier élément correspondant est mis en correspondance. Dans le cas présent, cela signifie que le texte « Hello » est extrait. |