ਇੱਕ ਡਿਵੈਲਪਰ ਟੀਮ ਨੇ OpenSearch ਨੂੰ SQLite FTS5 ਦੇ ਨਾਲ ਜੋੜਿਆ ਅਤੇ ਵੀਡੀਓ ਸਰਚਾਂ ਵਿੱਚ 'ਜ਼ੀਰੋ-ਰਿਜ਼ਲਟ' (zero-result) ਦੀ ਦਰ ਨੂੰ 11.4 ਪ੍ਰਤੀਸ਼ਤ ਤੋਂ ਘਟਾ ਕੇ 2.1 ਪ੍ਰਤੀਸ਼ਤ ਕਰ ਦਿੱਤਾ, ਅਤੇ ਨਾਲ ਹੀ ਲੇਟੈਂਸੀ (latency) ਨੂੰ 20 ms ਤੋਂ ਘੱਟ ਰੱਖਿਆ। ਹੁਣ ਜਦੋਂ ਯੂਜ਼ਰਸ “blackpink jenny solo stag” ਟਾਈਪ ਕਰਦੇ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਖਾਲੀ ਲਿਸਟ ਦੀ ਬਜਾਏ ਸਹੀ “BLACKPINK Jennie SOLO stage” ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ।
ਬਦਲਾਅ ਦੀ ਲੋੜ ਕਿਉਂ ਸੀ
ਇੱਕ ਵੀਡੀਓ-ਹੋਸਟਿੰਗ ਪਲੇਟਫਾਰਮ ਦੇ ਸਰਚ ਲੌਗਸ (search logs) ਤੋਂ ਇੱਕ ਵਾਰ-ਵਾਰ ਹੋ ਰਹੀ ਸਮੱਸਿਆ ਦਾ ਪਤਾ ਲੱਗਾ: ਲਾਟਿਨ-ਸਕ੍ਰਿਪਟ (Latin-script) ਦੇ ਟਾਈਟਲ ਵਿੱਚ ਇੱਕ ਇਕਲੌਤੀ ਟਾਈਪੋ (typo) ਸਾਰੇ ਮੈਚਾਂ ਨੂੰ ਖਤਮ ਕਰ ਸਕਦੀ ਸੀ। SQLite ਦਾ FTS5 ਐਕਸਟੈਂਸ਼ਨ, ਜੋ ਚੀਨੀ, ਜਾਪਾਨੀ ਅਤੇ ਕੋਰੀਅਨ (CJK) ਟੈਕਸਟ ਵਿੱਚ ਸਬ-ਸਟ੍ਰਿੰਗਾਂ (substrings) ਨੂੰ ਮੈਚ ਕਰਨ ਦੀ ਆਪਣੀ ਯੋਗਤਾ ਲਈ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਫਜ਼ੀ ਮੈਚਿੰਗ (fuzzy matching) ਨਹੀਂ ਕਰਦਾ। ਨਾਮ ਜਾਂ ਗੀਤ ਦੇ ਟਾਈਟਲ ਵਿੱਚ ਇੱਕ ਗਲਤ ਅੱਖਰ ਪੂਰੀ ਕੁਐਰੀ (query) ਨੂੰ ਵਿਗਾੜ ਦਿੰਦਾ ਹੈ।
ਮੌਜੂਦਾ ਪਾਈਪਲਾਈਨ SQLite ਨੂੰ ਇਕਲੌਤੇ ਇੰਡੈਕਸ ਵਜੋਂ ਵਰਤ ਰਹੀ ਸੀ। ਇਹ CJK ਕੁਐਰੀਆਂ ਨੂੰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸੰਭਾਲਦੀ ਸੀ ਪਰ ਲਾਟਿਨ-ਸਕ੍ਰਿਪਟ ਦੇ ਟਾਈਪੋ ਲਈ ਕੋਈ ਸੁਰੱਖਿਆ (safety net) ਨਹੀਂ ਸੀ। ਇਸ ਲਈ, ਟੀਮ ਨੇ ਇੱਕ ਅਜਿਹੇ ਪੂਰਕ ਸਰਚ ਇੰਜਣ ਦੀ ਭਾਲ ਕੀਤੀ ਜੋ ਸਾਬਤ ਹੋ ਚੁੱਕੇ FTS5 ਲੇਅਰ ਨੂੰ ਹਟਾਏ ਬਿਨਾਂ ਟਾਈਪੋ ਟੋਲਰੈਂਸ (typo tolerance) ਪ੍ਰਦਾਨ ਕਰ ਸਕੇ।
OpenSearch ਨੂੰ ਕਿਵੇਂ ਜੋੜਿਆ ਗਿਆ
OpenSearch ਇੱਕ ਫਰੰਟ-ਲਾਈਨ ਸਰਚ ਸਰਵਿਸ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ; SQLite ਅਸਲ ਸਰੋਤ (source of truth) ਵਜੋਂ ਬਣਿਆ ਰਹਿੰਦਾ ਹੈ। ਦੋਵੇਂ ਪ੍ਰਣਾਲੀਆਂ ਸਮਾਂਤਰ (parallel) ਚੱਲਦੀਆਂ ਹਨ: OpenSearch ਪਹਿਲਾਂ ਯੂਜ਼ਰ ਦੀ ਕੁਐਰੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਅਤੇ ਜੇਕਰ ਇਹ ਕਾਫ਼ੀ ਤੇਜ਼ੀ ਨਾਲ ਜਵਾਬ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਇਸਦੇ ਨਤੀਜੇ ਦਿਖਾਏ ਜਾਂਦੇ ਹਨ। ਜੇਕਰ OpenSearch ਦਾ ਸਮਾਂ ਖਤਮ (time out) ਹੋ ਜਾਂਦਾ ਹੈ ਜਾਂ ਕੋਈ ਗਲਤੀ ਆਉਂਦੀ ਹੈ, ਤਾਂ ਰਿਕਵੈਸਟ SQLite FTS5 ਇੰਡੈਕਸ 'ਤੇ ਵਾਪਸ ਚਲੀ ਜਾਂਦੀ ਹੈ। ਇਹ "ਫੇਲ-ਸੇਫ" (fail-safe) ਡਿਜ਼ਾਈਨ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਨੈੱਟਵਰਕ ਦੀ ਕੋਈ ਵੀ ਖਰਾਬੀ ਸਰਚ ਬਾਰ ਨੂੰ ਕਦੇ ਵੀ ਖਾਲੀ ਨਹੀਂ ਛੱਡੇਗੀ।
ਮਲਟੀ-ਫੀਲਡ ਮੈਪਿੰਗ (Multi-field mapping)
OpenSearch ਵਿੱਚ ਹਰੇਕ ਵੀਡੀਓ ਟਾਈਟਲ ਨੂੰ ਤਿੰਨ ਤਰੀਕਿਆਂ ਨਾਲ ਇੰਡੈਕਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ:
- title.std – ASCII folding ਦੇ ਨਾਲ ਇੱਕ ਸਟੈਂਡਰਡ ਐਨਾਲਾਈਜ਼ਰ (standard analyzer) ਦੁਆਰਾ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਐਕਸੈਂਟਡ (accented) ਅੱਖਰਾਂ ਨੂੰ ਨਾਰਮਲਾਈਜ਼ ਕਰਦਾ ਹੈ ਅਤੇ ਜ਼ਿਆਦਾਤਰ ਲਾਟਿਨ-ਸਕ੍ਰਿਪਟ ਟਾਈਪੋ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
- title.cjk – ਇੱਕ CJK ਐਨਾਲਾਈਜ਼ਰ ਦੁਆਰਾ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੋ ਬਾਈਗ੍ਰਾਮਸ (bigrams - ਦੋ-ਅੱਖਰਾਂ ਵਾਲੇ ਟੋਕਨ) ਬਣਾਉਂਦਾ ਹੈ। ਇਹ ਉਸ ਸਬ-ਸਟ੍ਰਿੰਗ-ਮੈਚਿੰਗ ਸ਼ਕਤੀ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ ਜੋ FTS5 ਏਸ਼ੀਆਈ ਲਿਪੀਆਂ ਲਈ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
- title.keyword – ਐਕਜ਼ੈਕਟ-ਮੈਚ ਲੁੱਕ-ਅੱਪ ਅਤੇ ਸੌਰਟਿੰਗ ਲਈ ਬਿਨਾਂ ਕਿਸੇ ਬਦਲਾਅ ਦੇ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਵੱਖ-ਵੱਖ ਫੀਲਡਾਂ ਕੁਐਰੀ ਨੂੰ ਟੋਕਨਾਈਜ਼ੇਸ਼ਨ (tokenisation) ਰਣਨੀਤੀਆਂ ਨੂੰ ਮਿਲਾਏ ਬਿਨਾਂ ਹਰੇਕ ਲਿਪੀ 'ਤੇ ਸਹੀ ਵਿਸ਼ਲੇਸ਼ਣ ਲਾਗੂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀਆਂ ਹਨ।
ਬੂਸਟ ਟਾਇਰਜ਼ (Boost tiers)
ਇੱਕ ਸਿੰਗਲ ਮੋਨੋਲਿਥਿਕ ਕੁਐਰੀ ਦੀ ਬਜਾਏ, ਟੀਮ ਨੇ ਇੱਕ ਟਾਇਰਡ ਕੁਐਰੀ ਬਣਾਈ ਜੋ ਨਤੀਜਿਆਂ ਨੂੰ ਆਪਣੇ ਆਪ ਰੈਂਕ ਕਰਦੀ ਹੈ:
title.keyword'ਤੇ ਐਕਜ਼ੈਕਟ ਫਰੇਜ਼ ਮੈਚ (Exact phrase matches) ਨੂੰ ਸਭ ਤੋਂ ਵੱਧ ਬੂਸਟ ਮਿਲਦਾ ਹੈ, ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਹੀ ਮੈਚ ਲਿਸਟ ਵਿੱਚ ਸਭ ਤੋਂ ਉੱਪਰ ਰਹਿਣ।title.cjk'ਤੇ CJK ਬਾਈਗ੍ਰਾਮ ਮੈਚ (CJK bigram matches) ਨੂੰ ਮੱਧਮ ਬੂਸਟ ਮਿਲਦਾ ਹੈ, ਜੋ
ਪ੍ਰਯੋਗ ਇਹ ਸਾਬਤ ਕਰਦਾ ਹੈ ਕਿ ਇੱਕ ਮਾਮੂਲੀ OpenSearch ਲੇਅਰ, SQLite FTS5 ਦੀਆਂ ਸਾਬਤ ਹੋਈਆਂ CJK ਸਮਰੱਥਾਵਾਂ ਨਾਲ ਸਮਝੌਤਾ ਕੀਤੇ ਬਿਨਾਂ, ਬਹੁ-ਭਾਸ਼ਾਈ ਵੀਡੀਓ ਟਾਈਟਲਜ਼ ਲਈ ਲਿਖਣ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਸਹਿਣ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਨੂੰ ਕਾਫ਼ੀ ਹੱਦ ਤੱਕ ਸੁਧਾਰ ਸਕਦੀ ਹੈ। ਉਹਨਾਂ ਪਲੇਟਫਾਰਮਾਂ ਲਈ ਜਿੱਥੇ ਸਰਚ ਦੀ ਪ੍ਰਸੰਗਿਕਤਾ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਦੇਖਣ ਦੇ ਸਮੇਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ, ਉਹ ਸੁਧਾਰ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਵਿੱਚ ਇੱਕ ਠੋਸ ਜਿੱਤ ਵਿੱਚ ਬਦਲ ਜਾਂਦਾ ਹੈ।
