Timu ya uhandisi nyuma ya huduma ya kuhifadhi video ilibadilisha kielezo chake cha SQLite FTS5 na kundi la OpenSearch, ikipunguza utafutaji usio na matokeo kutoka 12% hadi 1.4% na kuongeza kiwango cha utafutaji-kuelekea-kubofya kwa 9% huku ikidhibiti ucheleweshaji chini ya ms 28.
Kwa nini mabadiliko yalikuwa ya haraka sana
Nyongeza ya utafutaji wa maandishi kamili ya SQLite (FTS5) inavutia: inakaa kwenye faili moja na data nyingine zote, haina gharama za leseni, na inatoa matokeo papo hapo kwa maneno yanayofanana kabisa. Hata hivyo, kumbukumbu (logs) za jukwaa hilo zilionyesha kuwa asilimia kadhaa ya utafutaji wa watumiaji haukutoa matokeo yoyote. Makosa ya tahajia kama “intersteller” au “avengrs endgame” – aina ya makosa ambayo watu hufanya kwenye kibodi za simu – yalikuwa chanzo kikuu.
Jaribio la haraka la kutumia trigrams (vipande vya herufi tatu) lilipunguza kiwango cha utafutaji usio na matokeo hadi 7% lakini lilileta matatizo mawili. Kwanza, kielezo (index) kiliongezeka ukubwa kwa zaidi ya mara tatu ya ukubwa wake wa awali, jambo lililoongeza gharama za hifadhi na kupunguza kasi ya sasisho. Pili, uhusiano wa matokeo (relevance) ulidhoofika; utafutaji wa fuzzy ulileta mchanganyiko wa video zisizohusiana, jambo lililowachanganya watumiaji badala ya kuwaongoza.
Timu ilihitimisha kuwa injini ya utafutaji iliyoundwa mahususi, yenye uwezo wa asili wa kuhimili makosa ya tahajia na mifumo ya kisasa ya kupima uhusiano wa matokeo, ilihitajika.
Kujenga mtiririko wa OpenSearch
Tumia SQLite kama chanzo cha ukweli
OpenSearch ilitumika kama nakala ya kusoma tu (read-only replica) inayoweza kutupwa. Metadata zote za video zilikaa kwenye SQLite; kielezo cha utafutaji kingeweza kujengwa upya bila hatari ya kupoteza data. OpenSearch cluster ilipofeli, programu ilirudi kwenye injini ya FTS5 asilia moja kwa moja.
Uhusiano wa matokeo wa tabaka mbalimbali kwa kutumia hoja ya “should”
Badala ya kutegemea utafutaji wa fuzzy pekee, hoja (query) ilijumuisha vipengele vitatu:
- Exact phrase match – kipaumbele cha juu zaidi, kinawazawadia watumiaji walioandika kichwa cha habari kwa usahihi.
- All terms present – kipaumbele cha kati, kinakamata utafutaji ambapo kila neno linapatikana lakini si lazima kwa mpangilio uleule.
- Fuzzy match – kipaumbele cha chini, kinatumika kama kinga kwa maneno yaliyokosewa tahajia.
Mpangilio huu ulihifadhi usahihi kwa utafutaji safi huku ukitoa uwezekano wa kupata matokeo hata kwa makosa ya tahajia.
Kurekebisha mipangilio ya fuzzy
Urefu wa kiambishi (prefix length) wa 1 ulilazimisha herufi ya kwanza ya kila neno kufanana kabla ya mantiki ya fuzzy kuanza kufanya kazi. Sheria hii ilifanya utafutaji kuwa wa haraka na kuzuia ongezeko kubwa la maneno yanayoweza kuzidisha mzigo wa kumbukumbu. Timu pia iliweka kikomo cha idadi ya juu ya upanuzi wa maneno (term expansions), kinga nyingine dhidi ya matumizi yaliyopitiliza ya rasilimali.
Mkakati wa usawazishaji
Michakato mitatu inayofanya kazi kwa pamoja huweka kielezo cha OpenSearch kikiwa kimeoana na SQLite:
- Kazi ya cron (cron job) kusawazisha data mpya.
- Upitaji wa tofauti wa usiku (Nightly diff pass) – unatafuta kutofautiana ambako kumeachwa na sasisho za hatua kwa hatua.
- Ujenzi upya kamili wa kila wiki (Weekly full rebuild) – unafanya kazi nyuma ya alias ya kielezo (index alias), kisha unabadilisha alias hiyo kwa operesheni moja, ikihakikisha hakuna muda wa kusimama (zero downtime).
Athari inayopimika baada ya wiki mbili
- Utafutaji usio na matokeo ulipungua kutoka 12% hadi 1.4%.
- Ubadilishaji wa utafutaji-kuelekea-kubofya ulipanda kwa 9%.
- Ucheleweshaji wa wastani (median latency) ulibaki chini ya ms 28, ikiwa ndani ya lengo la uzoefu wa mtumiaji wa jukwaa hilo.
Tahadhari na hoja za kinyume
Uhamishaji huu si mabadiliko ya "plug-and-play". Timu inasisitiza kuwa kanzi data (database) kuu haipaswi kamwe kubadilishwa na injini ya utafutaji; SQLite inabaki kuwa hifadhi rasmi ya metadata zote za video.
Hitimisho
Kuongeza uwezo wa kuhimili makosa ya tahajia kupitia injini ya utafutaji iliyoundwa mahususi kuligeuza kikwazo kikubwa katika safari ya mtumiaji kuwa uzoefu laini na wa haraka. Utafiti huu unaonyesha kuwa usanifu uliodhibitiwa – kuweka hifadhi ya uhusiano kama chanzo cha ukweli, kuweka tabaka za uhusiano wa matokeo, na kulinda mantiki ya fuzzy – unaweza kuleta faida zinazopimika bila kusaliti uthabiti.