“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 van operationele aard: waar wordt de index opgeslagen, hoe blijft deze gesynchroniseerd met de bron van waarheid, en wat gebeurt er wanneer de index achterop raakt? „Zoekfunctie toevoegen” impliceert een besturingselement 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 volstaan prima, totdat iemand tolerantie voor typefouten wenst. 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 meestal 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? En meervoudsvormen?”

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

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

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

Vragen die u zich het beste kunt stellen voordat u gaat stemmen

  • Om welk corpus gaat het — hoeveel documenten zijn er en hoe vaak worden deze bijgewerkt?
  • Postgres FTS, een speciale zoekservice 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 zijn de kenmerken — maak daar een schatting van.

Zie het inschatten van een betalingsintegratie voor hetzelfde patroon — een klein zichtbaar deel dat een uitgebreide operationele achtergrond verbergt — en de andere praktijkvoorbeelden van schattingen. Of start een gratis planning poker-sessie wanneer er een verantwoordelijke is voor de relevantievraag.