“Een zoekbalk toevoegen” blijkt neerkomend op “een zoekmachine kiezen, een relevantiemodel opstellen en voor altijd eigenaar zijn van de index.”

Zoeken kent twee aspecten die in het ticket nooit worden genoemd. Het eerste aspect betreft de relevantie: wat maakt het ene zoekresultaat beter dan het andere, en wie beslist daarover? Het tweede aspect is operationeel: waar wordt de index opgeslagen, hoe blijft deze synchroon lopen met de bron van waarheid, en wat gebeurt er wanneer de index achterop raakt? „Zoekfunctie toevoegen” impliceert een bedieningselement in de gebruikersinterface. Het werk bestaat uit de rangschikking en de index.

Een team dat al eerder een zoekfunctie heeft geïmplementeerd, weet dat het antwoord zelden twee keer hetzelfde is. Full-text-zoekfuncties in Postgres werken prima, totdat iemand tolerantie voor typefouten nodig heeft. Elasticsearch is snel, totdat u er in het weekend voor moet betalen. Algolia is eenvoudig, totdat u een aangepaste rangschikking nodig hebt. De schatting hangt af van de afweging die het team maakt, en die beslissing is doorgaans nog niet genomen wanneer het ticket in de verfijningsfase terechtkomt.

Wat er in de kamer wordt gezegd

Backend: “Postgres kan dit doen met tsvector.”

PM: „Moeten typefouten nog steeds overeenkomen? Meervoudsvormen?”

Frontend: “Gaan we voor autocomplete, of gewoon ‘verzenden en dan de resultaten weergeven’?”

SRE: “Hoe zorgen wij ervoor dat de index gesynchroniseerd blijft? Triggers? Een taak? Een stream?”

Inleiding: “Wie bepaalt wat relevant is wanneer iemand klaagt dat het juiste antwoord op pagina twee staat?”

Vragen die het waard zijn om te stellen voordat u gaat stemmen

  • Om welk corpus gaat het: hoeveel documenten bevat het en hoe vaak worden deze bijgewerkt?
  • Postgres FTS, een speciale zoekdienst of een gehoste oplossing (Algolia, Typesense)?
  • Tolerantie voor typefouten, stemming, synoniemen, meervoudsvormen: welke vallen hieronder?
  • Facettering en filters, of slechts één gerangschikte lijst?
  • Hoe blijft de index gesynchroniseerd en wat is het verouderingsbudget?
  • Wie bepaalt op de lange termijn wat relevant is, en hoe stemmen zij dit af?

Indien de keuze voor de infrastructuur nog openstaat, is die beslissing een spike, geen story. Bepaal de omvang van de spike en maak een nieuwe schatting van de bouwfase zodra er een verantwoordelijke voor de relevantie is aangewezen.

Het zoekveld is een dag. Relevantie en de index vormen de kern, dus maak daar een inschatting van.

Zie het inschatten van een betalingsintegratie voor hetzelfde patroon, waarbij een klein zichtbaar deel een langdurig operationeel proces verbergt, en de andere praktijkvoorbeelden van schattingen. Of start een gratis planning poker-sessie wanneer er een verantwoordelijke is voor de relevantievraag.