GSB 7.0 Standardlösung

Suche

Der GSB bietet auf der Live Site eines Webauftritts umfangreiche Suchfunktionalitäten, um den Nutzern eine schnelle und einfache Suche nach Informationen bzw. den Zugriff auf diese zu ermöglichen.

Die Implementierung der Suche erfolgt durch den Einsatz der freien Search-Engine "Lucene" des Jakarta-Projekts bzw. "Solr". Die Implementierung der Suche lässt sich in zwei Bereiche unterteilen:

  • Indizierung der Inhalte
  • Abfragen der Inhalte nach bestimmten Suchkriterien.

Beide Bereiche werden in den folgenden Unterabschnitten skizziert.

Indizierung der Inhalte

Durch den Vorgang der Indizierung werden die im CMS vorhandenen Inhalte so aufbereitet, dass eine effiziente Filterung nach bestimmten Suchkriterien ermöglicht wird. Dabei wird eine Kopie des zu indizierenden Dokuments angelegt, das im Folgenden als „Retrieval-Dokument“ bezeichnet wird.

Zur Indizierung ist zunächst eine Liste der Dokumenttypen anzugeben, die indiziert bzw. der Suche als mögliche Ergebnisse zur Verfügung gestellt werden sollen. Es ist nicht sinnvoll, sämtliche Dokumenttypen zu indizieren, da hierdurch auch Dokumenttypen, die keinerlei redaktionellen Inhalt tragen (z. B. HTML-Formularelemente, Style-Elemente, Konfigurationsdokumente etc.) in den Suchindex aufgenommen würden. Diese sind als Ergebnis einer Suche nicht erwünscht.

Die globale Einstellung zur Indizierung von Dokumenten kann Mandanten bzw. Dokument-spezifisch überschrieben werden. Zu diesem Zweck kann bei den indizierten Dokumenttypen die Property „Suchindex-Ausschluss (shouldNotBeIndexed)“ aktiviert werden. Dokumente, bei denen diese Eigenschaft aktiviert ist, werden bei der Indexierung nicht berücksichtig.

Retrieval-Dokumente werden in der Regel nur dann aktualisiert, wenn das zugehörige Dokument aktualisiert wird. Deshalb sind bei der Indizierung folgende Besonderheiten zu berücksichtigen:

  • Die im Retrieval-Dokument enthaltenen Pfadnamen werden nicht aktualisiert, wenn innerhalb des Pfades ein Ordner-Name geändert wird.

Falls die Suche gegenüber Änderungen im Pfadnamen abgesichert werden soll, muss auf der Basis von CoreMedia-Ordner IDs gesucht werden.

  • Die im Retrieval-Dokument enthaltenen Titel der verlinkten Dokumente werden – mit einer Ausnahme – nicht aktualisiert, wenn das verlinkte Dokument geändert wird.

Falls die Suche gegenüber Änderungen im Titel der verlinkten Dokumente abgesichert werden soll, muss die Verlinkung auf der Basis von Dokumenten des Typ DocumentCategory erfolgen. Bei der Änderungen von Dokumenten dieses Typs werden auch die mit diesen Dokumenten verlinkten Dokumente aktualisiert.

Weiterführende Informationen

Weiterführende Informationen zum Thema finden sich in den folgenden Dokumenten:

  • GSB7/Suche beschreibt die Suchmöglichkeiten, die Integration von Lucene und Solr und die indizierten Dokumenttypen.
  • Das CoreMedia Search and Indexing Framework beschreibt die prinzipielle Anbindung der Suchmaschine Lucene und die verfügbaren Schnittstellen.
  • Für Entwickler befinden sich die Methodenbeschreibungen des GSB in der JAVADOC in folgendem Package
    • de.materna.cms.web.retrieval

Suche nach Inhalten

Eine Suchanfrage beginnt in einer JSP, in der beispielsweise ein Besucher des Webauftritts mithilfe eines Suchformulars eine entsprechende Anfrage formuliert hat. Die Angaben in der Suchanfrage werden entsprechend aufbereitet und anschließend an die Query Engine des Such- und Indexierungs-Framework übergeben:

  • Das Such- und Indizierungsframework konvertiert die Anfrage in das erforderliche Format der Suchmaschine.
  • Die Suchmaschine Lucene oder Solr führt die Anfrage aus und ermittelt aus dem zugrunde liegenden Suchindex die Ergebnismenge, die wiederum an das Such- und Indizierungsframework zurückgeliefert wird.
  • Das Such- und Indizierungsframework konvertiert die Ergebnismenge in ein „CoreMedia“-Suchergebnis, indem zu den gefundenen Lucene- oder Solr-Index Einträgen die zugehörigen CoreMedia-Dokumente ermittelt werden.
  • Im letzten Schritt wird dann das Suchergebnis mit den gefundenen CoreMedia-Dokumenten an die anfragende JSP zur weiteren Aufbereitung zurückgeliefert.

An dieser Stelle ist anzumerken, dass das Standard CoreMedia Such- und Indizierungsframework keine mandanten-spezifische Konfiguration vorsieht. Da das Content Modell innerhalb einer GSB Instanz in der Definition seiner Dokumenttypen für alle Mandanten identisch ist (nicht in der Konfiguration der Dokumenttypen) und auf dieser Basis weitgehend Übereinstimmung über die am Sinnvollsten zu durchsuchenden Dokumenttypen herrscht, entstehen deshalb aber keinerlei Probleme. Sofern mehrere Mandanten auf einer GSB-Installation gehostet werden und diese unterschiedliche Dokumenttypen indizieren wollen, ist es möglich, die Menge der indizierten Dokumenttypen zu erweitern, jedoch gleichzeitig die Ergebnismenge auf der Basis der Dokumente mandanten-spezifisch einzuschränken. Darüber hinaus kann mithilfe geeigneter Default-Belegung der Property „Suchindex-Ausschluss (shouldNotBeIndexed)“ die mandanten-spezifische (Nicht-) Indizierung der Dokumenttypen sowohl Dokumenttyp- als auch Dokument-spezifisch explizit gesteuert werden.

Weiterführende Informationen

Die Angabe der zu indizierenden Dokumenttypen erfolgt in der Web-Applikation bund in der Datei WEB-INF/properties/corem/retrieval.xml. Weitere Konfigurationsdetails sind in der aktuellen Dokumentation des „CoreMedia Search and Indexing Framework" enthalten.

Die Schnittstelle für den Zugriff auf die im Index angelegten Dokumente stellt die Java-Klasse

de.materna.cms.web.indexer

dar. Sie implementiert die Methode doSearch() die als Ergebnis ein Objekt des Typs

com.coremedia.applications.retrieval.DocumentSet

haben. Dieses kapselt die gefundenen Dokumente.

Darstellung der Suchergebnisse

Dynamische Seiten, automatisch generierte Übersichtsseiten oder Ergebnisseiten von Suchanfragen werden auf der Basis von Suchanfragen zur Laufzeit zusammengestellt.

Die Darstellung der zurück gelieferten Dokumente kann beispielsweise durch die Zuweisung eines Darstellungstemplates im Navigationsziel erfolgen. Damit werden dann die Ergebnisdokumente des Layout-Dokuments jeweils einzeln und nacheinander dargestellt. Häufig möchte man aber die Ergebnisdokumente in einer Tabelle oder Übersichtsseite in einem gemeinsamen Layout darstellen. Zu diesem Zweck stehen innerhalb des GSB beispielsweise die Dokumenttypen GenericTable oder GenericDynCatalog zur Verfügung.

Weiterführende Informationen

Ergänzende Hinweise zur Darstellung von Suchergebnissen befinden sich im Kapitel 7.