Request

Eine Indizierungsanfrage wird mit dem ses-indexDoc-Element in einem ses-request-Element kodiert. Es folgt ein Beispiel, das gleichzeitig zeigt, dass sich mehrere Requests in einem Payload befinden können:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ses-payload SYSTEM "http://www.example.com/ses.dtd">
  <ses-payload payload-id="B42TE241" timestamp="20100825172100" version="2.1">
  <ses-header>
    <ses-sender sender-id="FX45RTDT" name="CM-Server"/>
    <ses-authentication login="cm-server" password=""/>
  </ses-header>
  <ses-request request-id="BR12TI5X">
    <ses-indexDoc docId="4712" collection="collection1"
         mimeType="application/ms-word" usesStreaming="YES">
      <title encoding="plain">testdoc1</title>
      <customAttribute encoding="base64">MGHX2c5=</customAttribute>
      <blob encoding="stream">d--1157180779-000000001-X</blob>
    </ses-indexDoc>
  </ses-request>
  <ses-request request-id="BR12TI5Y">
    <ses-indexDoc docId="4713" collection="collection2">
      <title encoding="plain">testdoc2</title>
      ...
      <blob>Just the blob</blob>
    </ses-indexDoc>
  </ses-request></ses-payload>

Das ses-indexDoc-Element hat die folgenden Attribute:

  • docId
    Die ID des zu indizierenden Dokuments. Dies ist üblicherweise die Versions-ID (Content Management Server) oder die Datei-ID (Template Engine).
  • collection
    Der Name der Collection, zu der das zu indizierende Dokument hinzugefügt werden soll.
  • mimeType
    Der MIME-Typ des zu indizierenden Dokuments. Anhand des MIME-Typs entscheidet der Search Engine Server, mit welchem Präprozessor das Dokument vorverarbeitet werden soll (siehe Suche und Indizierung konfigurieren).
  • usesStreaming
    YES
    , wenn mindestens eines der zu indizierenden Felder über das Streaming-Interface zum Search Engine Server übertragen wurde, andernfalls NO.

Das ses-indexDoc-Element enthält als Unterelemente alle in Abschnitt Content-Indizierung aufgeführten Attribute, von denen in das obige Beispiel exemplarisch nur title, das kundenspezifische Attribut customAttribute und blob aufgenommen wurden. Wie die Inhalte der zu indizierenden Datei- und Versionsfelder kodiert sind, wird mit dem Tag-Attribut encoding in den jeweiligen Attribut-Tags angegeben. encoding kann einen der drei folgenden Werte haben:

  • plain
    Der Wert des zu indizierenden Attributs ist nicht kodiert und direkt als Wert des Elements angegeben. Dies ist die Voreinstellung.
  • base64
    Der Wert des Attributs ist base64-kodiert.
  • stream
    Der Wert des Attributs ist ein Streaming-Ticket. Das Ticket verweist auf einen Inhalt, den der Client zuvor über das Streaming-Interface dem Search Engine Server übermittelt hat (siehe die unten folgende Erläuterung).

Wenn ein Feldwert base64-kodiert ist oder über das Streaming-Interface zum Search Engine Server übertragen wurde, so muss für den MIME-Typ des Dokuments ein Präprozessor konfiguriert sein, der den Inhalt des Attributs in reinen Text umwandelt und den Wert von encoding auf plain setzt.

Streaming

Ein Client hat die Möglichkeit, die Werte von Feldern separat an den Search Engine Server zu übertragen, bevor er ihm einen Indizierungsrequest sendet. Dieses Verfahren ist insbesondere bei größeren binären Datenmengen zu empfehlen, weil es performanter ist, als diese Daten base64-kodiert in den Request aufzunehmen.

Ein Client verwendet das so genannte Streaming-Interface, um solche Daten zum Search Engine Server zu übertragen. Das Streaming-Interface wird mit einem POST-Request zum HTTP-Port des Search Engine Servers unter Angabe der URL /stream angesprochen. Nachdem die Daten übertragen wurden, erhält der Client als Antwort ein Streaming-Ticket, das er im darauf folgenden Indizierungsrequest in der oben beschriebenen Weise angibt, um die Daten zu referenzieren.

Der Content Management Server überträgt die Inhalte von Dateien des Typs Ressource über das Streaming-Interface zum Search Engine Server. Auch der Hauptinhalt von Dateien des Typs Ordner, Dokument und Layout wird dem Search Engine Server auf diese Weise übergeben, wenn der Hauptinhalt größer als 8 KB ist. Bis auf Dateien vom Typ Layout gilt dies auch für die Template Engine (die Template Engine lässt Layoutdateien nicht indizieren). Der Mindestumfang der Daten, die per Streaming übertragen werden sollen, kann in der Systemkonfiguration des Content Managers und der Template Engine mit dem Eintrag minStreamingDataLength konfiguriert werden.