Već godinama, u onim kasnim noćnim satima kad normalan svijet spava, radim na Cro-Stemu. To je moja Rust biblioteka za morfološku normalizaciju hrvatskog jezika. Zvuči suhoparno? Možda. Ali to je jedan od onih projekata iz ljubavi (i čistog inženjerskog inata) o kojem sam već detaljno pisao.
Ponosan sam na njega. Brz je, nevjerojatno točan i napisan u Rustu. Ali, budimo realni, do sada je uglavnom služio samo meni i šačici entuzijasta na GitHubu. Bio je to “alat za alat”, a ne rješenje za stvarni svijet.
Uvijek sam tražio način da tu tehnologiju učinim korisnom za širi krug ljudi. Za nekoga tko nije programer, tko ne zna što je pointer ili memory safety, ali ima stvarni, opipljivi problem koji ga košta novca.
Tihi ubojica konverzija: “Nema rezultata”
Slično kao kad sam pisao o rušenju cijelog backenda zbog jednog jedinog slova “š”, shvatio sam da su ti “mali”, naizgled beznačajni jezični problemi zapravo tihi ubojice funkcionalnosti. U svijetu e-commercea, oni su tihi ubojice profita.
A gdje je to očitije nego na WordPress tražilicama?
Svi znamo taj osjećaj frustracije. Dođeš na webshop, “spreman” potrošiti novac. Upišeš “cipele”. Dobiješ 50 sjajnih rezultata. Super.
Onda, možda slučajno, možda iz navike, upišeš “cipela” ili “cipelama”.
Ekran zatreperi i ispiše hladnu presudu: “Nema rezultata.”
Kako je to moguće? Imate skladište puno cipela, ali softver je preglup da ih nađe jer ste upisali jedno slovo “krivo”.
Zato sam odlučio uzeti Cro-Stem, tu moju malu Rust biblioteku, i upakirati je u nešto što zapravo rješava taj problem “na terenu”. Baš kao što sam u svojoj misiji oporavka digitalizirao i preveo 178 epizoda Star Treka prvenstveno da bih naučio Python i riješio svoj problem dosade, tako je i ovo krenulo kao inženjerski izazov.
Ali ovaj put, izazov je postao proizvod: Cortex Search.

Zašto WordPress pretraga ne radi (za nas)
Standardna pretraga baza podataka je, u nedostatku bolje riječi, “glupa”. Ona traži točan binarni match. WHERE title LIKE '%upit%'. Za engleski jezik, gdje su sufiksi minimalni i deklinacije praktički ne postoje, to funkcionira sasvim solidno.
Ali hrvatski? Hrvatski je morfološka noćna mora za jednostavne algoritme.
Jedna riječ, recimo “grad”, može imati desetke oblika: grada, gradu, gradom, grade, gradovi, gradova, gradovima…
Da bi standardna pretraga našla “gradove” kad upišete “grad”, netko je morao ručno upisati sve te varijacije u bazu. A nitko to ne radi.
Mogao sam koristiti gotova rješenja poput Algolie. Sjajan alat, ali skup i zahtijeva ozbiljnu konfiguraciju da bi “progovorio” hrvatski. Relevanssi je popularan izbor u WP svijetu, ali njegovo razumijevanje našeg jezika je bazično.
Meni je trebalo nešto što razumije da je “gradjevinski” (kako ljudi često pišu na mobitelima bez dijakritika) isto što i “građevinski” (književno), a ujedno i “građevina” (korijen riječi).
Tu Cro-Stem stupa na scenu. S točnošću od 97.41%, on svodi riječi na njihov lingvistički korijen prije nego što uopće dotaknu bazu podataka. To nije samo “fuzzy search”; to je pretraga koja razumije gramatiku.

Dijagnostika “zdravlja” webshopa: CGM za vaš biznis
Svatko tko redovito čita moj blog zna koliko pišem o dijabetesu i važnosti praćenja metrika koje nisu vidljive golim okom. Nosim CGM (uređaj za kontinuirano praćenje glukoze) jer ako ne mjerite šećer, ne znate što se događa u vašem tijelu sve dok ne postane prekasno.
Ista, ali potpuno ista stvar vrijedi za e-commerce.
Većina vlasnika shopova nema pojma što njihovi kupci traže, a ne nalaze. Gledaju Google Analytics, vide posjete, vide prodaju. Ali ne vide “rupe”. Ne vide onog kupca koji je bio spreman kupiti, ali je odustao jer je tražio “mobitel”, a vi ste artikl nazvali “Smartphone”.
To je “tiha hipoglikemija” vašeg webshopa. Gubite energiju (kupce), sustav vam slabi, a vi ni ne znate zašto.

AI Discovery: Kad lingvistika nije dovoljna
Rješavanje gramatike (stemming) je bio prvi korak. Ali, ljudi su kreativni u svom neznanju (ili žurbi). Koriste sinonime, sleng, tuđice.
Ovdje stemmer ne pomaže. Stemmer ne zna da su “mobitel” i “telefon” ista stvar. Ovdje treba kontekst.
Zato sam u Cortex Search dodao AI sloj. Zamislite to kao pametni alarm na vašem CGM-u.
Kad Cortex Search detektira pretragu koja vraća “0 rezultata”, on ne staje. On taj upit šalje AI modelu i pita:
“Hej, korisnik traži X. Mi u bazi nemamo X, ali imamo Y i Z. Je li X možda sinonim za Y?”
Ako AI pronađe semantičku vezu, predlaže je administratoru.

Sve se to događa automatski, u pozadini, bez ometanja kupca. Vi kao vlasnik shopa na svom dashboardu samo vidite prijedlog: “Kupci traže ‘baterija’, a vi imate ‘akumulator’. Poveži?”
Jedan klik na “Odobri” i problem je riješeni zauvijek.

Zaključak
Cortex Search nije nastao jer sam se jednog jutra probudio sa željom da napravim još jedan WordPress plugin i zaradim milijune. Nastao je iz iste one inženjerske potrebe koja je stvorila i Cro-Stem: potrebe da stvari rade kako treba.
Spojiti optimizirani, brzi Rust kod s modernim AI mogućnostima i vizualizacijom problema (baš kao što vizualiziram podatke o dijabetesu) bio je logičan korak.
Ako vas zanimaju tehnički detalji iza samog algoritma “ispod haube”, svakako bacite oko na moj originalni post o izgradnji Cro-Stema.
A ako vodite webshop i borite se s WordPress pretragom – ili još gore, ako mislite da se ne borite, a zapravo gubite kupce na “0 results” stranicama – isprobajte Cortex. Riješite te “nevidljive” probleme prije nego postanu kronični.
Isprobajte Cortex Search (Beta)
Trenutno sam u fazi prikupljanja feedbacka. Plugin možete preuzeti i ručno instalirati na novoj specijalno za CortexSearch napravljenoj stranici.
Napomena: Plugin će uskoro biti dostupan i na službenom WordPress repozitoriju.
