GSB 7.0 Standardlösung

Dynamische Seiten

Einige Seiten Ihres Webauftritts werden dynamisch zusammengesetzt. Dies bedeutet, dass Sie beispielsweise einen bestimmten Inhalt neu erfassen und dieser dann automatisch auf der zugehörigen Seite angezeigt wird.

Um diese Automatik zu ermöglichen, müssen Sie für jede dynamische Seite ein Dokument vom Typ „Dynamische Dokumentliste“ anlegen. Die dafür benötigten technischen Suchoperatoren finden Sie unten aufgeführt.

Die für die dynamischen Seiten benötigten Konfigurationsdokumente werden von Site-Managern erstellt und im Ordner „Functions“ unterhalb des Ordners, zu dem sie gehören, abgelegt, z.B. „/Standardlsg/DE/Aktuelles/Interviews/Functions“.

Neben der dynamischen Dokumentliste benötigen Sie ein weiteres Dokument vom Typ „Konfiguration-String“. Dieses kennzeichnet den Ordner, in dem nach einem bestimmten Dokumenttyp, der ein bestimmtes Suchmuster erfüllt, gesucht werden soll. Es empfiehlt sich, das Dokument „_suchordner“ zu nennen, um es so auch namentlich von den anderen Dokumenten des Ordners zu unterscheiden. Dieses Dokument wird innerhalb desjenigen Ordners im Content abgelegt, der als Ablageort für die jeweils zu durchsuchenden, Inhalt tragenden Dokumente dient. Die Redakteure sehen dieses Dokument, haben aber keine Schreibrechte darauf.

Das Dokument „_suchordner“ wird dann in der Dynamischen Dokumentliste entsprechend im Feld „Startordner“ verlinkt. Sofern noch die Unterordner mit einbezogen werden sollen, kann dies ebenfalls im Feld „Inklusive Unterverzeichnisse“ angegeben werden.

Die in der Standardlösung vorkonfigurierten dynamischen Dokumentlisten finden Sie im zugehörigen Dokument.

Spracherkennung der zu suchenden Dokumente

In dynamischen Dokumentlisten haben Sie die Möglichkeit, Inhalte sprachabhängig zusammenzustellen. Dies benötigen Sie immer dann, wenn Inhalte mehrerer Sprachen parallel abgelegt werden.

In der dynamischen Dokumentliste geben Sie einerseits die eigene Sprache an (Feld „Sprachkennzeichen“). Anschließend können Sie im Feld „Sprachoperator“ einstellen, ob die zu findenden Dokumente dieselbe Sprache wie diese dynamische Dokumentliste haben sollen oder nicht. Entsprechend Ihrer Einstellung werden die Dokumente ausgegeben. Sie müssen im Feld „Erweiterte Suchanfrage“ keine weiteren Vorgaben machen.

Dynamisch zusammengestellte Liste als Tabelle

Sie haben die Möglichkeit, die dynamisch zusammengestellten Inhalte tabellarisch darzustellen. Dazu benötigen Sie verschiedene Dokumente:

  • Dynamische Dokumentliste (SearchResultSet)
  • HTML-Baustein (HTML-Fragment)
  • Verschiedene Layout-Dokumente (LOViewVariant)
  • Generische Tabelle (GenericTable)

Diese Dokumente zusammen erzeugen eine tabellarische Übersicht der Ergebnisse der zugehörigen Dynamischen Dokumentliste. Ein konkretes Konfigurationsbeispiel finden Sie im entsprechenden Handbuch.

Dynamische Dokumentliste (SearchResultSet)

Legen Sie die Dynamischen Dokumentlisten an, die Sie benötigen. Eine detaillierte Vorgehensbeschreibung finden Sie unten aufgeführt.

Layout (LOGridTemplate)

Jede Tabelle benötigt zur Darstellung ein Dokument vom Typ Layoutgitter-Template.

Verschiedene Layout-Dokumente (LOViewVariant)

Wenn Sie Darstellungen abweichend vom Standard benötigen, sind diese Dokumente anzulegen und entsprechend einzubinden.

Generische Tabelle (GenericTable)

Das Kern-Dokument zum Erstellen tabellarischer Übersichten ist die Generische Tabelle. Sie haben mit diesem Dokument die Möglichkeit, das Aussehen von tabellarischen Übersichten selbst zu konfigurieren.

Generische Tabelle

Folgende Einträge müssen Sie in diesem Dokument vornehmen, um eine tabellarische Übersicht zu generieren:

  • Interne Beschreibung: wird nur intern verwendet
  • Überschrift: Hier kann die Überschrift der Seite angegeben werden
  • Beschreibung: Hier kann ein einleitender Text eingegeben werden, der dann über der Tabelle dargestellt wird.
  • Darzustellende Inhalte: Hier wird die dynamische Dokumentliste eingebunden, die dann die darzustellenden Inhalte zusammensucht. Wenn Sie hier mehr als einen Inhalt darstellen möchten, haben Sie die Möglichkeit, mehrere Linklisten einzufügen. Alternativ können hier auch Dokumente anderen Typs eingebunden werden. Zudem können Sie, sofern die Inhalte nicht speziell mit Velocity-Skripten ausgegeben werden, eine View-Variante verlinken, siehe Konzept GSB7/Velocity-Skripte.
  • Template: Geben Sie hier das zugehörige Layoutgitter-Template ein, dass die Ausgabe mit Start- und Endfragment bestimmt, siehe Konzept GSB7/Velocity-Skripte.
  • Einträge pro Seite: Hier benennen Sie die Anzahl der Seite, da eine mit diesem Dokumenttyp erzeugte Tabelle automatisch eine Blätter-Funktion anbietet.
  • Leere Tabelle anzeigen: Wenn die Checkbox aktiviert ist, wird die Tabelle leer angezeigt. Auch wenn keine Inhalte vorhanden sind, wird eine leere Tabelle angezeigt,
  • Alternierende Zeilen: Wenn diese Checkbox aktiviert ist, werden die einzelnen Tabellenzeilen, sofern nicht im Rahmen der Velocity-Skripte anders ausgewertet, abwechseln in zwei Farben (CSS Definition „even“ und „odd“) dargestellt.

Dynamische Dokumentliste (SearchResultSet)

Dynamische Dokumentliste

Die Erfassungsmaske setzt sich aus verschiedenen Feldern zusammen, die im Dokument GSB7/SL_EditorDoctypes beschrieben sind.

Eine Liste aller in der Standardlösung im Einsatz befindlichen dynamischen Dokumentlisten findet sich in einem gesonderten Dokument (GSB7/SL_SearchResultSets).

Datumsfelder: Beachten Sie die Einstellung bei Erscheinungsstatus und Archivierungsstatus. Sie können an dieser Stelle Einfluss auf die anzuzeigenden Dokumente nehmen. Sobald aber das eine oder andere Datumsfeld im anzuzeigenden Dokumenttyp nicht vorhanden ist oder nicht berücksichtigt werden soll, muss der Wert des Drop-Down-Menüs auf „ignorieren“ stehen.

Sprachkennzeichen: Mit dem Language-Flag können Sie angeben, ob nur Dokumente gefunden werden sollen, die der Sprache der Dynamischen Dokumentliste entsprechen oder eben anderssprachige oder die Sprache völlig ignoriert werden soll. Dieser Mechanismus ist besonders für die Seiten wichtig, bei denen die darzustellenden Inhalte mehrerer Sprachen parallel nebeneinander liegen. Wenn immer alle Sprachen gefunden werden sollen, wählen Sie bitte die Einstellung „Alle Sprachen“.

Typische Sortierkriterien

Sortierkriterien können in der Gleichnamigen Property referenziert werden. Die zu verlinkenden Konfiguration-Strings befinden sich in /standardlsg/SiteGlobals/Functions/Solr/Liste/Sortierung und können in der Property kombiniert werden.

  • Ausgabe_absteigend sortiert anhand der laufenden Nummer (Volume) aufsteigend (z.B. für Pressemitteilungen geeignet).
  • Erscheinungsdatum_absteigend sortiert absteigend nach Erscheinungsdatum (immer dann sinnvoll, wenn das aktuellste Dokument am Anfang einer Liste stehen soll).
  • Erscheinungsdatum_aufsteigend sortiert aufsteigend nach Erscheinungsdatum.
  • Nachname_absteigend sortiert absteigend alphabetisch die Nachnamen (Name), z.B. von Person-Dokumenttypen.
  • Startdatum_absteigend sortiert absteigend nach Anfangsdatum z.B. bei Terminen (immer dann sinnvoll, wenn das aktuellste Dokument am Anfang einer Liste stehen soll).
  • Startdatum_aufsteigend sortiert aufsteigend nach Anfangsdatum z.B. bei Terminen.
  • Titel_absteigend sortiert die Titel absteigend.
  • Titel_aufsteigend sortiert die Titel aufsteigend.
  • Vorname_aufsteigend empfiehlt sich für alphabetische Personenlisten, die auch Vornamen berücksichtigen.

Mandantenübergreifende Inhaltsübernahme

Die Dokumente einer dynamischen Dokumentliste werden entsprechend der definierten Suchkriterien innerhalb des Mandanten gesucht. Ein Zugriff auf Inhalte eines anderen Mandanten ist mit der Standardkonfiguration nicht realisierbar.

Eine mandantenübergreifende Ermittlung, z.B. für den Zugriff auf SharedContent, kann durch folgende Konfiguration realisiert werden:

Beispiel: Auf der Startseite des Beschaffungsamts werden aktuelle Ausschreibungen angezeigt. Diese Ausschreibungen werden per ContentSyndication aus dem Mandanten Bund.de übernommen. Diese Technik ermöglicht es, Suchergebnislisten zu erstellen, die als Suchordner ein Verzeichnis in einem anderen Mandanten berücksichtigen. Sowohl BeschA als auch BUNDDE sind Mandanten auf der GSB-Plattform beim Bundesverwaltungsamt.

Hinweis: In diesem Artikel sind die wichtigen Dokumente und deren Pfade aufgeführt. Zum nachbauen sollten die Editoren der Mandanten BeschA und BUNDDE sowie ein Admin-Editor zur Verfügung stehen.

Im Mandanten der die Quelle der Daten sein soll (BUNDDE) muss dem abfragenden Mandanten (BeschA) "erlaubt" werden, dass dieser Suchen durchführen darf. Dies geschieht in einem Dokument mit dem Namen SolrSearchCustomerQueries im Pfad /BUNDDE/SiteGlobals/_config/.

  • Pfad: /BUNDDE/SiteGlobals/_config/SolrSearchCustomerQueries
  • Name: SolrSearchCustomerQueries
  • Typ: Konfiguration-Klassifizierte Linkliste

Dort wird pro abfragenden Mandanten eine Linkliste angelegt:

  • Typ/Text: [MANDANTENNAME] (hier: BeschA)
  • Dokumenten-Links: [NEUES DOKUMENT]
  • NEUES DOKUMENT: Es ist ein neues Dokumente mit dem Namen SolrSearchEnt[MANDANT]Queries (hier: SolrSearchEntBeschAQueries) im Pfad /BUNDDE/SiteGlobals/ContentSyndication/ anzulegen.
  • Pfad: /BUNDDE/SiteGlobals/ContentSyndication/
  • Name: SolrSearchEntBeschAQueries
  • Typ: Konfiguration-Richtext 1.0

In diesem Konfigurationsdokument wird der Pfad angegeben, in dem die Suche durchgeführt werden soll; Beispiel BeschA:

<source lang="text">BeschA_Ausschreibungen_filterlist=filter filter=folderPath_:/bundde/importe/ausschreibungen/evergabe/* </source>


Im abfragenden Mandaten wird ein Dokument vom Typ Suchergebnisliste angelegt. Dieser wird wie üblich konfiguriert (Dokumenttypen, Sortierkriterium usw.). Nur die Angabe Startordner wird leer gelassen. Mit einem Admin-Editor muss die Property cl2Parameters (Parameter) befüllt werden. Hier werden zwei Linklisten angelegt:

  • Typ/Text: [QUELL-MANDANT] (hier: BUNDDE)
  • Klassifizierungslink: /BeschA/SiteGlobals/Classifications/Classifier/Common/SearchCustomer (Wert der Property title ist searchCustomer)
  • Dokumenten-Links: leer
  • Typ/Text: [FILTERNAME] (hier: Ausschreibungen)
  • Klassifizierungslink: /BeschA/SiteGlobals/Classifications/Classifier/Common/FilterName (Wert der Property title ist filterName)
  • Dokumenten-Links: leer

Die Suchergebnisliste funktioniert somit wie eine normale Suchergebnisliste innerhalb eines Mandanten. Statt dem Suchordner wird angegeben, dass dieser sich im Mandanten BUNDDE befindet.

Einbinden von dynamischen Seiten

Dynamische Seiten können an unterschiedlichen Stellen zum Einsatz kommen, sodass entsprechend verschiedene Varianten bestehen:

  • Tabellarische Dokumentliste als eigenständige Seite
  • Tabellarische Dokumentliste als Bestandteil einer anderen Seite (z.B. im Haupttext eines Standardartikels)

Abhängig von der gewünschten Darstellung der dynamisch zusammengestellten Inhalte müssen Sie die oben beschriebenen Dokumente einbinden:

Tabellarische Dokumentliste als eigenständige Seite

Legen Sie wie oben beschrieben eine generische Tabelle an. Verlinken Sie diese auf bekanntem Weg in einem Dokument vom Typ „Navigationsziel“. Eine spezifische Layout-Variante wird nicht benötigt.

Tabellarische Dokumentliste als Bestandteil einer anderen Seite

Die Nutzung erfolgt z.B. im Haupttext eines Standardartikels.

Legen Sie wie zuvor beschrieben eine generische Tabelle an, die dann die entsprechenden dynamischen Dokumentlisten enthält. Diese generische Tabelle können Sie anschließend im Haupttext eines Standardbeitrags einfügen. Hierzu verfahren Sie wie auch beim Einbinden von Bildern im Fließtext, jedoch geben Sie hier einfach nur „eingebettet“ und „beim Laden“ an (GSB7/SL_Benutzerhandbuch_Redakteur). Weitere Einträge werden nicht benötigt, die Tabelle wird nun im Fließtext dargestellt.

Syntax innerhalb von dynamischen Seiten

Die dynamischen Seiten werden auf Basis einer Suche zusammengesetzt.

Hinweis zu „Dynamische Dokumentliste" vom Typ "DynDocSearchEnt": Im Dokumenttyp gibt das Feld „Maximale Ergebnismenge“ die maximale Anzahl der von der Suchmaschine (Lucene) zu berücksichtigenden Dokumente an. Wenn mehr als diese Anzahl gefunden werden, wird eine „BundOnlineTooManySearchResultsException“ geworfen und nichts zurückgeliefert. Der im Feld „Maximale Ergebnismenge“ eingetragene Wert ist dann entsprechend anzupassen. Wenn ein Wert < 1 angegeben wird, wird der Defaultwert 500 verwendet.

Im Feld „Erweiterte Suchanfrage“ kann der Dokumenttyp „Dynamische Dokumentliste“ die in den folgenden Unterkapiteln beschriebenen Inhalte enthalten.

Ergänzende Informationen finden Sie im zugehörigen Konzept „GSB7/Suche“.

Ausdrücke

Eine Suchanfrage wird in Ausdrücke und Operatoren unterteilt. Ein einzelner Ausdruck ist ein Wort wie z.B. "Hallo". Eine Phrase ist eine Gruppe von Wörtern, von Anführungszeichen umschlossen, wie "Hallo Du". Mehrere Ausdrücke können mit Hilfe boolescher Operatoren verbunden werden.

Felderdaten

Die Suchmaschine unterstützt Felddaten (z.B. Dokumenttitel und Inhalt). Bei einer Suchanfrage kann man entweder ein Feld spezifizieren oder man benutzt das Standardfeld. Die Feldnamen sind implementationsspezifisch.

Um in einem bestimmten Feld zu suchen, kann man den Feldnamen, gefolgt von einem Doppelpunkt und dem Suchausdruck angeben. Ein Beispiel:

"title:index AND text:hallo".

Ist "text" das Standardfeld, kann man auch

"title:index AND hallo"

eingeben.

Das Feld gilt nur für den direkt folgenden Ausdruck. Bei

"title:Titel Nummer 1"

gilt das Feld "title" nur für das Wort "Titel".

Wenn Sie einen Wert mit Bindestrich im Wert-Namen suchen, dann müssen Sie den kompletten Namen in Anführungszeichen („“) setzen.

Die Auswertung einer klassifizierten Linkliste sieht aus wie folgt:

cl2RelatedEnts_<Feldname>: <Wert>

Enthält der Feldname Leerzeichen, so müssen diese durch eine Raute (#) ersetzt werden.

cl2RelatedEnts_Verwandte#Themen: „Hans-Otto“

Wildcards

Die Suchmaschine erlaubt Wildcard-Suche für ein oder mehrere Zeichen.

Um einen Platzhalter für ein einzelnes Zeichen anzugeben, wird ein Fragezeichen (?) benutzt.

te?t

würde nach allen Wörtern wie "test" oder "text" suchen.

Um ein Platzhalter für mehrere Zeichen anzugeben, wird ein Stern (*) benutzt.

test*

würde nach allen Wörtern wie "test" oder "tester" suchen.

Beide Wildcards können sowohl innerhalb als auch am Ende der Ausdrucks stehen, nicht jedoch am Beginn.

Fuzzy-Suche (undeutliche Suche)

Die Suchmaschine unterstützt undeutliche Suche (Levenshtein Distanz Algorithmus). Um eine undeutliche Suche zu formulieren, benutzt man das Tilde-Symbol (~) am Ende eines einzelnen Wortes.

lachen~

würde Wörter wie "lachen", "wachen" oder auch "Laschen" finden.

Beachten Sie: Ausdrücke, die über die Fuzzy-Suche gefunden wurden, werden automatisch mit einem Verstärkungsfaktor (vgl.6.5.6) von 0,2 gewichtet. Neben dem Feld „Erweiterte Suchanfrage“ funktioniert die Fuzzy-Suche auch in Such-Formular-Feldern vom Typ „searchEngineQueryString“.

Distanzsuche

Die Suchmaschine erlaubt das Suchen von Wörtern, die eine bestimmte maximale Distanz voneinander entfernt sind.

Um eine Distanzsuche zu formulieren, muss das Tilde-Symbol (~), gefolgt von der Anzahl der Wörter, die diese maximal voneinander entfernt sein dürfen, hinter dem Ausdruck angegeben werden.

"Guten wiedersehen"~10

würde nach den Wörtern "Guten" und "wiedersehen" suchen, die höchstens 10 Wörter voneinander entfernt liegen dürfen.

Verstärkungsfaktoren

Die Suchmaschine erlaubt es, einen Ausdruck mit einem Verstärkungsfaktor zu versehen, was sich dann auf die Reihenfolge der Ergebnisse auswirkt.

Um einem Ausdruck einen Verstärkungsfaktor zuzuordnen, wird das "^"-Symbol, gefolgt von dem Verstärkungsfaktor, hinter dem Ausdruck angegeben.

hallo^4 du

würde bedeuten, dass Ergebnisse, die das Wort "hallo" enthalten, viermal so stark gewichtet werden, wie solche, die das Wort "du" enthalten.

Auch Phrasen (Ausdrücke, die aus mehreren Wörtern bestehen) können mit einem Verstärkungsfaktor versehen werden.

Der Standardfaktor ist 1.

Verstärkungsfaktoren müssen immer positiv sein, sie können aber kleiner als 1 sein.

Boolesche Operatoren

Es können die booleschen Operatoren UND und ODER angegeben werden, um die Suche zu spezifizieren.

Sollen zwei Ausdrücke ODER-verknüpft werden, so ist dazwischen ein "OR" zu schreiben, oder aber gar nichts, da die ODER-Verknüpfung die Standardverknüpfung ist.

hallo OR du

oder aber hallo du

Sollen zwei Ausdrücke UND-verknüpft werden, so ist dazwischen ein "AND", oder aber vor beide Ausdrücke ein "+"-Zeichen zu schreiben.

hallo AND du

oder aber

+hallo +du

Soll z.B. das Wort "hallo" unbedingt vorkommen, das Wort "du" aber nicht unbedingt, so ist

+hallo du

zu schreiben.

Es können auch negierende boolesche Operatoren angegeben werden.

Um anzugeben, dass ein Ausdruck nicht vorkommen soll, ist ein NOT, oder aber ein Minuszeichen (-) vor dem Ausdruck zu schreiben.

hallo NOT du

bedeutet, dass "hallo", nicht aber "du" vorkommen soll.

Der NOT-Operator kann auch mit einem Ausdruck benutzt werden, wie bei

NOT "hallo du"

Gruppierung von Elementen

Elemente können gruppiert werden.

Dazu werden Klammern mit den üblichen Regeln benutzt:

(hallo OR du) AND ich

sucht alle Dokumente, in denen "ich" vorkommt, sowie "hallo" oder "du".

Syntaxzeichen ausschließen

Auch Zeichen, die für die Suchsyntax reserviert werden, können in der Suche mit angegeben werden.

Ein Backslash (\) vor einem solchen Zeichen bewirkt, dass es nicht für die Syntax interpretiert, sondern in den Suchausdruck einbezogen wird:

\(1\+1\)\:2

bedeutet, dass genau nach "(1+1):2" gesucht werden soll.

Datumsbereiche

Man kann innerhalb der erweiterten Suchanfrage auch ein Datum angeben. Da die normale Datumsangabe kodiert ist, ist im GSB ein Ausdruck definiert, der das heutige Datum beschreibt:

@TODAY@

Wenn man nicht genau das heutige Datum meint, kann man die Syntax (regex-Form)

@TODAY[+-][0-9]*[dmy]?@

verwenden, um einen zeitlichen Abstand zum heutigen Datum zu kennzeichnen.

"d" sind Tage (ist auch der Default)

"m" sind Monate

"y" sind Jahre

"Gestern" ist also "@TODAY-1@" oder "@TODAY-1d@".

Mit diesem Ausdruck kann man einen Bereich ausgehend vom heutigen Datum definieren:

dateOfIssue:[@TODAY-30d@ TO @TODAY@]

Der Beispielausdruck selektiert Objekte mit Datum zwischen heute minus 30 Tagen (Vergangenheit) und heute.

Eckige Klammern bedeuten bei Bereichen "einschließlich", geschweifte Klammern "ausschließlich" der angegebenen Grenze.

Zudem können auch feste Datumsbereiche eingegeben werden (dies ist beispielsweise bei Archiven sinnvoll):

yyyymmtthhmmssSSS

dateOfIssue:[yyyymmtthhmmssSSS - yyyymmtthhmmssSSS]