Po całym dniu w końcu siadasz do nauki… klikasz w IDE i…. 🤯

…nic

Jeszcze raz, 5ty, 10ty… nic… ?

Po chwili poszukiwań okazało się, że aktualizacja systemu odinstalowała VS Code, a wraz z nim wszelkie zainstalowane dodatki. 🤦‍♂️

Nie tego oczekiwałem mając 1,5h na wieczorną naukę… 😂

Ale cóż… całe szczęście wystarczyło pobrać szybko i zainstalować program po czym wszystko ruszyło jak zawsze.

No dobra, ale przecież ja nie o tym…

Aplikacja client-server rośnie. Na tym etapie chcemy przeszukiwać wysłane wiadomości, a zwykłe LIKE '%tekst%’ jest nieefektywne.

Przyszedł czas na Full Text Search.  🔍

🎯 Wyzwanie:

Zadaniem była implementacja FTS (Full Text Search) do przeszukiwania wiadomości użytkowników. A dokładnie:

📌 Zrozumienie działania FTS na podstawie dokumentacji
📌 Implementacja FTS w moim Postgres Handler
📌 Szybka alternatywa w SQLite Handler (nie chcę, żeby jedna baza działała, a druga nie)
📌 Dostosowanie całego kodu, żeby wszystko grało bezproblemowo

🛣️ Droga:

Zamiast przedzierać się przez kilka obszernych artykułów (często wyolbrzymionych na to, co potrzebuję), spróbowałem czegoś innego.

Wrzuciłem kilka źródeł do NotebookLM i poprosiłem o skondensowanie wiedzy w krótki poradnik dla osoby, która z FTS jeszcze nie korzystała.

I… WOW.

Zamiast ponad godziny czytania i szukania miałem jeden zwięzły „poradnik” do przeczytania w 15 minut. Gdy czegoś nie rozumiałem – pytanie, odpowiedź prosto w sedno.

Ale implementacja to nie tylko teoria… 😅

Główny problem? FTS w PostgreSQL i SQLite to dwa różne światy. PostgreSQL ma wbudowane tsvector i tsquery, SQLite wymaga osobnego modułu FTS5. Tutaj poszedłem na łatwizne i zastosowałem w SQLite zwykły LIKE, bo focus był na zrozumieniu FTS w produkcyjnej bazie.

Największym wyzwaniem jednak okazał się powrót do kodu po 2-3 miesiącach przerwy, bo w międzyczasie pisałem inny projekt. 😅 Ale tym razem i tak naprawdę gładko poszło!

✅ Wynik:

Po dwóch wieczornych sesjach kodowania:

🎯 FTS działa w PostgreSQL
🎯 SQLite również przeszukuje wiadomości
🎯 System gotowy na przeszukiwanie setek wiadomości w mikrosekundach
🎯 Kod modułowy – każda baza ma swojego handlera

Co najważniejsze – zrozumiałem w praktyce, jak działa full-text search. To fundament pod to, co przyjdzie dalej: ElasticSearch w tym projekcie, a potem… zobaczymy. 💪

Kolejne wyzwanie już czeka! 😉

Link do repo: https://gitlab.com/DawDro/FirstClientServerApp

A Wy macie sprawdzone narzędzia do „trawienia” dokumentacji? Podzielcie się! 👇

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola oznaczone są *

*
*