ఒక వీడియో-హోస్టింగ్ సర్వీస్ వెనుక ఉన్న ఇంజనీరింగ్ టీమ్, తన SQLite FTS5 ఇండెక్స్‌ను OpenSearch క్లస్టర్‌తో మార్చింది. దీనివల్ల ఫలితం లేని (zero-result) క్వెరీల శాతం 12% నుండి 1.4%కి తగ్గింది మరియు లేటెన్సీ (latency) 28 ms కంటే తక్కువగా ఉంచుతూనే, సెర్చ్-టు-క్లిక్ రేటును 9% పెంచింది.

ఈ మార్పు ఎందుకు అత్యవసరమైంది

SQLite యొక్క ఫుల్-టెక్స్ట్ సెర్చ్ ఎక్స్‌టెన్షన్ (FTS5) ఆకర్షణీయంగా ఉంటుంది: ఇది మిగిలిన డేటాతో పాటు ఒకే ఫైల్‌లో ఉంటుంది, దీనికి లైసెన్సింగ్ ఖర్చు ఉండదు మరియు ఖచ్చితమైన టోకెన్ మ్యాచ్‌ల కోసం వెంటనే ఫలితాలను అందిస్తుంది. అయితే, ప్లాట్‌ఫారమ్ లాగ్స్ ప్రకారం, పది శాతం మంది వినియోగదారులు చేసే సెర్చ్‌లకు ఎటువంటి ఫలితాలు రావడం లేదు. "intersteller" లేదా "avengrs endgame" వంటి స్పెల్లింగ్ తప్పులు – అంటే మొబైల్ కీబోర్డ్‌లపై ప్రజలు చేసే టైపోలు – దీనికి ప్రధాన కారణం.

ట్రిగ్రామ్స్ (మూడు అక్షరాల ముక్కలు) ఉపయోగించి చేసిన ఒక చిన్న ప్రయత్నం (hack), ఫలితం లేని సెర్చ్ రేటును 7%కి తగ్గించింది, కానీ రెండు సమస్యలను సృష్టించింది. మొదటిది, ఇండెక్స్ పరిమాణం దాని అసలు పరిమాణం కంటే మూడు రెట్లు పెరిగిపోయింది, దీనివల్ల స్టోరేజ్ ఖర్చులు పెరగడమే కాకుండా అప్‌డేట్‌లు కూడా నెమ్మదించాయి. రెండవది, రిలెవెన్స్ (relevance) దెబ్బతింది; ఫజీ మ్యాచింగ్ (fuzzy matching) సంబంధం లేని వీడియోల మిశ్రమాన్ని చూపించడం వల్ల వినియోగదారులు గందరగోళానికి గురయ్యారు.

నేటివ్ టైపో-టాలరెన్స్ (typo-tolerance) మరియు అధునాతన రిలెవెన్స్ స్కోరింగ్ కలిగిన, ప్రత్యేకంగా రూపొందించబడిన సెర్చ్ ఇంజిన్ అవసరమని టీమ్ నిర్ణయించింది.

OpenSearch పైప్‌లైన్‌ను నిర్మించడం

SQLiteని సోర్స్ ఆఫ్ ట్రూత్ (source of truth)గా ఉంచడం

OpenSearch ఒక డిస్పోజబుల్, రీడ్-ఓన్లీ రెప్లికాగా పనిచేస్తుంది. వీడియో మెటాడేటా అంతా SQLiteలోనే ఉంటుంది; డేటా నష్టం జరిగే ప్రమాదం లేకుండా సెర్చ్ ఇండెక్స్‌ను మళ్ళీ నిర్మించవచ్చు. ఒకవేళ OpenSearch క్లస్టర్ డౌన్ అయితే, అప్లికేషన్ ఆటోమేటిక్‌గా పాత FTS5 ఇంజిన్‌కు మారుతుంది.

“should” క్వెరీతో లేయర్డ్ రిలెవెన్స్ (Layered relevance)

కేవలం ఫజీ మ్యాచింగ్ మీద మాత్రమే ఆధారపడకుండా, క్వెరీ మూడు క్లాజులను (clauses) కలిపి రూపొందించబడింది:

  • Exact phrase match – అత్యధిక బూస్ట్, టైటిల్‌ను సరిగ్గా టైప్ చేసిన వినియోగదారులకు ప్రాధాన్యత ఇస్తుంది.
  • All terms present – మధ్యస్థ బూస్ట్, ప్రతి పదం కనిపిస్తున్నప్పటికీ క్రమం తప్పిన క్వెరీలను కూడా గుర్తిస్తుంది.
  • Fuzzy match – తక్కువ బూస్ట్, స్పెల్లింగ్ తప్పులు ఉన్న టోకెన్ల కోసం ఒక సేఫ్టీ నెట్‌గా పనిచేస్తుంది.

ఈ క్రమానుగత పద్ధతి (hierarchy) ఖచ్చితమైన క్వెరీల కోసం ప్రిసిషన్ (precision)ను కాపాడుతూనే, టైపోల కోసం ఒక సులభమైన ప్రత్యామ్నాయాన్ని అందిస్తుంది.

ఫజీ సెట్టింగ్స్‌ను ట్యూన్ చేయడం

ప్రిఫిక్స్ లెంగ్త్ (prefix length) 1 గా ఉండటం వల్ల, ఫజీ లాజిక్ పనిచేయడానికి ముందు ప్రతి పదం యొక్క మొదటి అక్షరం తప్పనిసరిగా మ్యాచ్ అవ్వాలి. ఈ నియమం సెర్చ్ వేగంగా ఉండేలా చూస్తుంది మరియు మెమరీపై భారం పడేలా చేసే అసంఖ్యాకమైన పదాలను నిరోధిస్తుంది. వనరుల వినియోగం పెరగకుండా ఉండటానికి, టీమ్ టర్మ్ ఎక్స్‌పాన్షన్స్ (term expansions) యొక్క గరిష్ట సంఖ్యను కూడా పరిమితం చేసింది.

సింక్రొనైజేషన్ వ్యూహం (Synchronisation strategy)

OpenSearch ఇండెక్స్‌ను SQLiteతో అనుసంధానంగా ఉంచడానికి మూడు అనుబంధ ప్రక్రియలు ఉన్నాయి:

  • కొత్త డేటాను సింక్ చేయడానికి ఒక cron job.
  • నైట్లీ డిఫ్ పాస్ (Nightly diff pass) – ఇన్‌క్రిమెంటల్ అప్‌డేట్స్‌లో మిగిలిపోయిన తేడాలను (mismatches) స్కాన్ చేస్తుంది.
  • వీక్లీ ఫుల్ రీబిల్డ్ (Weekly full rebuild) – ఇది ఒక ఇండెక్స్ ఏలియాస్ (index alias) వెనుక నడుస్తుంది, ఆపై ఒకే ఆపరేషన్‌లో ఏలియాస్‌ను మారుస్తుంది, దీనివల్ల డౌన్‌టైమ్ ఉండదు.

రెండు వారాల తర్వాత కనిపించిన ఫలితాలు

  • ఫలితం లేని క్వెరీల శాతం 12% నుండి 1.4%కి తగ్గింది.
  • సెర్చ్-టు-క్లిక్ కన్వర్షన్ 9% పెరిగింది.
  • మీడియన్ లేటెన్సీ (Median latency) 28 ms కంటే తక్కువగా ఉంది, ఇది ప్లాట్‌ఫారమ్ యొక్క యూజర్-ఎక్స్‌పీరియన్స్ లక్ష్యానికి అనుగుణంగా ఉంది.

జాగ్రత్తలు మరియు ఇతర అంశాలు

ఈ మైగ్రేషన్ అనేది కేవలం ప్లగ్-అండ్-ప్లే అప్‌గ్రేడ్ కాదు. ప్రైమరీ డేటాబేస్‌ను సెర్చ్ ఇంజిన్‌తో ఎప్పుడూ భర్తీ చేయకూడదని టీమ్ నొక్కి చెబుతోంది; వీడియో మెటాడేటా అంతటికీ SQLite మాత్రమే అధికారిక స్టోరేజ్ (authoritative store)గా ఉంటుంది.

ముగింపు

ప్రత్యేకంగా రూపొందించబడిన సెర్చ్ ఇంజింగ్ ద్వారా టైపో-టాలరెన్స్‌ను జోడించడం వల్ల, వినియోగదారుల ప్రయాణంలో ఎదురయ్యే అడ్డంకులు తొలగిపోయి, ఒక సులభమైన మరియు వేగవంతమైన అనుభవం లభించింది. రిలేషనల్ స్టోర్‌ను సోర్స్ ఆఫ్ ట్రూత్‌గా ఉంచడం, రిలెవెన్స్‌ను లేయర్‌లుగా విభజించడం మరియు ఫజీ లాజిక్‌ను సురక్షితంగా ఉంచడం వంటి క్రమబద్ధమైన ఆర్కిటెక్చర్ ద్వారా, స్థిరత్వాన్ని కోల్పోకుండానే గణనీయమైన లాభాలను పొందవచ్చని ఈ కేస్ స్టడీ నిరూపిస్తోంది.

మూలం: https://dev.to/ahmet_gedik778845/migrating-video-title-search-from-sqlite-fts5-to-opensearch-fuzzy-queries-4bhj