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 „Hinzufügen einer Suchleiste“ eine fundierte Einschätzung machen.
„Eine Suchleiste hinzufügen“ bedeutet letztendlich: „Eine Suchmaschine auswählen, ein Relevanzmodell erstellen und den Index für immer zu besitzen.“
Die Suche umfasst zwei Aspekte, die in dem Ticket mit keinem Wort 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: „Verwenden wir die Autovervollständigung oder erst das Absenden und dann die Anzeige der Ergebnisse?“
SRE: „Wie sorgen wir dafür, dass der Index synchron bleibt? Mithilfe von Triggern? Über einen Job? Oder über einen Stream?“
Leitartikel: „Wem gebührt die Relevanz, wenn sich jemand darüber 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 sie sich?
- Postgres FTS, ein dedizierter Suchdienst oder ein gehosteter Dienst (Algolia, Typesense)?
- Toleranz gegenüber Rechtschreibfehlern, 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 verfügt langfristig über Relevanz, und wie wird diese gesteuert?
Sollte die Wahl der Infrastruktur noch offen sein, stellt diese Entscheidung einen „Spike“ dar und ist kein eigenständiges Projekt. Legen Sie den Umfang des „Spikes“ fest und nehmen Sie eine neue Schätzung für die Entwicklung vor, sobald für die Relevanz ein Verantwortlicher feststeht.
Das Suchfeld entspricht einem Tag. Relevanz und Index sind die Merkmale; bitte schätzen Sie diese ein.
Lesen Sie mehr über die Schätzung einer Zahlungsintegration für dasselbe Modell, eine kleine öffentliche Oberfläche, hinter der sich ein lang anhaltender operativer Nachlauf verbirgt, sowie über die anderen Beispiele für Schätzungen. Oder starten Sie eine kostenlose Planning-Poker-Sitzung, sobald für die relevante Frage ein Verantwortlicher feststeht.