Google Search Appliance (GSA)

Vor einigen Monaten haben wir von unserem Kunden die Anforderung erhalten, eine Suche zu implementieren. Es sollte dabei nach Inhalten einer öffentlich zugänglichen Webseite gesucht werden können. In einer Exploration haben wir uns dabei verschiedene Technologien angeschaut, darunter Apache Solr. Entschieden haben wir uns unter anderem aus folgenden Gründen für die GSA:

  • Alle Anforderungen können damit erfüllt werden
    • Suche nach redaktionellen Inhalten der Webseite
    • Suche nach Inhalten von Partner-Webseiten
    • Suchen nach bestimmten Typen von Seiten
    • Suchergebnisse eingrenzen anhand bestimmter Kriterien
    • Priorisierung von Seiten
  • Die Suche an sich ist schnell
  • Der Kunde verfügt bereits über mehrere GSA’s
  • Einfache und schnelle Integration

Was ist eine GSA?


Eine Google Search Appliance ist eine kombinierte Hardware/Software Lösung aus dem Hause Google. Die Hardware muss selbst gehostet werden. Um die GSA zu installieren, muss diese lediglich mit Strom versorgt und im Netzwerk angeschlossen werden. Da in unserem Falle bereits alles vorhanden war, kann ich hierzu leider nicht mehr berichten.

Nach der Installation findet die Konfiguration über ein Webinterface statt. Im Hintergrund speichert die GSA die Einstellungen in einer XML Datei. Mehrere GSA’s sind untereinander vernetzbar wie auch spiegelbar. Spiegeln ist nützlich wenn man zum Beispiel aus Gründen der Redundanz hinter einem Load Balancer mehrere GSA’s betreibt. Man muss die Einstellungen dann nur noch auf einer GSA anpassen. Software Updates erscheinen alle 6 Monate und sind kostenlos. Ansonsten ist keine Wartung notwendig.

Die Preise für die GSA variieren je nachdem wie viele URL’s bzw. Dokumente indiziert werden sollen. Offizielle Preise nennt Google auf den Seiten der GSA nicht. Hierzu muss eine Kontaktanfrage gestellt werden.

Front Ends


Innerhalb einer GSA können mehrere so genannte Front Ends verwaltet werden. Front Ends dienen dazu, das Look & Feel der Suche sowie die Suchergebnisse selbst anzupassen. Dies ist interessant, wenn man zum Beispiel verschiedene Zielgruppen hat oder verschiedene Suchen anbieten möchte. Jedes Front End lässt sich unter anderem in folgenden Punkten konfigurieren:

Ausgabeformat Hierüber lässt sich das Aussehen der Such- und Suchergebnisseite anpassen. Zum Beispiel Logo, Schriften, Farben, Templates usw.
Filter Einschränken der Suchergebnisse anhand von Sprache, Meta Tags, Domains oder Dateitypen.
URL’s entfernen Eine Liste an URL’s und URL-Muster die ignoriert werden sollen.
KeyMatch Erzwingen von einem oder mehreren Treffern in Abhängigkeit vom Suchbegriff. Diese erscheinen in der Regel ganz oben, noch vor dem Suchergebnis.
Passende Suchanfragen Definieren alternativer Suchbegriffe in Abhängigkeit vom eingegebenen Suchbegriff.

Sammlungen


Über Sammlungen lässt sich der komplette Suchindex in kleinere Mengen unterteilen. Zum Beispiel falls eine GSA für mehrere Webseiten verwendet wird und die Ergebnisse getrennt werden sollen. Wir haben für jede unserer Whitelabel-Lösung wie auch für unsere QA/Staging Umgebungen eine eigene Sammlung. Alternativ kann dem User eine Auswahl angeboten werden, welche Sammlung durchsucht werden soll. Es besteht auch die Möglichkeit, mehrere Sammlungen zu einer größeren zu kombinieren.

Jede Sammlung ist mit jedem Front End kombinierbar. Eine Sammlung bestimmt also welche Dokumente gefunden werden sollen, während ein Front End das Look & Feel fest legt. Zusätzlich können im Front End noch weitere URL’s und Ergebnisse ausgeschlossen werden.

Indizieren


Damit eine Suche ausgeführt werden kann, muss der Index zuerst gefüllt werden. Inhalte können generell über drei Wege indiziert werden:

Crawling Crawling ist ein Pull Prozess. Dabei durchsucht und analysiert die GSA Inhalte von zuvor definierten URL’s.

Es ist möglich Inhalte zu indizieren, die nur über eine Authentifizierung zugänglich sind. Bei der Suche wird dies entsprechend berücksichtigt. Das heißt, Nutzer bekommen nur die Ergebnisse angezeigt, zu denen diese auch berechtigt sind. Beispielsweise bekommen Gäste durch Login geschützte Ergebnisse nicht angezeigt. Google unterstützt hier unter anderem die Authentifizierung über Basic Auth, LDAP, Formulare usw. Nicht verlinkter Content wie auch Dokumente sind ebenfalls indizierbar.
Traversing Traversing steht für die Übernahme von Dokumenten aus einem Content Management System. Zum Beispiel einem CRM im Intranet, Datenbanken, LDAP oder Lotus Notes. Hierfür gibt es sehr viele Konnektoren. Ansonsten ist Traversing analog zum Crawling.
Feeding Feeding ist ein Push Prozess bei dem Inhalte an die GSA gesendet werden, um diese in den Index aufzunehmen.

Darstellung der Sucheergebnisse


Es gibt diverse Möglichkeiten die Ausgabe der Suchergebnisse anzupassen. Standardmäßig ähnelt das Look & Feel der Google Suche. Das Rendering erfolgt dabei direkt auf der GSA über XSLT.

Einfache Layout Einstellungen können über ein Formular vorgenommen werden. Zum Beispiel das Logo ändern oder bestimmen, welche Inhalte auf der Ergebnisseite ausgegeben werden sollen.

Beliebige Anpassungen der Ausgabe können über Änderungen im XSLT-Template erreicht werden. Sind keine XSLT-Kenntnisse vorhanden, besteht die Möglichkeit im XSLT-Template lediglich die Werte von Variablen zu ändern. Dadurch erhält man bereits viel mehr Einstellungsmöglichkeiten als über das Formular.

Alternativ kann man anstatt des gerenderten XSLT-Templates das Suchergebnis als XML anfordern, um es auf dem eigenen Server zu verarbeiten.

Ergebnisse beeinflussen


Mit der Quellengewichtung, auch bekannt unter "Result biasing", ist die Reihenfolge der Suchergebnisse beeinflussbar. Also die Relevanz der Dokumente. In jedem Front End können dabei unterschiedliche Quellengewichtungen definiert werden, um der jeweiligen Zielgruppe gerecht zu werden. Es gibt drei Möglichkeiten, um die Suchergebnisse durch die Vergabe von Relevanz Punkten zu beeinflussen:

Source biasing Ermöglicht das bestimmen der Relevanz für ganze Sammlungen oder anhand von URL-Muster. Zum Beispiel URL’s die "/karriere" enthalten, haben eine Relevanz von 9.
Date biasing Damit lassen sich neuere Dokumente höher oder niedriger gewichten. Zudem ist definierbar, ab wann Dokumente als Alt gelten.
Metadata biasing Definiert die Art und Weise, inwiefern Meta-Daten die Relevanz einer Seite beeinflussen. Beispiel: Es wird für jede Seite ein "Typ" defniert. Ist der Typ "News", so hat dies eine hohe Relevanz. Eine Seite vom Typ "Content" könnte man niedriger bewerten. Der Metatag innerhalb der Seite könnte wie folgt aussehen:

<meta name="search_type" content="News" /> 

Welche Metadaten berücksichtigt werden sollen und wie diese heißen ist frei definierbar.

Das Konfigurieren solcher Regeln ist rein optional da bereits einige Standard-Regeln vordefiniert sind.

Dynamische Navigation



Auch bekannt unter Optionen. Man kann sich diese wie eine Navigation vorstellen, mit der ein User die Suchergebnisse weiter eingrenzen kann. Bei der Google Suche (befindet sich dort links vom Suchergebnis) kann man damit zum Beispiel Ergebnisse ausschließen, die ein bestimmtes Ater überschreiten. Optionen sind frei konfigurierbar.

Zum Beispiel über Meta-Daten kann man der GSA die Daten für die einzelnen Optionen einfach zur Verfügung stellen. Angenommen die Sucherergebnisse sollen anhand vom Autor eingegrenzt werden können. Dazu muss in der GSA eine Option Autor hinzugefügt und folgender Meta-Tag in der Seite eingefügt werden:

<meta name="autor" content="<?=$autor?>" />

Konkrete Umsetzung in unserem Projekt


In unserem Falle haben wir uns für das Indizieren durch Crawling entschieden. Dazu mussten wir nur die URL der Webseite angeben. Weiterhin haben wir über URL-Muster definiert, welche Seiten die GSA nicht in den Index aufnehmen soll. Zum Beispiel URL’s die ‘/profile‘ enthalten. Für unsere QA Umgebung, welche lediglich über eine Authentifizierung erreichbar ist, haben wir die GSA so konfiguriert, dass diese sich zuvor authentifiziert.

Das Formatieren der Suchergebnisse erfolgt über ein angepasstes XSLT-Template direkt auf der GSA. Da nicht all zu viele Anpassungen nötig waren und wir bereits über XSLT-Kenntnisse verfügten, ging die Anpassung sehr schnell.

Wir haben innerhalb einer Seite einige Inhalte, die nicht indiziert werden sollen. Dabei handelt es sich vor allem um User Generated Content. Wenn unsere Seiten von der GSA gecrawled werden, erkennt unsere Plattform diese Requests anhand des User-Agents und gibt die entsprechenden Teile der Seite für die GSA nicht aus. So werden diese auch nicht indiziert. Gleiches kann auch über Googleoff/Googleon Flags erreicht werden.

Die Einbindung der Suchanfrage erfolgt über einen GET-Request. Vereinfacht kann man sich die Einbindung wie folgt vorstellen:

<?=file_get_contents('http://domain.zur.gsa/search?' . http_build_query($_GET))?>

Die URL-Referenz enthält eine Liste aller verfügbaren URL-Parameter. Über URL-Parameter wird beispielsweise das zu verwendende Front End, die Sammlung, der Suchbegriff und die gewünschte Seite definiert.

Unsere Aufgabe war es, in das Suchergebnis auch Partner-Webseiten mit aufzunehmen. Da diese Webseiten bereits in der GSA indiziert waren, konnten wir die Daten sehr einfach in unsere Suche integrieren und mussten lediglich die jeweilige Webseite in Sachen Relevanz bewerten. Dazu haben wir über "Source biasing" die Sammlungen der Partner-Webseiten in unserem Front End ausgewählt und eine Relevanz vergeben.

Nach der Exploration hatten wir bereits so viel Vorwissen, dass wir die komplette Suche in einer ersten Version innerhalb von einem Manntag komplett integrieren konnten. Weitere Funktionalitäten wie Optionen, Quellengewichtung anhand von Meta-Daten und vieles mehr haben wir nach und nach hinzugefügt.

Fazit


Die GSA ist ein ausgereiftes Produkt welches einfach installiert werden kann, stabil läuft und wartungsarm ist. Einsehbar sind umfangreiche Berichte, Protokolle und Status zum aktuellen Stand der GSA. Für eine genaue Auswertung der Suchbegriffe kann ein Google Analytics Account verknüpft werden. Es gibt sehr viele Funktionalitäten, welche einfach aus der Tüte fallen. Vorgestellt habe ich hiervon nur einen kleinen Teil. Beim Konfigurieren helfen die ausführliche Dokumentation, die Hilfe sowie Lernmaterialien. Mit der Community habe ich bisher noch keine Erfahrungen gemacht.

Wir hätten uns die Integration der Suche nicht einfacher vorstellen können. Empfehlen kann ich am Anfang mit einem einfachen Funktionsumfang zu starten. Anschließend nach und nach weitere Funktionalitäten hinzuzufügen.

Dieser Eintrag wurde veröffentlicht in Development, PHP von Thomas Steur. Setze ein Lesezeichen zum Permalink.

Über Thomas Steur

Thomas Steur ist Senior Developer bei der Mayflower GmbH und arbeitet hier hauptsächlich an großen PHP- und JavaScript-Projekten. In seiner Freizeit entwickelt er seit 3 Jahren die offizielle Piwik Mobile App für iOS und Android, die auf dem Titanium Mobile SDK basiert. Er twittert unter @tsteur und ist außerdem auf Google+ sowie GitHub zu finden.

Für neue Blogupdates anmelden:


Ein Gedanke zu „Google Search Appliance (GSA)

  1. In Xing gibt es inzwischen eine deutschsprachige GSA-Usergroup, die leider nur wenig genutzt wird. Ich würde mich freuen, wenn Sie sich dort auch anmelden würden.

    Viele Grüße
    Renate Ebel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.