Integrieren einer externen Komponente für die Elementverarbeitung

Letzte Änderung: Montag, 30. August 2010

Gilt für: SharePoint Server 2010

Inhalt dieses Artikels
Übersicht über die Pipelineerweiterbarkeit
Befehlsumgebung
Pipelineerweiterbarkeit und IFilter
Behandeln durchforsteter Eigenschaften
Anpassen der Datei "pipelineextensibility.xml"
Dateiformat für "pipelineextensibility.xml"
Format der Eingabe-/Ausgabedatei
Erstellen eines benutzerdefinierten Befehls

Manche Anwendungen benötigen für die Elementverarbeitung möglicherweise Erweiterungen. Sie können zusätzliche durchsuchbare Metadaten vom Inhalt generieren oder aber eine bestimmte Information vom Element an eine Anwendung eines Drittanbieters zu Statistik- und Überwachungszwecken weiterleiten.

In diesem Thema wird beschrieben, wie Sie wie folgt eine externe Komponente für die Elementverarbeitung für FAST Search Server 2010 for SharePoint erstellen:

Übersicht über die Pipelineerweiterbarkeit

Mit der Pipeline für die Elementverarbeitung in FAST Search Server 2010 for SharePoint werden verschiedene Aufgaben ausgeführt, wie z. B. Textextraktion, Spracherkennung und Tokenisierung, um ein Element aus einer Inhaltsquelle für die Indizierung und Suche vorzubereiten.

Mit der Schnittstelle für die Pipelineerweiterung können Sie benutzerdefinierte Verarbeitungsbefehle für jedes Element ausführen, das über die Pipeline weitergeleitet wird. Ein Befehl verwendet durchforstete Eigenschaften als Eingabe, verarbeitet sie und gibt andere durchforstete Eigenschaften aus. Die Kommunikation zwischen der Pipeline für die Elementverarbeitung und dem benutzerdefinierten Befehl erfolgt mithilfe temporärer XML-Dateien. Die Verarbeitung der Pipelineerweiterung erfolgt vor der Zuordnung durchforsteter Eigenschaften zu verwalteten Eigenschaften.

Die durchforsteten Eigenschaften für die Eingabe können aus der Inhaltsquelle abgerufene Metadaten sein. Sie können aber auch die benutzerdefinierte XML-Elementverarbeitung (siehe Benutzerdefinierte XML-Elementverarbeitung) für abgerufene XML-Elemente verwenden, um von den XML-Daten durchforstete Eigenschaften zu erstellen.

Die auszuführenden Befehle geben Sie in der Datei pipelineextensibility.xml an. Das Format für diese Konfigurationsdatei wird im Pipelineerweiterbarkeits-Konfigurationsschema angegeben. Listen Sie für jeden Befehl die durchforsteten Eigenschaften auf, die der Befehl als Eingabe erhält, und listen Sie die durchforsteten Eigenschaften auf, die der Befehl ausgeben wird.

Wichtiger HinweisWichtig

Änderungen, die Sie an dieser Datei vornehmen, gehen unwiederbringlich verloren, wenn Sie ein Update oder ein Service Pack für FAST Search Server 2010 for SharePoint installieren.

Diese Konfigurationsdatei wird nicht mit dem standardmäßigen Sicherungsverfahren von FAST Search Server 2010 for SharePoint gesichert. Um den Verlust Ihrer Änderungen zu vermeiden, müssen Sie die Datei nach dem Ändern sichern.

Wenn Sie ein Update oder ein Service Pack für FAST Search Server 2010 for SharePoint installieren, müssen Sie danach die Änderungen an der Konfigurationsdatei erneut vornehmen.

Befehlsumgebung

Bevor ein Befehl ausgeführt wird, werden die durchforsteten Eigenschaften für die Eingabe in einer temporären XML-Datei gesammelt. Der Befehl liest dann diese Datei und gibt die resultierenden durchforsteten Eigenschaften in eine andere temporäre XML-Datei aus. Die Pfade zu den Eingabe- und Ausgabedateien sind beim Angeben des auszuführenden Befehls als spezielle Zeichenfolgensequenzen verfügbar. Das Dateiformat der Eingabe- und Ausgabedatei ist identisch und wird im Schema der Schnittstelle für die Pipelineerweiterung angegeben.

Die Befehle werden in einer Sandkastenumgebung mit begrenzter Verarbeitungszeit, begrenztem Arbeitsspeicher und einer begrenzten Anzahl von Prozessen ausgeführt. Neben der Eingabe- und Ausgabedatei ist mit den Befehlen nur der Lese-/Schreibzugriff auf öffentlich zugängliche Dateien möglich.

Der vollständige Netzwerkzugriff ist möglich. Wenn Sie keinen Netzwerkzugriff benötigen, erstellen Sie eine Firewallregel, um Ihre Anwendung für den Fall zu blockieren, dass manipuliert wurde.

Falls beim Ausführen des Befehls in einer Sandkastenumgebung Probleme auftreten, können Sie den Code dahingehend ändern, dass die Eingabe an einen separaten Prozess oder Dienst weitergeleitet wird, der Sockets verwendet und dann die eigentlichen Arbeitsschritte ausführt.

Pipelineerweiterbarkeit und IFilter

Zum Implementieren der Textextraktion für ein neues Dokumentformat implementieren Sie einen IFilter und registrieren ihn mit FAST Search Server 2010 for SharePoint. Darüber hinaus können Sie die Unterstützung der Textextraktion mit dem Pipelineerweiterbarkeitsfeature implementieren. Weitere Informationen finden Sie unter Konfigurieren von FAST Search Server für SharePoint für die Verwendung eines IFilters eines Drittanbieters.

Behandeln durchforsteter Eigenschaften

Durchforstete Eigenschaften sind Metadaten, die aus Inhaltsquellen extrahiert werden, um die Daten für die Suche verfügbar zu machen. Durchforstete Eigenschaften werden in der Regel vom Inhalts-SSA oder anderen FAST Search Server 2010 for SharePoint-Konnektoren gemeldet, können aber auch während der Elementverarbeitung durch einen IFilter oder eine benutzerdefinierte Verarbeitungsphase erstellt werden.

Eine durchforstete Eigenschaft wird durch Name, Propset und VariantType eindeutig definiert. Mit dem Windows PowerShell-Cmdlet New-FASTSearchMetadataCrawledProperty können Sie eine benutzerdefinierte durchforstete Eigenschaft erstellen. Sie können ein vorhandenes Propset-Element verwenden oder aber ein Propset-Element für die benutzerdefinierten durchforsteten Eigenschaften erstellen.

Jede durchforstete Eigenschaft können Sie einer verwalteten Eigenschaft zuordnen. Sie können aber auch eine Kategorie für durchforstete Eigenschaften erstellen und die gesamte Kategorie dem standardmäßigen Volltextindex zuordnen. Weitere Informationen finden Sie unter Verwalten durchforsteter Eigenschaften mithilfe von Windows PowerShell (FAST Search Server 2010 for SharePoint) und in der Indexschemareferenz.

Es werden nur durchforstete Eigenschaftentypen unterstützt, die einer verwalteten Eigenschaft zugeordnet werden können.

Ein spezieller Eigenschaftensatz enthält durchforstete Eigenschaften, die in der Pipeline für die Elementverarbeitung erstellt werden. Ein Teil dieser schreibgeschützten Eigenschaften kann an den Pipelineerweiterungsbefehl übergeben werden. Hierzu zählen die Eigenschaften url, data und body. Die data-Eigenschaft enthält den Base64-codierten Binärinhalt des Quelldokuments. Weitere Informationen finden Sie unter CrawledProperty-Element [Pipeline Extensibility Configuration Schema].

Anpassen der Datei "pipelineextensibility.xml"

Verwenden Sie einen Text-Editor oder einen XML-Editor zum Anpassen dieser Datei.

HinweisHinweis

Zum Ändern einer Konfigurationsdatei müssen Sie Mitglied der lokalen Gruppe FASTSearchAdministrators auf dem Computer mit FAST Search Server 2010 for SharePoint sein.

So bearbeiten Sie die Datei "pipelineextensibility.xml"

  1. Aktualisieren Sie auf jedem Server in der FAST Search Server 2010 for SharePoint-Farmbereitstellung %FASTSEARCH%\etc\pipelineextensibility.xml mit Ihren Änderungen.

  2. Führen Sie im FAST Search Server 2010 for SharePoint-Verwaltungsknoten den Befehl psctrl reset aus, um alle derzeit im System ausgeführten Elementprozessoren zurückzusetzen.

  3. Sichern Sie die Datei, da sie nicht in die Konfigurationssicherung/-wiederherstellung von FAST Search Server 2010 for SharePoint einbezogen wird.

  4. Sie müssen diese Datei von der Sicherungskopie aktualisieren, nachdem Sie ein Softwareupdate angewendet haben. Weitere Informationen finden Sie im Hinweis unter Übersicht über die Pipelineerweiterbarkeit.

Dateiformat für "pipelineextensibility.xml"

Die Datei pipelineextensibility.xml weist die folgende grundlegende Struktur auf.

<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>

Weitere Informationen zur XML-Syntax finden Sie unter Pipelineerweiterbarkeits-Konfigurationsschema.

Sie können mehrere Run-Elemente angeben, die in der in der Konfigurationsdatei aufgeführten Reihenfolge verarbeitet werden. Darüber hinaus können Sie mehrere CrawledProperty-Elemente in den Elementen Input und Output angeben.

Im folgenden Beispiel wird die Konfiguration eines Befehls veranschaulicht, mit dem die Author-Eigenschaft (identifiziert durch property ID 4) aus dem SummaryInformation-Eigenschaftensatz gelesen wird und eine andere Eigenschaft mit dem Namen MyProperty ausgegeben wird. Die Pfade zu den Eingabe- und Ausgabedateien sind als die speziellen Zeichenfolgensequenzen "%(input)s" und "%(output)s" verfügbar.

<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>

propertySet und varType können Sie für eine durchforstete Eigenschaft mithilfe des Windows PowerShell-Cmdlets Get-FASTSearchMetadataCrawledProperty abrufen. Im folgenden Beispiel wird gezeigt, wie Sie dabei für die durchforstete Eigenschaft fileextension vorgehen.

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 der Eingabe-/Ausgabedatei

Die Eingabe- und Ausgabezwischendateien, die die durchforsteten Eigenschaften enthalten, verwenden das gleiche XML-Format.

Die Zwischendateien weisen die folgende grundlegende Struktur auf.

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

Informationen zur XML-Syntax finden Sie unter Schema der Schnittstelle für die Pipelineerweiterung.

Im folgenden Beispiel wird die Eingabedatei für das Beispiel aus dem Abschnitt Dateiformat für "pipelineextensibility.xml" angegeben. Bei diesem Beispiel wird davon ausgegangen, dass der Autor John Doe heißt.

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

Die Eingabedatei wird durch die Pipeline für die Elementverarbeitung von FAST Search Server 2010 for SharePoint immer im UTF-8-Format codiert. Die durch den Befehl erstellte Ausgabedatei muss im UTF-8- oder UTF-16-Format codiert werden, damit alle Zeichen ordnungsgemäß interpretiert werden.

Erstellen eines benutzerdefinierten Befehls

Die spezielle Zeichenfolgensequenz "%(input)s" im command-Attribut wird durch den tatsächlichen Pfad der Eingabedatei ersetzt. Diese Sequenz ist erforderlich, falls das Input-Element CrawledProperty-Elemente enthält.

Die spezielle Zeichenfolgensequenz "%(output)s" im command-Attribut wird durch den tatsächlichen Pfad der Ausgabedatei ersetzt. Wenn das Output-Element CrawledProperty-Elemente enthält, ist diese Sequenz erforderlich, und eine gültige Ausgabedatei muss generiert werden. Die Ausgabedatei muss mindestens das Document-Element auf oberster Ebene enthalten.

<Document></Document>

Mit dem Befehl kann eine Teilmenge der aufgelisteten CrawledProperty-Elemente ausgegeben werden.

Die Pipeline für die Elementverarbeitung von FAST Search Server 2010 for SharePoint bestimmt mithilfe des Exitcodes des Befehls, ob er erfolgreich ausgeführt wurde. Der Exitcode 0 weist darauf hin, dass der Befehl erfolgreich von Anfang bis Ende ausgeführt wurde. Ein anderer Exitcode als 0 sollte nur verwendet werden, wenn eine Ausnahmesituation vorliegt, die die Ausführung des Befehls verhindert (z. B. Fehler in einer Konfigurationsdatei, eine fehlende DLL oder ein Ausnahmefehler). In diesen Fällen sollte von dem Befehl eine kurze Meldung mit einer Erläuterung des Problems in der Standardausgabe oder im Standardfehler protokolliert werden. Diese Meldung wird an das Durchforstungsprotokoll weitergeleitet.

Überprüfen Sie vor der Übernahme der Konfiguration für die Installation, ob der Befehl für jeden Knoten tatsächlich erwartungsgemäß ausgeführt wird, indem Sie Beispieleingabedateien erstellen und den Befehl zusammen mit den Eingabedateien manuell aufrufen.

Im Folgenden finden Sie das einfache C#-Beispiel sample.exe aus dem Formatabschnitt der Datei pipelineextensibility.xml. Dem Eingabeeigenschaft wird die festgelegte Zeichenfolge "Mr./Mrs." als Präfix vorangestellt, und das Ergebnis wird an eine neue Eigenschaft ausgegeben.

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]);
        }
    }
}

Siehe auch

Konzepte

Pipelineerweiterbarkeits-Konfigurationsschema

Schema der Schnittstelle für die Pipelineerweiterung

Benutzerdefinierte XML-Elementverarbeitung