„Dodaj pasek wyszukiwania” okazuje się oznaczać „wybierz wyszukiwarkę, stwórz model trafności i przejmij na zawsze kontrolę nad indeksem”.

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? Sformułowanie „dodaj wyszukiwanie” sugeruje obecność elementu interfejsu użytkownika. Praca polega na ustalaniu rankingu i tworzeniu indeksu.

Zespół, który ma już doświadczenie we wdrażaniu funkcji wyszukiwania, wie, że odpowiedź rzadko kiedy jest taka sama dwukrotnie. Wyszukiwanie pełnotekstowe w Postgresie sprawdza się, 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 koszt zależy od tego, na jakie kompromisy decyduje 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 potrafi to zrobić za pomocą tsvector.”

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

Interfejs użytkownika: „Czy wprowadzamy funkcję autouzupełniania, czy po prostu wysyłamy dane, a dopiero potem wyświetlamy wyniki?”

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 głosowaniem

  • O jaki korpus chodzi: ile dokumentów zawiera i jak często ulegają one zmianom?
  • Postgres FTS, dedykowana usługa wyszukiwania czy usługa hostowana (Algolia, Typesense)?
  • Tolerancja błędów ortograficznych, stemming, synonimy, formy liczby mnogiej: które z nich są objęte zakresem?
  • Filtrowanie i filtry, czy po prostu jedna lista rankingowa?
  • W jaki sposób indeks pozostaje zsynchronizowany i jaki jest limit przestarzałości?
  • 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 zadanie „relevance” będzie miało wyznaczonego odpowiedzialnego.

Pole wyszukiwania to jeden dzień. Istotność i indeks to cechy, więc proszę je oszacować.

Proszę zapoznać się z artykułem szacowanie integracji płatności, w którym opisano podobną strukturę – niewielki obszar widoczny publicznie, za którym kryje się rozbudowana część operacyjna – oraz z innymi przykładami szacowania. Można również rozpocząć bezpłatną sesję planowania pokerowego, gdy kwestia istotności ma wyznaczonego odpowiedzialnego.