એક ડેવલપર ટીમે OpenSearch ને SQLite FTS5 સાથે જોડ્યું અને લેટન્સી (latency) 20 ms થી નીચે રાખીને, શૂન્ય-પરિણામ (zero-result) ધરાવતી વિડિયો સર્ચને 11.4 ટકાથી ઘટાડીને 2.1 ટકા કરી દીધી. હવે જ્યારે વપરાશકર્તાઓ “blackpink jenny solo stag” ટાઈપ કરે છે, ત્યારે તેમને ખાલી યાદીને બદલે સાચું “BLACKPINK Jennie SOLO stage” જોવા મળે છે.
આ ફેરફાર શા માટે જરૂરી હતો
એક વિડિયો-હોસ્ટિંગ પ્લેટફોર્મના સર્ચ લોગ્સ એક વારંવાર થતી સમસ્યા દર્શાવતા હતા: લેટિન-સ્ક્રિપ્ટના શીર્ષકમાં એક નાની જોડણીની ભૂલ (typo) પણ તમામ પરિણામોને ખતમ કરી શકતી હતી. SQLite નું FTS5 એક્સટેન્શન, જે ચાઈનીઝ, જાપાનીઝ અને કોરિયન (CJK) ટેક્સ્ટમાં સબસ્ટ્રિંગ્સ (substrings) મેચ કરવાની ક્ષમતા માટે જાણીતું છે, તે ફઝી મેચિંગ (fuzzy matching) કરી શકતું નથી. નામ અથવા ગીતના શીર્ષકમાં એક ખોટી સ્પેલિંગવાળી અક્ષર આખી ક્વેરીને બગાડી નાખે છે.
હાલનું પાઇપલાઇન SQLite ને એકમાત્ર ઇન્ડેક્સ તરીકે ગણતું હતું. તે CJK ક્વેરીઝને સારી રીતે હેન્ડલ કરતું હતું પરંતુ લેટિન-સ્ક્રિપ્ટની જોડણીની ભૂલો માટે કોઈ સુરક્ષા આપતું નહોતું. તેથી, ટીમે એક પૂરક સર્ચ એન્જિનની શોધ કરી જે સાબિત થયેલા FTS5 લેયરને છોડ્યા વિના ટાઈપો ટોલરન્સ (typo tolerance) પ્રદાન કરી શકે.
OpenSearch કેવી રીતે ઉમેરવામાં આવ્યું
OpenSearch ફ્રન્ટ-લાઇન સર્ચ સર્વિસ તરીકે ચાલે છે; SQLite 'સોર્સ ઓફ ટ્રુથ' (source of truth) તરીકે રહે છે. બંને સિસ્ટમ્સ સમાંતર ચાલે છે: OpenSearch પહેલા વપરાશકર્તાની ક્વેરી મેળવે છે, અને જો તે પૂરતી ઝડપથી પ્રતિસાદ આપે, તો તેના પરિણામો બતાવવામાં આવે છે. જો OpenSearch ટાઈમ-આઉટ થાય અથવા એરર આવે, તો રિક્વેસ્ટ SQLite FTS5 ઇન્ડેક્સ પર જાય છે. આ "ફેલ-સેફ" (fail-safe) ડિઝાઇન ખાતરી આપે છે કે નેટવર્કની કોઈ સમસ્યાને કારણે સર્ચ બાર ક્યારેય ખાલી ન રહે.
મલ્ટી-ફિલ્ડ મેપિંગ
OpenSearch માં દરેક વિડિયો શીર્ષક ત્રણ રીતે ઇન્ડેક્સ કરવામાં આવે છે:
- title.std – ASCII ફોલ્ડિંગ સાથે સ્ટાન્ડર્ડ એનાલાઇઝર દ્વારા પ્રોસેસ કરવામાં આવે છે. આ એક્સેન્ટેડ કેરેક્ટર્સને નોર્મલાઇઝ કરે છે અને મોટાભાગની લેટિન-સ્ક્રિપ્ટની જોડણીની ભૂલોને હેન્ડલ કરે છે.
- title.cjk – CJK એનાલાઇઝર દ્વારા પ્રોસેસ કરવામાં આવે છે જે બિગ્રામ્સ (bigrams - બે અક્ષરના ટોકન્સ) બનાવે છે. આ એશિયન સ્ક્રિપ્ટ્સ માટે FTS5 જેવી સબસ્ટ્રિંગ-મેચિંગ શક્તિ જાળવી રાખે છે.
- title.keyword – એક્ઝેક્ટ-મેચ લુક-અપ્સ અને સોર્ટિંગ માટે અપરિવર્તિત સંગ્રહિત કરવામાં આવે છે.
અલગ-અલગ ફિલ્ડ્સ ક્વેરીને ટોકનાઇઝેશન વ્યૂહરચનાઓને મિક્સ કર્યા વિના દરેક સ્ક્રિપ્ટ પર યોગ્ય એનાલિસિસ લાગુ કરવા દે છે.
બૂસ્ટ ટિયર્સ
એક સિંગલ મોનોલિથિક ક્વેરીને બદલે, ટીમે એક ટાયર્ડ ક્વેરી બનાવી જે પરિણામોને આપમેળે રેન્ક આપે છે:
title.keywordપર એક્ઝેક્ટ ફ્રેઝ મેચિસ (Exact phrase matches) ને સૌથી વધુ બૂસ્ટ મળે છે, જે ખાતરી કરે છે કે પરફેક્ટ મેચિસ યાદીમાં મુખ્ય રહે.title.cjkપર CJK બિગ્રામ મેચિસ (CJK bigram matches) ને મધ્યમ બૂસ્ટ મળે છે, જે એશિયન-ભાષાની સર્ચની ગુણવત્તા જાળવી રાખે છે.title.stdપર ફઝી લેટિન મેચિસ (Fuzzy Latin matches) ને ઓછો બૂસ્ટ મળે છે, જેથી એક્ઝેક્ટ હિટ્સને ન છીનવી લેતા ટાઈપો-ટોલરન્ટ પરિણામો દેખાઈ શકે.
આ ટાયર્ડ અભિગમ ટ્યુનિંગને સરળ બનાવે છે: એક બૂસ્ટ વેલ્યુમાં ફેરફાર કરવાથી આખી મેચ ક્લાસનું સાપેક્ષ મહત્વ બદલાઈ જાય છે.
સ્માર્ટ ફઝીનેસ
ફઝીનેસ (Fuzziness)—જે મર્યાદિત સંખ્યામાં કેરેક્ટર એડિટ્સની મંજૂરી આપે છે—તે ફક્ત લેટિન ફિલ્ડ પર જ લાગુ થાય છે. ટીમે title.cjk માટે ફઝીનેસ બંધ કરી દીધી કારણ કે CJK માં એક અક્ષરનો ફેરફાર ઘણીવાર અર્થ સંપૂર્ણપણે બદલી નાખે છે. લેટિન ટેક્સ્ટ માટે ક્વેરી OpenSearch ના AUTO ફઝીનેસ સેટિંગનો ઉપયોગ કરે છે, જે શબ્દની લંબાઈના આધારે મંજૂર એડિટ ડિસ્ટન્સને સ્કેલ કરે છે, જેનાથી ટોલરન્સ અને રિલેવન્સ વચ્ચે સંતુલન જળવાય છે.
પરફોર્મન્સ અને ફોલબેક લોજિક
સર્ચ રૂટિન OpenSearch કોલને try-catch બ્લોકમાં રેપ કરે છે:
- જો OpenSearch 400 ms ની અંદર પરિણામ આપે, તો તેના પરિણામો ડિસ્પ્લે કરવામાં આવે છે.
- જો કોલ એક્સેપ્શન ફેંકે અથવા ટાઈમ-આઉટ કરતાં વધી જાય, તો સિસ્ટમ તરત જ SQLite FTS5 સામે ક્વેરી ફરીથી રન કરે છે.
આ સુનિશ્ચિત કરે છે કે નેટવર્ક લેટન્સી અથવા સર્વિસ આઉટેજ ક્યારેય યુઝર એક્સપિરિયન્સને બગાડે નહીં. સર્ચ લેટન્સી 20 ms થી નીચે રહી.
માપી શકાય તેવો પ્રભાવ
- લેટિન-સ્ક્રિપ્ટ ક્વેરીઝ માટે શૂન્ય-પરિણામનો દર 11.4% થી ઘટીને 2.1% થયો.
- CJK ક્વેરીઝ માટે સર્ચ ક્વોલિટી યથાવત રહી, જે પુષ્ટિ કરે છે કે નવા CJK એનાલાઇઝરે મૂળ FTS5 ઇન્ડેક્સની શક્તિ જાળવી રાખી છે.
- એન્ડ-ટુ-એન્ડ લેટન્સી આરામથી 20 ms ના લક્ષ્યથી નીચે રહી, જેનો અર્થ છે કે ઉમેરાયેલા લેયરથી UI ધીમું થયું નથી.
પાઠ અને ટ્રેડ-ઓફ્સ
- અલગ ફોલ્ડિંગ અને ફઝીનેસ – ફોલ્ડિંગ (કેરેક્ટર્સને નોર્મલાઇઝ કરવા) અને ફઝીનેસ (જોડણીની ભૂલો હેન્ડલ કરવી) અલગ-અલગ સમસ્યાઓનું નિરાકરણ કરે છે. તેમને અલગ ફિલ્ડ્સ પર રાખવાથી અનિચ્છનીય ઇન્ટરેક્શન ટાળી શકાય છે.
- **સર્ચ ઇન્ડેક્સને 'સોર્સ
આ પ્રયોગ સાબિત કરે છે કે SQLite FTS5 ની સાબિત CJK ક્ષમતાઓ સાથે બાંધછોડ કર્યા વિના, એક સામાન્ય OpenSearch લેયર બહુભાષી વિડિયો શીર્ષકો માટે સ્પેલિંગની ભૂલો પ્રત્યેની સહનશીલતામાં મોટો સુધારો લાવી શકે છે. એવા પ્લેટફોર્મ્સ માટે જ્યાં સર્ચ સુસંગતતા સીધી રીતે વોચ ટાઈમને અસર કરે છે, તે સુધારો વપરાશકર્તાના અનુભવમાં એક સ્પષ્ટ ફાયદો સાબિત કરે છે.
