Érdemes -e ma új keresőt fejleszteni?
Tisztában vagyunk azzal, hogy 15 évvel a Google megjelenése után emberfeletti feladatnak tűnhet egy jobb keresőt építeni. Azonban ez egy szép kihívás számunkra és több olyan környező ország is van, ahol komoly részesedése van a lokális keresőknek. Ennek tudatában már reális célokat tűzhetünk ki magunk elé. A Bluu jelenleg több tízezer napi keresést elégít ki de tudjuk, komoly szereplővé csak úgy válhatunk a piacon ha mind a szolgáltatásunk sebességében, minőségében és megbízhatóságában előrelépünk.
Mi lehet a lokális kereső előnye?
- Kicsi, ezért rugalmasan és gyorsan képes reagálni a helyi felhasználók igényeire
- Specializáltan egy nyelvre koncentrálhatja a kereső működését
- Felhasználhatja az adott nyelv információkutatási eredményeit
- Élvezheti a helyi közösségek támogatását és segítségével folyamatosan javíthat a kereső minőségén, bővítheti szolgáltatásait
Hogyan működik a Bluu kereső? 1. rész
A Bluu rendelkezik saját úgynevezett indexelőmotorral, amely olyan mintha egy regényről olvasónaplót írnánk. Az indexelést végző szoftver-robotok folyamatosan járják a webet és szépen jegyzetelnek az olvasónaplóba, amit szaknyelven indexállománynak hívnak. Ez egy háttérfolyamat a felhasználó semmit sem vesz észre belőle, viszont minél gyorsabban működik, annál frissebb lesz a találati lista. Mi jelenleg ott járunk, hogy a hírek megjelenéstől számított 5-10 percen belül kerülnek a Bluu indexébe, egy blogbejegyzés 2-3 nap alatt, egy nem túl látogatott új tartalom pedig legrosszabb esetben másfél hét alatt. Ezáltal ha beírsz egy kulcsszót nemcsak információt hanem (ha van) a legfrissebb híreket is azonnal meglátod a találati listában, valamint jobb oldalt a külön ide csoportosított hírtalálatokban.
Amikor keresel a felhasználói felületen, akkor a rendszer először szótövére bontja az adott kulcsszót. Amikor ez megtörténik körülbelül 0,05 másodperc telt el a keresésedtől. Eközben párhuzamosan zajlik a beírt kulcsszó értelmezése szövegértelmező rendszerünkben.
Ezután a rendszer keres a fájl alapú térképállományban. Ez annyit tesz, hogy minden szótövezett szóhoz tartozik egy fájl, amelyben egy tömb deklaráció található. Ez tartalmazza az adott kulcsszó további ragozott formáinak indexekben szereplő helyét. Mi az indexelés során minden kulcsszót külön kezelünk. Tehát ha a te oldaladon van egy “szia kedves látogató” szöveg, mi mindhárom szót külön kezeljük. Minden szónak van egy CSS pontszáma. Ez a szám függ attól, hogy az adott szó az oldalon amelyiken megtalálható, mennyire kiemelt helyen található, illetve mennyire nagyméretű betűtípussal lett írva.
Következő lépésként lekérjük az adatbázisból az összes előfordulását az adott kulcsszónak. Az indexelés során az oldalakat próbáljuk bekategorizálni, így természetesen ha van egy szóból 100 ezer találat nem kérjük le mindet, csak azokat, amelyek az indexelés során magasabb kategóriába lettek besorolva.
A kulcsszavak lekérése után a találatok sorrendezése zajlik. Itt a rendelkezésre álló információkból (css pontszám, kulcsszó sűrűség, az oldalra hivatkozott linkek, a kulcsszót tartalmazó oldal helye az oldal struktúrájában…stb) sorrendet állítunk fel a kulcsszavak között.
Egy keresőnek nagyon leegyszerűsítve kétféle sorrendezési algoritmusa van. Van egy alapértelmezett és van egy amit a felhasználók készítenek a keresőnek azzal, hogy használják, ezt hívjuk szándék adatbázisnak. Az első egy konstans, a másodikhoz pedig rengeteg használat szükséges.
Ez utóbbiról beszélnénk elsőként. A Google többek között azért olyan jó, mert pályafutása során a felhasználóktól megtanulta, hogy némely helyzetben melyik is a jó találat. A Google folyamatosan figyeli, hogy egy adott kulcsszóra (pl.”alma”) melyik találatra kattintanak leginkább. Ha például erre a kulcsszóra a kereső saját feltételrendszere hibás és mondjuk az 5. találat az, amelyikre a legtöbbet kattintanak, a kereső elkezdi egyre feljebb sorolni a találati listában. Amíg kattintanak az adott találatra folyamatosan megy feljebb a rangsorban. Egy idő után a felhasználó ugyanerre a keresésre egy jó minőségű találati listát fog eredményül kapni, pedig ha visszaemlékeznek a kereső eredeti sorrendezése szerint csak az 5. helyen lett volna a jó találat, így elmondható, hogy a Google a felhasználóktól tanulva lett ilyen jó keresővé, azzal, hogy használták és megtanították arra, hogy melyik is a jó találat.
Miről is beszélek?
Nézzük meg 1000 felhasználó viselkedését egy releváns találati lista esetén:
1. találatra 390 user kattint
2. találatra 205 user kattint
3. találatra 175 user kattint
4. találatra 104 user kattint
5. találatra 29 user kattint
Mi történik akkor, hogyha a keresőrendszer hibás sorrendben közli a találatokat?
1000 felhasználó viselkedése egy nem releváns találati lista esetén:
1. találatra 102 user kattint
2. találatra 120 user kattint
3. találatra 52 user kattint
4. találatra 401 user kattint
5. találatra 29 user kattint
Jól látható, hogy a rendszer megvizsgálhatja melyik a jó találat és legközelebbi keresésnél előrébb sorolhatja, persze csak ha birtokában áll ezen adatoknak.
Ilyen öntanuló rendszer a Bluu-ban is van, azonban mint ez a fenti példa alapján látszik a működéséhez rengeteg beírt keresés és használat kell, amely a kezdetekkor sajnos nem adatik meg. Több tízezer napi keresés bár szépen hangzik, valójában nagyon kevés ahhoz, hogy felhasználói viselkedést értékelhető mértékben lehessen vizsgálni, ráadásul rengeteg a “speciális” keresés (pl.: Menetrend, Szótár különböző extra keresési lehetőségek) amivel ilyen szempontból nem tudunk mit kezdeni, néhány esetben azonban már szépen működik a megoldás. (pl.: processzor kulcsszóra)
Igyekeztünk a nagy keresők szolgáltatásait is figyelembe véve egy olyan sorrendező algoritmust kialakítani, amely a saját indexeinket versenyképes relevanciával jeleníti meg. Első lépésként tehát szeretnénk felnőni a konkurencia szintjére, és onnan továbbfejlődni. Milyen lehetőség van a továbbfejlődésre?
A vetélytársaink tanulmányozása során megbizonyosodtunk arról, hogy valós szövegértelmezést csak a Bluu rendszer csinál. Tudomásunk szerint a Google nem elemzi a beírt mondatokat. Valójában egy statisztikai (magyar nyelven) rendszere van, amely a szavakat külön külön összevetve a (óriási méretű) statisztikai adatbázisával képes a kérdésekre releváns találatot adni. Itt utalnék megint vissza az öntanulás képességére, amely nélkül ez a megoldás nem működhet. Azonban a Google nem elemzi a mondatot és nem képes megmondani, hogy a beírt kérdésben melyik elem az állítmány vagy a tárgy, ellentétben a Bluu rendszerével. Vannak közös elemek, így szinonimavizsgálat és szótövezés mindkét rendszerben van.
Szövegértelmezési rendszerünket már több helyen megnézhettétek, elég csak a szabadszavas (vagy bővített mondatos) áru és autókeresésre, valutaváltásra vagy éppen a friss kocsmakeresésre gondolni. Itt szövegértelmezés történik, például a “sört akarok inni Egerben” vagy a “mikor indul busz Debrecenből Budapestre” esetben ez tökéletesen látható. Egyébként a rendszer némileg hibatűrt tehát a “Budapestre indul busz Debrecenből” kérdést is értelmezi és a nyelvtani szabályok figyelembe vételével képes meghatározni az indulási illetve a célállomást, mivel értelmezi a szavak ragozását (Budapest+re).
Sajnos a keresés során valós időben nem végezhetünk mondatelemzést, mert jelenlegi technológiánkkal 20000 találat esetén több száz másodpercig tartana, azonban ha rendszerünk relevanciáját sikerül megfelelő szintre emelni és a szövegértelmezési vizsgálatot mondjuk csak az így keletkezett találati lista első 200 elemén lefuttatni, a keresés néhány másodpercen belül lefutna és képes lenne összetett kérdésekre azonnali választ adni.
Szövegértelmező rendszerünk képességeiről itt tekinthetsz meg egy bemutató videót
A folyamatosan fejlesztett (teszt) verziót egyébként a 94.199.180.121-es ip címen érhetitek el, itt a találati listán számos fejlődést lehet tapasztalni, azonban ezt a verziót még folyamatosan teszteljük, amint éles állapotra kész azonnal közzétesszük. A tesztszerveren egyelőre bárki kipróbálhatja az aktuális fejlesztéseket.
Hogyan alakult az utóbbi időben rendszerünk relevanciája?
Vannak különböző statisztikáink amelyekre támaszkodva a fejlesztéseink működését tudjuk vizsgálni. A relevanciát egy elég egyszerű elv alapján mérjük, ugyanis ha a user az első és az ötödik találatok között valamelyikre kattint akkor vesszük relevánsnak az adott keresést.

Erről egy diagramot is megosztanék, ahol %-os arányban látható, hogy 100 keresésből hány esetben kattintottak az első 5 találat valamelyikére. A diagram alapjául szolgáló adatokban:
- nincsenek benne azon keresések, ahol a találati listára kattintás és továbbgörgetés nélkül hagyták el az oldalt,
- benne vannak azon keresések, ahol a user továbbgörgetett és lekérte a további találatokat, de nem kattintott és elhagyta a találati listát. (ebben az esetben ugye legörgetett, de nem találta amit keresett)
- nincsenek benne a commander üzemód, menetrend és szótár keresések
- nincsenek benne a fejlesztők által beírt keresések (ugyanis ez sok esetben teszt jellegű volt), de a tesztelők által beírt keresések igen.
Ez alapján vizsgáljuk meg kicsit rendszerünk történelmét:
- 2009 nyár vége, rendszerünk nagyon sok feltétel szerint rendezi a találati listáját emiatt lassú, de sok esetben releváns, hiszen a userek kb 45%-a kattint az első és ötödik találatok között valamelyikre. Az átlagos keresési idő 12 másodperc.
- 2009 ősz elkezdünk kísérletezni, hogy némelyik feltételt elhagyjuk, míg mások esetében kettő feltétel helyett egyet csinálunk. A sebesség nőtt, de a relevancia csökketn a userek kb 35%-a kattint az első és ötödik találatok közül valamelyikre. Az átlagos keresési idő 2-6 másodperc között.
- 2010 február, még kevesebb rendezési feltétel, de sok éjszakai túlórázás után elértük, hogy a relevancia 40% környékére nőjön. Az átlagos keresési idő 1,5-3 másodperc.
- 2010 március ekkor kezdtünk el folyamatosan tanulmányozni vetélytársainkat, ekkor relevanciánk folyamatosan javult és 50%-os eredményt ért el. A keresési idő nem változott.
- 2010 május további fejlesztéseinknek köszönhetően elértük a közel 60%-os relevanciamutatót, tehát 10-ből 6 keresés esetén az első 5 találatok valamelyikére kattintottak.
A következő generációs fejlesztésünket a relevancia terén a http://94.199.180.121 alatt tudjátok kipróbálni, ezt a verziót folyamatosan fejlesztjük és amint lehetséges éles üzembe állítjuk.
Mellesleg ezen a verzión kipróbálható a BKV menetrendi keresés is, aminek használata a következő:
Írj be két budapesti helyet és írd hozzá a keresésedhez. A rendszer pedig felajánlja a megfelelő BKV menetrendet. Pl.: “Nyugati pu. Flórián tér bkv”. Ezt a szolgáltatást partnerünk az utvonalterv.hu-val közösen valósítottuk meg.
A szándékadatbázis további kérdéseket vet fel: Hogyan tároljuk az adatokat?
Ezt a kérdést háromfelé oszthatjuk.
1. Viselkedés vizsgálat: ezesetben a felhasználó semmilyen adatát nem mentjük el, csak a keresett kulcsszót és a kattintott találatot, ilyen formában: “alma” – “alma.lap.hu”. Itt a felhasználóról mindösszesen csak annyit mentünk el, hogy kattintott a találati listán, de azt, hogy melyikre már nem, illetve ezt az adatot is csak fél óráig tároljuk.
2. Beírt kulcsszó: ezesetben mentjük a felhasználó ip címét, de csak fél óráig. Ennek az elgépelt kereséseket javító szolgáltatás az oka.
Ha hibásan írunk be egy kulcsszót, valószínűleg nem nekünk tetsző találati listát fog a rendszer mutatni. Ezesetben általában újra keresünk az előbbi kulcsszó enyhén módosított változatával. Ha kattintunk a találati listán, akkor ezt egy kulcsszó párnak mentjük el. Ez több esetben hasznos lehet:
- Elgépelt kulcsszónál fel tudjuk ajánlani a helyes kulcsszót
- Abban az esetben ha a felhasználó pontosított a keresés során, fel tudjuk másoknak ajánlani azokat a kulcsszavakat, amelyekkel más felhasználó már sikerrel járt keresése során.
Természetesen felhasználóhoz nem társítjuk az elmentett kulcsszópárt. Mint látható az adatokat rövid ideig tároljuk és tisztán keresési kényelem javítására használjuk fel.
3. Robottevékenység esetén: Ha valaki megpróbál egy kulcsszósorozatot végigpróbálni a rendszeren, mentjük és bizonyos számú lekérés után bannoljuk az ip címét.
Miben más a Bluu mint a többi kereső működésében?
A Bluu kereső működése során valószínűleg szűkösebb erőforrásokkal gazdálkodik, mégis meg tudtuk oldani, hogy a találatok frissek és informatívak legyenek. Szövegértelmezési rendszerünkhöz hasonlóval egy kereső sem rendelkezik, hiszen rajtunk kívül egy kereső sem érti meg, hogy “előltöltős mosógép 70 ezerig” mondatra 70 ezer alatti elöltöltős mosógépet kell találatul adnia. Rendszerünk a konkurens keresőkhöz képes számos plusz szolgáltatással rendelkezik, amelyet lehetetlen lenne saját indexelő és kereső algoritmus nélkül (más keresőkre támaszkodva) megvalósítani.
Továbbá rendszerünk lokális szinten nagyon sok erőfeszítést tett a relevancia javítására, ennek eredményeiről fentebb olvashatnak. Hisszük, hogy egy olyan rendszer amely megérti felhasználóját, ezáltal kényelmesen használható és sokkal több funkcióval rendelkezik az átlag magyar ember igényeit jobban kielégítheti mint a most piacon lévő megoldások.
Mit tettünk eddig a lokális relevancia javításáért?
Több szolgáltatásunk képes lokálisan jobb eredményeket felmutatni, mint a most egyeduralkodó kereső.
Például ha orvost, fogorvost, asztalost, gázszerelőt vagy bármilyen más szolgáltatást keresünk a Bluura sokkal inkább számíthatunk, hiszen a legkisebb településen is képes találatot adni. Sőt a beépített távolságmeghatározó rendszernek köszönhetően ha nincs találat az adott településen, képes meghatározni a userhez legközelebbi lehetőséget. Erre jelenleg rajtunk kívül nem képes senki.
További jó példa a hírek régiókra osztása. Ha be van írva a rendszerbe a lakhelyed és így írod be, hogy “hírek” a rendszer a lakhelyedhez közeli (esetleg téged érintő) híreket fog mutatni neked.
Várjuk folyamatosan a felhasználóink javaslatait
A jól ismert email címeken (bluu@bluu.hu, feedback@bluu.hu és bug@bluu.hu) várjuk javaslataitokat, ötleteiteket, hibajelentéseiteket.