Schätzung einer Suchfunktion
Wie man eine Suchfunktion einschätzt: Relevanz, Ranking, Facettierung und die Frage, wem der Index gehört. Die Fragen, die aus dem einfachen „Eine Suchleiste hinzufügen“ eine fundierte Einschätzung machen.
„Eine Suchleiste hinzufügen“ bedeutet letztendlich: „Eine Suchmaschine auswählen, ein Relevanzmodell erstellen und den Index für immer kontrollieren.“
Die Suche umfasst zwei Aspekte, die im Ticket nicht erwähnt werden. Der erste betrifft die Relevanz: Was macht ein Ergebnis besser als ein anderes, und wer entscheidet darüber? Der zweite ist operativer Natur: Wo befindet sich der Index, wie wird er mit der „Quelle der Wahrheit“ synchronisiert, und was geschieht, wenn er in Verzug gerät? „Suche hinzufügen“ impliziert ein UI-Steuerelement. Die eigentliche Arbeit besteht in der Rangfolge und dem Index.
Ein Team, das bereits Suchfunktionen implementiert hat, weiß, dass die Antwort selten zweimal dieselbe ist. Die Volltextsuche von Postgres ist in Ordnung, bis jemand eine Toleranz gegenüber Tippfehlern wünscht. Elasticsearch ist schnell, bis Sie am Wochenende dafür bezahlen müssen. Algolia ist einfach, bis man ein benutzerdefiniertes Ranking benötigt. Die Schätzung hängt davon ab, welchen Kompromiss das Team eingeht, und diese Entscheidung ist in der Regel noch nicht gefallen, wenn das Ticket in die Verfeinerungsphase gelangt.
Was in dem Raum gesagt wird
Backend: „Postgres kann dies mit
tsvector…“PM: „Sollten Tippfehler weiterhin übereinstimmen? Und Pluralformen?“
Frontend: „Sollen wir eine Autovervollständigung implementieren oder erst das Formular absenden und dann die Ergebnisse anzeigen?“
SRE: „Wie sorgen wir dafür, dass der Index synchron bleibt? Triggern? Job? Stream?“
Leitgedanke: „Wem gebührt die Relevanz, wenn sich jemand beschwert, dass die richtige Antwort auf Seite zwei steht?“
Fragen, die man sich vor der Stimmabgabe stellen sollte
- Um welchen Korpus handelt es sich – wie viele Dokumente umfasst er, und wie oft ändern sich diese?
- Postgres FTS, ein dedizierter Suchdienst oder ein gehosteter Dienst (Algolia, Typesense)?
- Toleranz gegenüber Tippfehlern, Stemming, Synonyme, Pluralformen – was fällt in den Anwendungsbereich?
- Facettierung und Filter oder lediglich eine einzige Rangliste?
- Wie wird die Synchronisation des Index gewährleistet – und wie hoch ist das Veralterungsbudget?
- Wer bestimmt langfristig die Relevanz, und wie wird diese angepasst?
Sollte die Wahl der Infrastruktur noch offen sein, handelt es sich bei dieser Entscheidung um einen Spike und nicht um eine Story – legen Sie den Umfang des Spikes fest und nehmen Sie eine neue Schätzung für die Entwicklung vor, sobald für den Bereich „Relevanz“ ein Verantwortlicher feststeht.
Das Suchfeld entspricht einem Tag. Relevanz und Index sind die Merkmale – schätzen Sie diese ein.
Unter Schätzung einer Zahlungsintegration finden Sie ein ähnliches Beispiel – eine kleine öffentliche Oberfläche, hinter der sich ein umfangreicher operativer Aufwand verbirgt – sowie weitere Beispiele für durchgeführte Schätzungen. Oder starten Sie eine kostenlose Planning-Poker-Sitzung, sobald für die Relevanzfrage ein Verantwortlicher feststeht.