Am Anfang steht kein Code, sondern eine Liste: Was ist eigentlich ein Treffer?
Eine Seite, ein Produkt, ein Datenblatt, ein Abschnitt? Diese Entscheidung legt fest, wie ein Record
aussieht — und damit alles Weitere. Wir schneiden die Records so, dass ein Treffer für den Besucher
eine sinnvolle Antwort ist, nicht der Anfang einer zweiten Suche.
Dann kommt das Mapping: Welches Feld aus dem CMS wird welches Attribut im
Record, was ist durchsuchbar, was wird Facette, was ist nur Anzeige. Hier fällt auch die Entscheidung,
was den Index gar nicht erst erreicht — interne Notizen, Preise mit Sonderkonditionen, geschützte
Bereiche. In den Index geht, was für die Suche gebraucht wird. Alles andere
bleibt, wo es ist.
Indexiert wird serverseitig, in zwei Stufen. Zur Einrichtung läuft eine
Voll-Indexierung über den kompletten Bestand, gebündelt statt Record für Record — die Dokumentation
rät ausdrücklich dazu, in Stapeln zu senden. Danach laufen nur noch Änderungen: angelegt, geändert,
gelöscht. Weil Algolia die Indexierung als Aufgabe im Hintergrund verarbeitet, ist ein Record nicht in
derselben Millisekunde suchbar, in der er gesendet wurde — für eine Redaktion völlig unkritisch, für
einen automatisierten Test sehr wohl.
Der Rückweg ist der Praxisstolperstein. Ein Inhalt, der im CMS gelöscht oder
auf Entwurf zurückgesetzt wird, verschwindet nicht von selbst aus dem Index — er muss aktiv entfernt
werden. Sonst führt ein Treffer ins Leere oder zeigt eine Überschrift, die noch niemand sehen sollte.
Wir behandeln „löschen“ und „depublizieren“ deshalb als eigene Ereignisse mit eigenem Code, nicht als
Nebeneffekt des Speicherns. Dasselbe gilt für geschützte Bereiche: Was hinter einem
Login liegt, wird entweder
gar nicht indexiert oder nur mit einem Schlüssel gesucht, der auf diesen Ausschnitt begrenzt ist.
Gesucht wird im Frontend — mit dem reinen Such-Schlüssel und einer Oberfläche,
die wir selbst bauen: Eingabefeld, Treffer während des Tippens, Facetten als Filter daneben, ein
Zustand für null Treffer. Und wie bei jeder Anbindung planen wir den Fehlerfall mit: Antwortet der
Dienst nicht, bleibt die Seite bedienbar und fällt auf die Navigation oder eine einfache Suche im
eigenen Bestand zurück. Die buchbare Leistung dahinter ist die Komponente
Suche, die Anbindung selbst gehört zur
Schnittstellenentwicklung.