ஒரு டெவலப்பர் குழு OpenSearch-ஐ SQLite FTS5 உடன் இணைத்து, வீடியோ தேடல்களில் முடிவுகள் ஏதும் வராத விகிதத்தை (zero-result searches) 11.4 சதவீதத்திலிருந்து 2.1 சதவீதமாகக் குறைத்தது, அதே நேரத்தில் தாமதத்தை (latency) 20 ms-க்கும் குறைவாகவே வைத்திருந்தது. இப்போது பயனர்கள் “blackpink jenny solo stag” என்று தட்டச்சு செய்யும் போது, காலியான பட்டியலுக்குப் பதிலாக சரியான “BLACKPINK Jennie SOLO stage” என்ற முடிவைக் காண்கிறார்கள்.
இந்த மாற்றம் ஏன் தேவைப்பட்டது
ஒரு வீடியோ-ஹோஸ்டிங் தளத்தின் தேடல் பதிவுகள் (search logs) ஒரு தொடர்ச்சியான சிக்கலைக் காட்டின: லத்தீன் எழுத்துக்களில் (Latin-script) உள்ள தலைப்பில் ஒரு சிறிய எழுத்துப் பிழை இருந்தால் கூட, அனைத்துப் பொருத்தங்களும் (matches) இல்லாமல் போய்விடும். சீன, ஜப்பானிய மற்றும் கொரிய (CJK) உரைகளில் உள்ள துணைச் சொற்களை (substrings) பொருத்தும் திறனுக்காகப் போற்றப்படும் SQLite-ன் FTS5 extension, fuzzy matching-ஐச் செய்யாது. ஒரு பெயர் அல்லது பாடலின் தலைப்பில் ஒரு எழுத்து தவறாக இருந்தாலும், அது தேடலை (query) முழுமையாகத் தடுத்துவிடும்.
ஏற்கனவே இருந்த வழிமுறை (pipeline) SQLite-ஐ மட்டுமே ஒரே குறியீடாக (index) பயன்படுத்தியது. அது CJK தேடல்களைச் சிறப்பாகக் கையாண்டது, ஆனால் லத்தீன் எழுத்துக்களில் ஏற்படும் எழுத்துப் பிழைகளுக்குப் பாதுகாப்பு வழங்கவில்லை. எனவே, ஏற்கனவே உள்ள FTS5 அடுக்கை (layer) கைவிடாமல், எழுத்துப் பிழைகளையும் தாங்கிக்கொள்ளக்கூடிய (typo tolerance) ஒரு துணைத் தேடல் இயந்திரத்தை (complementary search engine) குழுவினர் தேடினர்.
OpenSearch எவ்வாறு சேர்க்கப்பட்டது
OpenSearch முதன்மைத் தேடல் சேவையாகச் (front-line search service) செயல்படுகிறது; SQLite உண்மையான தரவு ஆதாரமாக (source of truth) தொடர்கிறது. இந்த இரண்டு அமைப்புகளும் இணையாகச் (parallel) செயல்படுகின்றன: முதலில் பயனர் தேடல் OpenSearch-க்குச் செல்லும், அது போதுமான வேகத்தில் பதிலளித்தால், அதன் முடிவுகள் காட்டப்படும். ஒருவேளை OpenSearch காலாவதியாகிவிட்டாலோ (timeout) அல்லது பிழை ஏற்பட்டாலோ, அந்தத் தேடல் SQLite FTS5 குறியீட்டிற்கு மாற்றப்படும் (fallback). இந்த "fail-safe" வடிவமைப்பு, நெட்வொர்க் கோளாறுகளால் தேடல் பட்டி (search bar) காலியாக இருப்பதைத் தவிர்க்கிறது.
மல்டி-ஃபீல்ட் மேப்பிங் (Multi-field mapping)
ஒவ்வொரு வீடியோ தலைப்பும் OpenSearch-இல் மூன்று வழிகளில் குறியீடு செய்யப்படுகிறது:
- title.std – ASCII folding வசதியுடன் கூடிய ஒரு standard analyzer மூலம் செயலாக்கப்படுகிறது. இது உச்சரிப்புச் சின்னங்களைக் கொண்ட எழுத்துக்களை (accented characters) இயல்பாக்கி (normalise), லத்தீன் எழுத்துக்களில் ஏற்படும் பெரும்பாலான எழுத்துப் பிழைகளைக் கையாள்கிறது.
- title.cjk – bigrams (இரண்டு எழுத்து டோக்கன்கள்) உருவாக்கும் ஒரு CJK analyzer மூலம் செயலாக்கப்படுகிறது. இது ஆசிய மொழிகளுக்கான FTS5 வழங்கும் துணைச் சொல் பொருத்தும் (substring-matching) வலிமையைப் பாதுகாக்கிறது.
- title.keyword – துல்லியமான பொருத்தங்களுக்காகவும் (exact-match) வரிசைப்படுத்துவதற்காகவும் (sorting) மாற்றமின்றிச் சேமிக்கப்படுகிறது.
தனித்தனி புலங்கள் (fields), டோக்கனைசேஷன் உத்திகளை (tokenisation strategies) கலக்காமல், ஒவ்வொரு மொழிக்கும் சரியான பகுப்பாய்வை (analysis) மேற்கொள்ள அனுமதிக்கின்றன.
பூஸ்ட் நிலைகள் (Boost tiers)
ஒரு ஒற்றை Query-க்கு பதிலாக, முடிவுகளைத் தானாகவே வரிசைப்படுத்தும் ஒரு அடுக்குமுறை Query-ஐ (tiered query) குழுவினர் உருவாக்கினர்:
title.keyword-இல் உள்ள துல்லியமான சொற்றொடர் பொருத்தங்களுக்கு (Exact phrase matches) மிக உயர்ந்த பூஸ்ட் வழங்கப்படுகிறது, இது சரியான பொருத்தங்கள் பட்டியலின் முன்னணியில் இருப்பதை உறுதி செய்கிறது.title.cjk-இல் உள்ள CJK bigram பொருத்தங்களுக்கு நடுத்தரமான பூஸ்ட் வழங்கப்படுகிறது, இது ஆசிய மொழித் தேடல்களின் தரத்தைப் பாதுகாக்கிறது.title.std-இல் உள்ள Fuzzy Latin பொருத்தங்களுக்கு குறைந்த பூஸ்ட் வழங்கப்படுகிறது, இது துல்லியமான முடிவுகளை மறைக்காமல், எழுத்துப் பிழைகளைத் தாங்கிக்கொள்ளும் முடிவுகளைக் காட்ட அனுமதிக்கிறது.
இந்த அடுக்குமுறை அணுகுமுறை (tiered approach) சரிசெய்தலை (tuning) எளிதாக்குகிறது: ஒரு பூஸ்ட் மதிப்பை மாற்றியமைப்பதன் மூலம், ஒரு குறிப்பிட்ட வகை பொருத்தங்களின் ஒட்டுமொத்த முக்கியத்துவத்தையும் மாற்ற முடியும்.
ஸ்மார்ட் ஃபஸிનેસ (Smart fuzziness)
ஃபஸிનેસ (Fuzziness)—அதாவது ஒரு குறிப்பிட்ட எண்ணிக்கையிலான எழுத்து மாற்றங்களை அனுமதிப்பது—லத்தீன் புலத்திற்கு (Latin field) மட்டுமே பொருந்தும். title.cjk-இல் ஃபஸினஸை குழுவினர் முடக்கிவிட்டனர், ஏனெனில் CJK மொழிகளில் ஒரு எழுத்து மாறினாலும் அதன் பொருள் முற்றிலும் மாறிவிடும். லத்தீன் உரைகளுக்கு, OpenSearch-ன் AUTO fuzziness அமைப்பைப் பயன்படுத்துகிறது; இது வார்த்தையின் நீளத்தைப் பொறுத்து அனுமதிக்கப்பட்ட மாற்றங்களின் அளவை (edit distance)ச் சரிசெய்து, பிழைத் தாங்கும் திறன் மற்றும் பொருத்தத்திற்கு இடையே ஒரு சமநிலையை ஏற்படுத்துகிறது.
செயல்திறன் மற்றும் ஃபால்பேக் லாஜிக் (Performance and fallback logic)
தேடல் நடைமுறை (search routine) OpenSearch அழைப்பை ஒரு try-catch பிளாக்கிற்குள் (block) வைக்கிறது:
- OpenSearch 400 ms-க்குள் பதிலளித்தால், அதன் முடிவுகள் காட்டப்படும்.
- அழைப்பில் பிழை (exception) ஏற்பட்டாலோ அல்லது காலாவதி நேரத்தைத் (timeout) தாண்டினாலோ, சிஸ்டம் உடனடியாக SQLite FTS5 மூலம் தேடலை மீண்டும் இயக்கும்.
இது நெட்வொர்க் தாமதம் அல்லது சேவைத் தடங்கல்களால் பயனர் அனுபவம் பாதிக்கப்படாமல் இருப்பதை உறுதி செய்கிறது. தேடல் தாமதம் (Search latency) 20 ms-க்கும் குறைவாகவே இருந்தது.
அளவிடக்கூடிய தாக்கம் (Measurable impact)
- லத்தீன் எழுத்துத் தேடல்களில் முடிவுகள் ஏதும் வராத விகிதம் (Zero-result rates) 11.4%-லிருந்து 2.1%-ஆகக் குறைந்தது.
- CJK தேடல்களின் தரம் மாறாமல் இருந்தது, இது புதிய CJK analyzer, அசல் FTS5 குறியீட்டின் பலத்தைப் பாதுகாத்துள்ளது என்பதை உறுதிப்படுத்துகிறது.
- End-to-end தாமதம் 20 ms இலக்கத்திற்குத் தாராளமாகக் கீழே இருந்தது, அதாவது சேர்க்கப்பட்ட புதிய அடுக்கு UI-ஐ மெதுவாக்கவில்லை.
பாடங்கள் மற்றும் சமரசங்கள் (Lessons and trade-offs)
- தனித்தனி folding மற்றும் fuzziness – Folding (எழுத்துக்களை இயல்பாக்குதல்) மற்றும் fuzziness (எழுத்துப் பிழைகளைக் கையாளுதல்) ஆகியவை வெவ்வேறு சிக்கல்களைத் தீர்க்கின்றன. அவற்றை தனித்தனி புலங்களில் வைத்திருப்பது தேவையற்ற குறுக்கீடுகளைத் தவிர்க்கிறது.
- தேடல் குறியீட்டை (search index) உண்மையான தரவு ஆதாரமாக (source of truth) கருத வேண்டாம் – SQLite தான் முதன்மைத் தரவுச் சேமிப்பு; OpenSearch என்பது அதிலிருந்து பெறப்பட்ட, புதுப்பிக்கக்கூடிய ஒரு காட்சி (view) மட்டுமே. இது குறியீடு மாறுபாட்டைத் (index drift) தவிர்க்கிறது மற்றும் தோல்விகளுக்குப் பிறகு மீட்டெடுப்பினை எளிதாக்குகிறது.
- பூஸ்ட் நிலைகள் (Boost tiers) சரிசெய்தலை எளிதாக்குகின்றன – தொடர்புடைய பொருத்தங்களை ஒரே பூஸ்ட் காரணியின் கீழ் கொண்டு வருவதன் மூலம், மாற்றியமைக்க வேண்டிய அளவுருக்களின் (parameters) எண்ணிக்கையைக் குறைக்கலாம்.
அடுத்து கவனிக்க வேண்டியவை
SQLite FTS5-இன் நிரூபிக்கப்பட்ட CJK திறன்களைப் பலிகொடுக்காமல், ஒரு சிறிய OpenSearch அடுக்கு பலமொழி வீடியோ தலைப்புகளுக்கான எழுத்துப் பிழைத் தாங்கும் திறனை வியத்தகு முறையில் மேம்படுத்த முடியும் என்பதை இந்தச் சோதனை நிரூபிக்கிறது. தேடல் பொருத்தம் வீடியோ பார்க்கும் நேரத்தை நேரடியாகப் பாதிக்கும் தளங்களுக்கு, அந்த மேம்பாடு ஒரு குறிப்பிடத்தக்க பயனர் அனுபவ வெற்றியாக அமைகிறது.
