Partager via


Intégration d’un composant de traitement d’élément externe

Dernière modification : lundi 30 août 2010

S’applique à : SharePoint Server 2010

Dans cet article
Vue d’ensemble de l’extensibilité de pipeline
Environnement de commande
Extensibilité de pipeline et IFilter
Gestion des propriétés analysées
Personnalisation de pipelineextensibility.xml
Format de fichier pour pipelineextensibility.xml
Format du fichier d’entrée/sortie
Création d’une commande personnalisée

Certaines applications peuvent nécessiter des extensions du traitement d’élément. Vous pouvez générer des métadonnées supplémentaires pouvant faire l’objet d’une recherche à partir du contenu ou transférer une information de l’élément vers une application tierce à des fins de statistiques ou de contrôle.

Cette rubrique explique comme créer un composant de traitement d’élément externe pour FAST Search Server 2010 for SharePoint.

Vue d’ensemble de l’extensibilité de pipeline

Le pipeline de traitement d’élément dans FAST Search Server 2010 for SharePoint effectue différentes tâches, telles que l’extraction de texte, la détection de langue et la segmentation du texte en unités lexicales, afin de préparer un élément d’une source de contenu pour l’indexation et la recherche.

L’interface d’extensibilité de pipeline vous permet d’exécuter des commandes de traitement personnalisées pour chaque élément inséré dans le pipeline. Une commande prend un ensemble de propriétés analysées comme entrée, les traite et génère un autre ensemble de propriétés analysées. La communication entre le pipeline de traitement d’élément et la commande personnalisée s’effectue par le biais de l’utilisation de fichiers XML temporaires. Le traitement d’extensibilité de pipeline a lieu avant que les propriétés analysées soient mappées à des propriétés gérées.

Les propriétés analysées d’entrée peuvent être des métadonnées extraites de la source de contenu ou vous pouvez utiliser un traitement d’élément XML personnalisé (voir Traitement d’élément XML personnalisé) sur des éléments XML extraits afin de créer des propriétés analysées à partir des données XML.

Vous spécifiez les commandes à exécuter dans pipelineextensibility.xml. Le format de ce fichier de configuration est spécifié dans le Schéma de configuration d’extensibilité du pipeline. Pour chaque commande, répertoriez les propriétés analysées que la commande recevra comme entrée et les propriétés analysées qui seront générées par la commande.

Important

Toute modification apportée à ce fichier sera remplacée et perdue si vous installez une mise à jour ou un Service Pack FAST Search Server 2010 for SharePoint.

Ce fichier de configuration n’est pas sauvegardé par la procédure de sauvegarde FAST Search Server 2010 for SharePoint standard. Pour éviter de perdre vos modifications, assurez-vous de sauvegarder ce fichier après l’avoir modifié.

Assurez-vous de réappliquer les modifications que vous avez apportées au fichier de configuration après avoir installé une mise à jour ou un Service Pack FAST Search Server 2010 for SharePoint.

Environnement de commande

Avant qu’une commande ne soit exécutée, les propriétés analysées d’entrée sont recueillies dans un fichier XML temporaire. La commande lit ensuite ce fichier et génère les propriétés analysées résultantes dans un autre fichier XML temporaire. Les chemins d’accès aux fichiers d’entrée et de sortie sont disponibles en tant que séquences de chaînes spéciales lors de la spécification de la commande à exécuter. Le format des fichiers d’entrée et de sortie est identique et précisé dans le Schéma d’interface d’extensibilité de pipeline.

Les commandes sont exécutées dans un environnement de bac à sable qui utilise un nombre de processeurs, une mémoire et un temps de traitement limités. Hormis les fichiers d’entrée et de sortie, les commandes n’auront un accès en lecture/écriture qu’aux fichiers accessibles publiquement.

Un accès complet au réseau est fourni. Si vous n’en avez pas besoin, créez une règle de pare-feu afin de bloquer votre application dans le cas où elle serait compromise.

Si vous avez des difficultés à exécuter la commande dans un environnement de bac à sable, modifiez le code afin de transférer l’entrée à un traitement ou service distinct qui utilise des sockets, puis laissez-le effectuer le travail principal.

Extensibilité de pipeline et IFilter

Pour implémenter l’extraction de texte pour un nouveau format de document, implémentez un IFilter et enregistrez-le auprès de FAST Search Server 2010 for SharePoint. Vous pouvez également implémenter la prise en charge de l’extraction de texte avec la fonctionnalité d’extensibilité de pipeline. Pour plus d’informations, voir Configurer FAST Search Server for SharePoint de façon à utiliser un IFilter tiers.

Gestion des propriétés analysées

Les propriétés analysées sont des métadonnées extraites de sources de contenu afin de rendre les données accessibles à la recherche. Elles sont généralement signalées par la SSA de contenu ou autre connecteur FAST Search Server 2010 for SharePoint, mais peuvent également être créées durant le traitement d’élément par un IFilter ou une phase de traitement personnalisée.

Une propriété analysée est identifiée de manière unique par Name, Propset et VariantType. Vous pouvez créer une propriété analysée personnalisée à l’aide de l’applet de commande Windows PowerShellNew-FASTSearchMetadataCrawledProperty. Vous pouvez choisir d’utiliser un Propset existant ou créer un Propset pour les propriétés analysées personnalisées.

Vous pouvez mapper chaque propriété analysée à une propriété gérée ou définir une catégorie de propriétés analysées et mapper toute la catégorie à l’index de texte intégral par défaut. Pour plus d’informations, voir Gérer des propriétés analysées à l’aide de Windows PowerShell (FAST Search Server 2010 for SharePoint) et Référence de schéma d’index.

Seuls les types de propriétés analysées qui peuvent être mappés à une propriété gérée sont pris en charge.

Un ensemble de propriétés spécial contient des propriétés analysées créées à l’intérieur du pipeline de traitement d’élément. Un sous-ensemble de ces propriétés en lecture seule peut être passé à la commande d’extensibilité de pipeline, notamment la propriété url et la propriétédata. La propriété body contient le contenu binaire du document source codé en base64. Pour plus d’informations, voir dataCrawledProperty, élément [schéma de configuration d’extensibilité de pipeline].

Personnalisation de pipelineextensibility.xml

Utilisez un éditeur de texte ou un éditeur XML pour personnaliser ce fichier.

Notes

Pour modifier un fichier de configuration, vous devez être membre du groupe local FASTSearchAdministrators sur l’ordinateur où FAST Search Server 2010 for SharePoint est installé.

Pour modifier pipelineextensibility.xml

  1. Sur chaque serveur de votre déploiement de batterie FAST Search Server 2010 for SharePoint, mettez à jour %FASTSEARCH%\etc\pipelineextensibility.xml avec vos modifications.

  2. Sur le nœud d’administration FAST Search Server 2010 for SharePoint, exécutez la commande psctrl reset pour réinitialiser tous les processeurs d’éléments en cours d’exécution sur le système.

  3. Enregistrez une copie de sauvegarde du fichier, car il ne fait pas partie du processus de sauvegarde/restauration de la configuration dans FAST Search Server 2010 for SharePoint.

  4. Vous devrez mettre à jour ce fichier à partir de votre sauvegarde après avoir appliqué une mise à jour logicielle. Pour plus d’informations, voir la remarque dans Vue d’ensemble de l’extensibilité de pipeline.

Format de fichier pour pipelineextensibility.xml

Voici la structure de base du fichier pipelineextensibility.xml.

<PipelineExtensibility>
    <Run command='CommandName'>
        <Input>
            <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType'>
        </Input>
        <Output>
            <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType' defaultValue='DefaultValue'>
        </Output>
    </Run>
</PipelineExtensibility>

Pour plus d’informations sur la syntaxe XML, voir Schéma de configuration d’extensibilité du pipeline.

Vous pouvez spécifier plusieurs éléments Run, qui seront traités dans leur ordre d’apparition dans le fichier de configuration. Vous pouvez également spécifier plusieurs éléments CrawledProperty dans les éléments Input et Output.

L’exemple suivant illustre la configuration d’une commande qui lit la propriété Author (identifiée par property ID 4) à partir de l’ensemble de propriétés d’informations récapitulatives et génère une autre propriété nommée MyProperty. Les chemins d’accès aux fichiers d’entrée et de sortie sont disponibles en tant que séquences de chaînes spéciales « %(input)s » et « %(output)s », comme suit.

<PipelineExtensibility>
  <Run command="sample.exe %(input)s %(output)s">
    <Input>
      <CrawledProperty propertySet="f29f85e0-4ff9-1068-ab91-08002b27b3d9" varType="31" propertyId="4"/>
    </Input>
    <Output>
      <CrawledProperty propertySet="d5cdd505-2e9c-101b-9397-08002b2cf9ae" varType="31" propertyName="MyProperty"/>
    </Output>
  </Run>
</PipelineExtensibility>

Vous pouvez extraire propertySet et varType pour une propriété analysée à l’aide de l’applet de commande Windows PowerShellGet-FASTSearchMetadataCrawledProperty. L’exemple suivant montre comment procéder pour la propriété analysée nommée fileextension.

PS C:\FASTSearch\etc> Get-FASTSearchMetadataCrawledProperty -name fileextension

CategoryName       : Basic
IsMappedToContents : False
IsNameEnum         : False
IsMultiValued      : False
Name               : FileExtension
Propset            : 0b63e343-9ccc-11d0-bcdb-00805fccce04
VariantType        : 31

Format du fichier d’entrée/sortie

Les fichiers d’entrée et de sortie intermédiaires qui contiennent les propriétés analysées utilisent le même format XML.

Voici la structure de base des fichiers intermédiaires.

<Document>
 <CrawledProperty propertySet='GUID' propertyName='PropertyName' propertyId='PropertyId' varType='PropertyType'>propertyValue</CrawledProperty>
</Document>

Pour plus d’informations sur la syntaxe XML, voir Schéma d’interface d’extensibilité de pipeline.

L’exemple suivant spécifie le fichier d’entrée pour l’exemple fourni dans la section Format de fichier pour pipelineextensibility.xml. Il suppose que l’auteur est John Doe.

<Document>
  <CrawledProperty propertySet="f29f85e0-4ff9-1068-ab91-08002b27b3d9" 
                   varType="31" propertyId="4">John Doe</CrawledProperty>
</Document>

Le fichier d’entrée sera toujours codé en UTF-8 par le pipeline de traitement d’élément FAST Search Server 2010 for SharePoint. Le fichier de sortie construit par la commande doit être codé en UTF-8 ou UTF-16 afin de garantir l’interprétation correcte de tous les caractères.

Création d’une commande personnalisée

La séquence de chaînes spéciale « %(input)s » dans l’attribut command sera remplacée par le chemin d’accès au fichier d’entrée. Si l’élément Input a des éléments CrawledProperty, cette séquence est obligatoire.

La séquence de chaînes spéciale « %(output)s » dans l’attribut command sera remplacée par le chemin d’accès au fichier de sortie. Si l’élément Output a des éléments CrawledProperty, cette séquence est obligatoire et un fichier de sortie valide doit être généré. Le fichier de sortie doit contenir au moins l’élément Document de niveau supérieur, comme suit.

<Document></Document>

La commande est autorisée à générer un sous-ensemble des éléments CrawledProperty répertoriés.

Le pipeline de traitement d’élément FAST Search Server 2010 for SharePoint utilise le code de sortie de la commande pour déterminer si elle s’est exécutée correctement. Un code de sortie de zéro indique que la commande s’est exécutée correctement du début à la fin. Un code de sortie différent de zéro doit être utilisé uniquement en cas de situation anormale empêchant la commande d’exécuter sa tâche (par exemple en cas d’erreur dans un fichier de configuration, de DLL manquante ou d’exception non gérée). Dans ces cas-là, la commande doit consigner un bref message dans la sortie standard ou une erreur standard expliquant le problème. Ce message sera transféré au journal d’analyse.

Avant que la configuration ne soit appliquée à l’installation, vérifiez que la commande fonctionne comme prévu sur chaque nœud en créant des exemples de fichiers d’entrée et en appelant manuellement la commande avec les fichiers d’entrée.

Voici un exemple simple en langage C# de sample.exe dans la section de format de fichier pipelineextensibility.xml. Il préfixe la propriété d’entrée en utilisant une chaîne fixe « Mr./Mrs.  et génère le résultat dans une nouvelle propriété.

using System;using System.Collections.Generic;
using System.Linq;using System.Xml.Linq;
using System.Text;namespace 
Sample{
    class Sample
    {
        public static readonly Guid FMTID_SummaryInformation = new Guid("F29F85E0-4FF9-1068-AB91-08002B27B3D9");
        public static readonly Guid FMTID_UserDefinedProperties = new Guid("D5CDD505-2E9C-101B-9397-08002B2CF9AE");
        static void Main(string[] args)
        {            // Fetch the author property from the input item
            XDocument inputDoc = XDocument.Load(args[0]);
            var res = from cp in inputDoc.Descendants("CrawledProperty")
                      where new Guid(cp.Attribute("propertySet").Value).Equals(FMTID_SummaryInformation) &&
                      cp.Attribute("propertyId").Value == "4" &&
                      cp.Attribute("varType").Value == "31"
                      select cp.Value;            // Create the output item
            XElement outputElement = new XElement("Document");
            // Add a crawled property where the author is prefixed with "Mr./Mrs."
            if (res.Count() > 0 && res.First().Length > 0)
            {
                outputElement.Add(
                    new XElement("CrawledProperty",
                        new XAttribute("propertySet", FMTID_UserDefinedProperties),
                        new XAttribute("propertyName", "MyProperty"),
                        new XAttribute("varType", 31),
                            "Mr./Mrs. " + res.First())
                        );
            }
            outputElement.Save(args[1]);
        }
    }
}

Voir aussi

Concepts

Schéma de configuration d’extensibilité du pipeline

Schéma d’interface d’extensibilité de pipeline

Traitement d’élément XML personnalisé