„Dodaj pasek wyszukiwania” oznacza w rzeczywistości: „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. Pierwszym z nich jest trafność: co sprawia, że jeden wynik jest lepszy od innego i kto o tym decyduje? Drugim aspektem są kwestie operacyjne: gdzie przechowywany jest indeks, w jaki sposób jest on synchronizowany ze źródłem danych oraz 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ł funkcje wyszukiwania, wie, że odpowiedź rzadko kiedy jest taka sama dwukrotnie. Wyszukiwanie pełnotekstowe w Postgresie sprawdza się dobrze, dopóki nie pojawi się potrzeba tolerancji na literówki. 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 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ć spójne? 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 ‘Wyś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

  • O jaki korpus chodzi: ile dokumentów zawiera i 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ą uwzględnione?
  • Filtrowanie i filtry, czy po prostu jedna lista rankingowa?
  • W jaki sposób indeks pozostaje zsynchronizowany i jaki jest limit przestarzałości 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 zadanie punktowe, a nie całość projektu. Należy oszacować zakres tego zadania punktowego i ponownie oszacować nakłady na realizację, gdy tylko wyznaczony zostanie odpowiedzialny za tę kwestię.

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

Proszę zapoznać się z oszacowaniem integracji płatności dla tego samego kształtu – niewielkiej powierzchni publicznej, za którą kryje się długi ogon operacyjny – oraz z innymi przykładami oszacowań. Można również zainicjować bezpłatną sesję „planning poker”, gdy pytanie dotyczące istotności ma wyznaczonego właściciela.