Webseitensuche mit Elasticsearch

Viele Auftritte des World Wide Web, beinhalten eine Volltextsuche um die Inhalte einer Website zu durchstöbern. Umgesetzt wird eine solche Suche mit Suchmaschinen wie Elasticsearch. Dabei handelt es sich um Open-Source-Software, welche das Speichern, Durchsuchen und Analysieren großer Datenmengen ermöglicht. Die Interaktion erfolgt über REST. Der Server (Knoten) bekommt dabei Anfragen über Http-Methoden wie GET und POST. Für große Datenmengen kann die Suchmaschine auch in einem Cluster aufgesetzt werden, sodass die Last der Speicherung und Verarbeitung verteilt wird.

Im Folgenden ist ein Beispiel für einen indizierten Datensatz in einer Webseitensuche dargestellt. Einen solchen Datensatz bezeichnet man auch als Dokument.

Jedes Dokument wird einem Index und einem Typ zugeordnet. Der Index ist eine Sammlung von Dokumenten mit ähnlichen Eigenschaften, also zum Beispiel in FirstSpirit generierte Seiten <fs_generated>. Innerhalb des Index unterscheidet man nochmal zwischen verschiedenen Typen. Im Beispiel erfolgt dabei eine Kategorisierung zwischen Unternehmen, welche FirstSpirit nutzen. Dabei steht <fs_sfl> für die Softwareforen Leipzig GmbH.

Neben dem Index und dem Typen besitzt jedes Dokument Eigenschaften (Properties). Im oben dargestellten JSON-Objekt gibt es die Eigenschaften content, title, lastModified und url. Bei der Indizierung über POST werden diese Eigenschaften an die Suchmaschine übergeben. Dabei generiert die Suchmaschine automatisch eine eindeutige ID. In der folgenden Abbildung wird über das Browser-Plugin „RESTED“ ein POST an die Suchmaschine gesendet, welcher die Eigenschaften im Body mitsendet. Dabei hängen Index und Typ an der URL zur Suchmaschine.

Das Durchsuchen der Datensätze wird über die HTTP-Methode GET durchgeführt. Im Folgenden ist eine URL dargestellt, welche alle Dokumente des Index abfragt. Anstelle des * können Texte an die Suche gegeben werden um alle Seiten auszugeben, welche den gesamte Suchstring bzw. Teile des Textes enthalten.

Anstelle der suche nach * oder textueller Inhalte kann ein Dokument auch direkt über seine ID abgefragt werden, also:

Als Suchergebnis erhält man JSON-Objekte (Siehe erstes Code-Listing). Die Informationen aus den JSON-Objekten können verwendet werden, um zum Beispiel eine Ausgabe im Front-End zu erstellen. Bei der Webseitensuche kann eine Auflistung der Titel und Verlinkungen zu den indizierten Webseiten erfolgen. Das Unternehmen, welches den Webauftritt anbietet, möchte wahrscheinlich bestimmte Seiten höher priorisiert sehen als andere. So sollte das Impressum der Website bei der Suche über den Seiten stehen, welches eine Referenz auf das Impressum besitzen. Elasticsearch bietet hierfür Algorithmen, welche bereits eine Priorisierung durchführen.

Im nächsten Blogbeitrag möchte ich auf diese Algorithmen eingehen und wie man diese beeinflussen kann, um die Reihenfolge der Suchergebnisse gezielt zu steuern:

  • Scoring in Elasticsearch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.