Šta hoda ujutro na četiri noge, u podne na dve, a uveče na tri? Edip je odgovor smislio sam, a mi u pomoć pozivamo sfingu (Sphinx).
Zvuči neverovatno, ali pre petnaest godina nije postojao Google. Svet se brzo menja, Internet još brže. Količina podataka raste eksponencijalno (ili bar geometrijski), što stvara potrebu za sve efikasnijim sistemima pretraživanja. Naš sajt se oslanja na Sphinx search engine.
Glavna funkcija Sphinx–а је full-text indeksiranje i pretraga. Zašto je to važno? Jednostavno, zbog brzine. Full-text indeks bi se prilično precizno mogao predstaviti kao registar reči koji se moze naći na kraju nekih knjiga, najčešće udžbenika. Preko registra reči lako se mogu pronaći pojave određenog pojma u knjizi. Baze podataka imaju svoje sisteme pretrage koje sasvim dobro funkcionišu kada je u pitanju poređenje dva elementa. Problemi nastaju kada je potrebno pretraživati tekstualne podatke u kojima je potrebno naći SLIČNE pojmove. To se može postići klasičnim SQL upitom sa LIKE operatorom, ali će vreme pretrage biti veliko. Sphinx ovo trajanje smanjuje za nekoliko redova veličine. Ukoliko biste pokušali da kroz pretragu na našem sajtu potražite „iPhone“, rezultat bi bio prosleđen za nekoliko stotih delova sekunde, dok bi isti upit bez Sphinxa trajao više od 2 sekunde.
Ova drastična razlika u performansama ostvarena je tako što se u bazi ne pretražuje tekst, već Sphinx vraća primarni ključ sloga u kom se nalazi traženi tekst. Na taj način pretraga se vrši na najbrži mogući način – po primarnom ključu.
Za Sphinx se kaže da koristi „soft real-time” indeksiranje. Ovo znači da se promena u bazi ne vidi sve dok je Sphinx ne indeksira. Trik je u tome da se proceni optimalna frekvencija indeksiranja tako da pretraga novounetih podataka bude blagovremeno omogućena, a da se sistem ne optereti prečestim „renoviranjem“ indeksa.
Sphinx je open-source search engine koji podržava MySQL, PostgreSQL, MSSQL, pa čak i XML format dokumenta. Može se implementirati kroz različite programske jezike: PHP, C, C++, Java. Koristi sintaksu koju koristi i Google (više o tome možete pročitati ovde).
Zahvaljujem se administratorima Limunda Milošu i Nikoli, čija je pomoć u stvaranju ovog teksta bila neprocenjiva.
I još nešto. Znate li odgovor na zagonetku iz podnaslova? Prvi čitalac koji tačno odgovori dobija na poklon Limundo majicu. 😉
Trebalo bi da je čovek 🙂
Znam odgovor, al majicu ostavljam nekom drugom…
@Dušan Čestitam! Osvojio si Limundo majicu.
@Mrki Plemenito, ali nepotrebno. Dušan je bio brži. 😉
Da, videh, Dusanov komentar je bio “pending”, kao i moj, izgleda da je on prvi odgovorio. Cestitam!