„Dodaj pasek wyszukiwania” oznacza w rzeczywistości: „wybierz wyszukiwarkę, stwórz model trafności i przejmij indeks na zawsze”.

Wyszukiwanie obejmuje dwa aspekty, o których w zgłoszeniu nie ma ani słowa. Pierwszy to trafność: co sprawia, że jeden wynik jest lepszy od innego i kto o tym decyduje? Drugi ma charakter operacyjny: gdzie znajduje się indeks, w jaki sposób jest on synchronizowany ze źródłem danych i co się dzieje, gdy pojawia się opóźnienie? „Dodaj wyszukiwanie” sugeruje obecność elementu sterującego w interfejsie użytkownika. Praca ta dotyczy ustalania rankingu oraz indeksu.

Zespół, który już wcześniej wdrażał funkcję wyszukiwania, wie, że odpowiedź rzadko kiedy jest taka sama za każdym razem. Wyszukiwanie pełnotekstowe w Postgresie sprawdza się dobrze, dopóki nie pojawi się potrzeba uwzględnienia literówek. Elasticsearch działa szybko, dopóki nie trzeba za niego płacić w weekendy. Algolia jest łatwa w użyciu, dopóki nie potrzebuje się niestandardowego rankingu. Szacunkowy czas realizacji zależy od tego, na jakie kompromisy zdecyduje się zespół, a decyzja ta zazwyczaj nie została jeszcze podjęta w momencie, gdy zgłoszenie trafia do etapu dopracowywania.

O czym się mówi w tym pomieszczeniu

Backend: „Postgres może to zrobić za pomocątsvector .”

PM: „Czy literówki powinny być zgodne? A co z liczbą mnogą?”

Interfejs użytkownika: „Czy wprowadzamy funkcję autouzupełniania, czy też wyniki będą wyświetlane dopiero po naciśnięciu przycisku ‘Prześlij’?”

SRE: „W jaki sposób zapewniamy synchronizację indeksu? Za pomocą wyzwalaczy? Zadania? Strumienia?”

Wstęp: „Kto decyduje o trafności wyników, gdy ktoś narzeka, że właściwa odpowiedź znajduje się na drugiej stronie?”

Pytania, które warto zadać przed oddaniem głosu

  • Jaki korpus — ile dokumentów, jak często ulegają one zmianom?
  • Postgres FTS, dedykowana usługa wyszukiwania czy rozwiązanie hostowane (Algolia, Typesense)?
  • Tolerancja błędów ortograficznych, stemming, synonimy, formy liczby mnogiej — które z tych elementów są objęte zakresem?
  • Filtrowanie i filtry, czy po prostu jedna lista rankingowa?
  • W jaki sposób indeks pozostaje zsynchronizowany — i na czym polega limit przedawnienia danych?
  • Kto zapewnia trafność w perspektywie długoterminowej i w jaki sposób ją dostosowuje?

Jeśli wybór infrastruktury pozostaje nadal otwarty, decyzja ta stanowi spike, a nie zadanie — należy oszacować zakres spike’a i ponownie oszacować nakład pracy związany z wdrożeniem, gdy tylko wyznaczone zostanie osoba odpowiedzialna za dany obszar.

Pole wyszukiwania to dzień. Trafność i indeks to cechy — proszę je oszacować.

Zobacz szacowanie integracji płatności — ten sam schemat, w którym niewielka część widoczna publicznie kryje za sobą rozbudowaną strukturę operacyjną — oraz inne przykłady praktycznych szacowań. Można też rozpocząć bezpłatną sesję planowania pokerowego, gdy kwestia istotności ma wyznaczonego odpowiedzialnego.