A kereső működéséről
Ma arról írok, hogy a színfalak mögött mi hajtja meg a keresőt, hogy lehet ilyen okos és gyors. Azt a felét fényezem ilyen szavakkal, amit nem én csináltam, hiszen ez egy szolgáltatás, ami Algolia névre hallgat. A használatáról már írtam, példákkal együtt a kereső oldalon, azt nem ismétlem. Szó lesz a keresők általános működéséről, a találatok összeállításáról, és az indexről (amiben valójában keresünk), a fejlesztés kihívásairól és a ún. mikroszolgáltatásokról.
Elhelyezés és a keresés indítása, interakció
Általában az oldalakon felül szokott lenni egy kereső sáv, ez kétféleképpen szokott működni:
- Belekattint, aztán beír az ember valamit, nyom egy entert, majd egy külön lapon vagy jönnek a találatok, vagy semmi. Ez a legfapadosabb.
- A mezőbe kattintás és pár betű beírása után próbálja a rendszer megtippelni hogy mit akarunk végigírni. Ezeket a javaslatokat akik nem vakon gépelnek, észre sem veszik (mert a billentyűzetet nézik, pont nekik segítene a legtöbbet). A javaslatok nem találatok, de azért segíthetnek. A találatok szintén egy elnavigálás után, a találati oldalon jelennek meg.
Ezen az oldalon is szükség van egy kattintásra, de mivel a kereső mezőt automatikusan aktiválja a kereső oldal és egyből lehet bele írni, ezért nem láttam szükségességét a beviteli mezőt minden oldal sarkába feltenni. Főleg, mivel viszonylag gyors az oldal (reményeim szerint a többségüknél valóban), ezért a belekattintás és beírni elkezdés közti eltelt idő minimális. Javaslatokkal szerencsére nem kell foglalkozzak, mert ha a technológia képes rá, hogy egyből a találatokat mutassa, akkor talán ez egy fokkal jobb. Így egyből látja a látogató hogy van-e egyáltalán találat, és korrigálja a keresőszavait a valós idejű találatoknak megfelelően, ez a leggyorsabb fajta kommunikáció egy keresővel. Az oda-vissza „van találat? nincs? és így? van!” betűnként lezajlik, és sokszor végig se kell írni egy bonyolult szót, sőt el is lehet gépelni. Amikor nem látszódnak a találatok, még nem tudhatja a látogató, hogy tolerálva lesznek-e az elírásai vagy sem, stb.
De hogy áll ez össze, és hogy tudnak ilyen gyorsan keresni az oldalon?
A fő turpisság abban rejlik, hogy valóban nem is az oldalon keresünk. Egy, az oldalt leképező indexben, ami gyakorlatilag egy adatbázis a kereső szolgáltatás szerverein. Azt, hogy ez mit tartalmaz, én irányítom egy kóddal, ami bejárja az oldalt és összeszedegeti belőle azokat az információmorzsákat, amikre szeretném hogy lehessen kereseni, és semmi olyat ami csak növelné a zajt. Ahogy a látogató beír egy betűt, a másodperc pár ezred része alatt a szolgáltató kikeresi és mindenféle relevancia szerint sorba rakja a találatokat és visszaküldi az első 25-öt. Ezt ekkor az oldal feldolgozza kis találati kártyákká vagy egy ad-hoc galériába. A következő betűnél az egész kezdődik előlről és újrarajzolódnak a találatok.
Az index a lényeg
Nem, nem a hírportál, sem az irányjelző, és nem is a főiskolai „ellenőrző”. Ez a keresés lelke. Képzeljék el, hogy adott az egész előkészített oldal, lementve (a szöveges részei), párszáz fájl. Ezen gombnyomásra végig halad egy program, ami tudja értelmezni a gépeknek szánt kódot, és ki tudja mazsolázni belőle pl. a lapok címét, a képeket, azt, hogy hol kezdődnek a szövegben az új fejezetek (a címsoroknál). A későbbi szűrési lehetőség miatt ki kell találja, hogy az adott tartalom épp melyik része az oldalnak – ha van kategória rátűzve, akkor az alapján, ha másnem a menü segítségével (mint egy ember, pl azt nézi „mi piros”). A képek kontextusát (az is későbbiekben hasznos, hogy hol találta az adott képet, és miért), méreteit, többféle változatukat is össze kell szedegesse (a találatokban kis és nagy méretre egyaránt szükség van).
A legnagyobb kihívás, hogy azon a kis, pár tucat szót is alig felfedő helyen, ahol a keresési találati kártya azt mutatja, hogy a keresett szó milyen közegben fordul elő, ott az eredeti szöveg formázását el kell vetni. Ha ezt nem okosítanám, akkor még ömlesztettebbnek is nézne ki. De pl. a felsorolásos listák elemei után pontosvesszőt és szóközt kell beszúrjak. Aztán a csak képeket tartalmazó oldalaknál azokat összeszámolja, mert ugye megjelenni a szöveges részen nem tudnak, de valahogy jelezni kell hogy itt képek vannak. Ahol van a képeknek címe, ott azokkal meg kell szakítani a szöveges reprezentációt. Ha többnek ugyanaz a címe, akkor ne ismételgesse, vonja össze, stb. Tehát nagyon sok tartalmi lebutításra van szükség, hogy értelmes módon tudja később kiemelni a rendszer a releváns részt a szövegből.
Egyébként itt éreztem, hogy a Google mekkora csodát művel azzal, hogy a weboldalak végtelen variációját mind valahogy meg tudja emészteni és értelmes találatokkal tud előrukkolni. Mindezt anélkül, hogy „megbeszélte” volna az oldalak gazdáival, hogy hogyan prezentálják a tartalmaikat (keresőoptimalizálás, már aki csinálja, már aki jól). Csak javaslataik vannak, aztán vagy betartják a fejlesztők, vagy nem.
Még annyi, hogy amikor egy kép többször is előfordul az oldalon, akkor alapesetben többször is megjelenne, mint találat. De ez úgy néz ki, mintha hibás lenne valami, pedig nem. Mindegy, engem zavart és ilyenkor összeolvasztottam azokat, amik eredetileg egyszer lettek feltöltve, csak többször felhasználtam. Aztán ennek megfelelően írja a kép nagy méretében a leírás a több, mint egy kontextust. Persze ha tényleg kétszer töltöttem fel valamit mert olyanom volt, akkor az lehet kétszer látszik, de semmi sem tökéletes.
A fejlesztés
Durván egy hónapot vett igénybe csak a kereső, ráadásul úgy is, hogy a „lényegi részt”, magát a keresést egy szolgáltatás nyújtja. Tőlem csak arra volt szükség, hogy az index készítését ne hagyjam rájuk, illetve a felületet kialakítani, amit az emberek nyomkodhatnak. De így is volt kihívás bőven, pl. a szűrőket kulturáltan tálalni, hogy elférjen minden mobilon is, és főleg az, hogy megosztható legyen a találat. Ez a legjobb módja, hogy egy valami alapján összetartozó tartalomcsomagot megmutassunk a másiknak. Pl. valaki beírja a saját nevét, és a szálkai művésztáboros alkotásait akarja megosztani a barátjával, akkor csak rákeres amire akar, elküldi neki a linket és kész. Ha ez nem így lenne, akkor a másik görgethetné a 300 képes galériát naphosszat, és a „középtájon lesz” instrukciót követve bogarászhatna keresztül mindenki más alkotásain. Az sem lenne akkora csapás…
Miért ez a szolgáltatás?
A keresőszolgáltatás-konkurenciákat nem is néztem, csak tudtam, hogy ez jó. Látogattam olyan oldalt, ami őket használta és egyből érződött, hogy rendben van. De hogy miért kell egyáltalán kiszervezni a keresést? Mivel az oldal „statikus” (csak a lementett szöveges fájlokból áll), nincs hagyományos webtárhelye, szervere, sehol nem „fut”. A látogató megkapja a nálam előre „kinyomtatott” lapot, és kész. Nulla interakciót enged ez a modell, semmi vendégkönyv, komment, szivecskézés, űrlap, kapcsolat, szavazás, keresés, belépés, vásárlás, csevegés, semmi az égvilágon (egyébként ezért is olyan nyugalmas). Mégis, akik ezt az új vonalát követik a webnek, komplett webshopokat építenek így. De hogyan?
Mikroszolgáltatásokkal: pici programok, amik az előbb említett dolgokat tudják külön-külön, általában némi pénzért. Ezek azok a dolgok, amikhez érdemi számítási teljesítmény-igény vagy másféle adatvédelmi szabályozás is társulhat, de ott sincs arra szükség, hogy csak miattunk üzemeltessenek egy szervert, és a rendelkezésre állásért sokszor nem is kell fizetni. Egy ilyen szolgáltatás egyféle dolgot csinál, de azt nagyon jól, stabilan, és kicsiknek nagyoknak csurran-cseppen a jóból (sokszor ingyen is, bizonyos forgalom alatt). Példák ezekre, amikkel találkozhattak:
- Facebook-kommentek a Facebookon kívül
- Disqus-kommentek
- A manapság oly divatos (szerintem idegesítő, nagyon ritkán hasznos) chat-botok, amikor egy robottal kell beszélgetni az oldal sarkában és még hangokat is ad ki.
- Neten bankkártyás vásárlás, az a felület, ahol a kártyaszámunkat megadjuk, ennek jobb esetben semmi köze az oldal gazdájához, hanem egy bank vagy fizetési szolgáltatás nyújtja (pl SimplePay, OTP). Van, hogy csak az a kis mező, amibe a számot írjuk, az egy másik weboldal az alap oldalon belül (Stripe).
- Akár a YouTube/Vimeo videókat is ide sorolhatnánk, amikor ezek a platformjukon kívül, oldalakba beágyazva jelennek meg. Azért a videó streaming szolgáltatás tud költséges és számításigényes lenni, főleg az élő közvetítések.