Kako kupci pretražuju moj katalog?
Interna pretraga je prvi korak kad kupac zna što želi, ali ne zna točno u kojoj kategoriji to stoji. WebShopHR koristi Meilisearch, a svaki dućan ima vlastiti izolirani indeks. Pretraživanje je brzo, izdvojeno od glavnog toka stranice i ažurira se automatski u pozadini. Trgovac ne mora brinuti o konfiguraciji tražilice. Ona se brine o sebi.
Vlastiti indeks po dućanu
Svaki tenant ima zaseban indeks naziva items-{tenantID}. Nikad se ne dijeli jedan globalni indeks s filterom po tenantu, što bi rizikovalo curenje među trgovcima. Taj pristup osigurava da kupac pretražuje isključivo artikle svog dućana. Kada jedan dućan reindeksira katalog, to ne dira indekse drugih dućana, što je važno i za sigurnost i za stabilnost.
Pretraga po nazivu i opisu
Pretraživanje ide po nazivu i opisu artikla. Na /trazi se prikazuje do 24 rezultata. Svaki rezultat sadrži naziv, cijenu u eurima, sliku i punu poveznicu na kategoriju i artikl, pa kupac odmah zna kamo ići. Ako slika još nije u indeksu, stranica elegantno prikazuje placeholder bez greške.
Prazan upit ne šalje zahtjev prema tražilici. Sustav samo prikaže praznu stranicu, štedeći nepotrebni poziv. Rezultati su prikazani u istom izgledu kao i kategorija, pa kupac odmah prepoznaje karticu artikla.
Traka u zaglavlju radi bez JavaScripta
Traka za pretragu u zaglavlju svake stranice je obična HTML forma s GET metodom. To znači da radi i bez JavaScripta, a upit se šalje na /trazi.
Također na samoj stranici rezultata nalazi se obična forma s tipkom, pa kupac može lako pretraživati i bez progresivnih poboljšanja. Ovo je važno za pristupačnost, starije preglednike i kupce koji imaju onemogućene skripte, ali i za tražilice koje žele sadržaj čitljiv bez JS-a.
Indeks se osvježava u pozadini
Reindeksiranje se nikad ne odvija u istom HTTP zahtjevu s kupcem. Kad trgovac spremi artikl, dovrši CSV uvoz ili završi Arges sinkronizaciju, sustav ubacuje pozadinski posao koji puno preuređuje indeks. Taj posao ne dijeli HTTP put s kupcem, pa ga veliki katalozi ne usporavaju. Ako posao ne uspije, River ga automatski ponavlja. Kupac tako ne vidi usporenje, a trgovac ne mora pritisnuti nijedan gumb „osvježi tražilicu".
U indeksu su samo aktivni artikli
Upit za punjenje indeksa vraća samo aktivne artikle koji nisu add-oni. Add-on artikli, kao npr. poklon pakiranje ili usluga montaže, namijenjeni su blagajni pa se ne pojavljuju u samostalnoj pretrazi. Kada trgovac deaktivira artikl, on se uklanja iz indeksa i više se ne pojavljuje u rezultatima. Stanje zalihe na to ne utječe: rasprodan artikl koji je i dalje aktivan ostaje u pretrazi, a kupac na njegovoj stranici vidi da ga trenutačno ne može naručiti.
Slično, stariji dokumenti koji nemaju punu putanju kategorije se ne prikazuju kupcu, već se čeka na puni reindeks. Time se izbjegava situacija da pretraga vodi na mrtvu adresu ili prikaže artikl koji se više ne prodaje.
Praćenje zdravlja tražilice
Dostupnost Meilisearcha ulazi u /health/ready provjeru spremnosti, uz bazu, Valkey i MinIO. Ako tražilica nije dostupna, taj endpoint javno prijavi stanje „degraded" (HTTP 503): to je signal za vanjski nadzor, ne prekidač koji sam gasi promet prema dućanu. Ostatak dućana i dalje normalno radi, prekine se samo pretraga, ne cijela trgovina. Detalji po servisu dostupni su samo uz interni token, a javni odgovor nosi samo agregatni status. Pretraga je time nadzirana kao dio infrastrukture, čak i kad njezin ispad ne ruši ništa drugo.
Rezultati pretrage su skriveni od tražilica
Stranica /trazi označena je kao noindex. To sprječava da vanjske tražilice indeksiraju beskonačne varijacije iste stranice, po jednu za svaki mogući upit, i kazne dućan zbog tankog sadržaja. S druge strane, pretraga je dobrodošla za kupce: brza je, relevantna i ne troši SEO snagu na beskorisne stranice.
Zaključno, interna pretraga je izolirana, automatska i otporna na pogreške: radi bez JavaScripta, vraća relevantne artikle, ažurira se iza zavjese i nadzire se istim mehanizmima kao i ostatak sustava. Trgovac je dobiva odmah, bez konfiguracije, a kupac je može koristiti na bilo kojem uređaju.
Česta pitanja.
Mogu li kupci jednog dućana slučajno vidjeti artikle drugog dućana u pretrazi?
Ne, svaki tenant ima potpuno zaseban Meilisearch indeks. Nikad se ne dijeli jedan globalni indeks s filterom po trgovcu.
Moram li ručno osvježavati tražilicu nakon što promijenim artikl?
Ne, indeks se osvježava automatski u pozadini nakon uređivanja artikla, CSV uvoza ili Arges sinkronizacije, bez ijednog gumba za osvježavanje.
Radi li traka za pretragu ako kupac ima isključen JavaScript?
Da, riječ je o običnoj HTML formi s GET metodom koja radi bez JavaScripta.
Prikazuju li se u pretrazi i artikli koje sam deaktivirao?
Ne, deaktivirani artikli se uklanjaju iz indeksa i više se ne pojavljuju u rezultatima.
Hoće li Google indeksirati stranicu s rezultatima pretrage?
Ne, /trazi je označena kao noindex baš da tražilice ne gomilaju bezbroj varijacija iste stranice za svaki mogući upit.