GSB 7.0 Standardlösung

Indizierung

Die Indizierung von Inhalten des CMS meint hier den Prozess zur Aufbereitung von Inhalten des CMS, um deren Durchsuchbarkeit zu gewährleisten und wird mit einer eigenständigen Komponente durchgeführt, welche im folgenden als Indexer bezeichnet wird.

Funktionsweise des Indexer

Der Indexer bietet für die Indexierung von Inhalten zwei verschiedene Betriebsmodi an, die unabhängig vom Typ des Indexers (Solr, Lucene) genutzt werden können:

  1. Neuaufbau ausgewählter Mandantenindizes: Die zu indexierenden Inhalte werden per Coremedia Query (Suchanfrage gegen das Repository) ermittelt und mit mehreren parallel laufenden Threads werden die gewünschten Indizes neu erzeugt. Auf diese Weise können Indizes schneller erstellt werden, als im reinen eventbasierten Verfahren (altes Verfahren im ADS). Die Neuindizierung eines Mandanten wird angestoßen, wenn im Timestampverzeichnis eine Datei vor dem Starten des Indexers angelegt wird (Mandant_NEW_INDEX.ni, z.B. standardlsg_NEW_INDEX.ni)
  2. Eventlistenermodus: Die Aktualisierung der Indizes im laufenden Betrieb wird in diesem Modus realisiert. Dies bedeutet, dass der Client auf Events im Repository reagiert, um den Index zu aktualisieren. Bspw. wenn eine neue Version eines Dokuments erzeugt wird.

Feldtypendefinition

In der Schemadefinition der Solr-Applikation können unterschiedliche Feldtypen angelegt und verwendet werden.

Dies erfolgt  in der Datei schema.xml im Verzeichnis solr/configsets/gsb/conf/, wobei alle dortigen Konfigurationsdateien vom nutzenden Mandanten überschriebenw erden können.

Exemplarisch werden im folgenden zwei Definitionen aufgeführt und deren prinzipieller Aufbau beschrieben.

Volltextfelddefintion (komplex)

<fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">

<analyzer type="index">

<tokenizer class="solr.StandardTokenizerFactory"/>

<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>

<filter class="solr.LowerCaseFilterFactory"/>

<filter class="solr.SnowballPorterFilterFactory" language="German" />

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />

<filter class="solr.RemoveDuplicatesTokenFilterFactory" />

</analyzer>

<analyzer type="query">

<tokenizer class="solr.StandardTokenizerFactory"/>

<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>

<filter class="solr.LowerCaseFilterFactory"/>

<filter class="solr.SnowballPorterFilterFactory" language="German" />

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />

<filter class="solr.RemoveDuplicatesTokenFilterFactory" />

</analyzer>

</fieldType>

Datumsfelddefinition

<fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>

Solr-Externe-DownloadDokumente

Der Indexer bietet die Möglichkeit auch externe Downloaddokumente zu indizieren.

Voraussetzung dafür ist, dass es für jeden externen Dowload ein Dokument im GSB-Repository gibt (Wrapper-Dokument).
In diesem Wrapperdokument wird dann der Zugriffspfad entsprechend hinterlegt. Damit ist eine Aktualisierung der Inhalte also nur möglich wenn ein entsprechendes Event im Repository erzeugt wird:
Konkret bedeutet dies, dass eine Aktualisierung des externen Downloads nicht automatisch erkannt wird und explizit ausgelöst werden muss, indem das Wrapper-Dokument ausgeliehen und zurückgegeben bzw. publiziert wird.

Die Downloaddokumente können dabei über zwei Zugriffsmethoden eingebunden werden:

  1. Per Http Adresse
  2. Per lokalem File Zugriff - Files müssen direkt vom Indexer zugegriffen werden können

Im Indexer gibt es für diese beiden Zugriffsmethoden Größenbeschränkungen, um den performanten Betrieb des Indexers zu gewährleisten.
Diese Beschränkungen gelten für die komplette Indexerinstallation und können nicht mandantenspezifisch angepasst werden.
Per default können zunächst HTTP Downloads bis zu 20MB vorgenommen werden und lokale Dateizugriffe bis zu 50MB.

Konfiguration der Indizierung externer Downloadinhalte

Die Konfiguration der Indizierung externer Downloads erfolgt im Indexer mit Hilfe der Klasse: de.bund.gsb.indexer.content.externalblob.ExternalBlobMapper
Darin werden im wesentlichen die folgenden Properties definiert:

  • Dokumenttypen für die eine externe Blobindizierung durchgeführt werden sollen (relevantDocTypes). Hier kann auch "all" als Wert abgelgt werden, wenn alle Dokumenttypen berücksichtigt werden sollen.
  • Feld in dem der Zugriffspfad auf das externe Dokument hinterlegt ist (urlProperty)
  • Name des Feldes, genauer dasr Prefix, in dem der Blobinhalt abgelegt werden soll (blobIndexPropertyNamePrefix). Dies wird wird automatisch um _blob ergänzt.
  • Proxyangaben, falls HTTP Quellen angesprochen werden sollen, die über einen Proxy erreicht werden müssen (externalBlobProxyHost und externalBlobProxyPort)
  • ggf. ein Prefix, welches automatisch zum Zugriffspfad ergänzt wird (externalPathPrefix)

Blobindizierung deaktivieren

Das Blob wird nicht indiziert, wenn das Dokumentproperty shoudNotBeIndexed den Wert 2 hat.