Филтр ва ҷустуҷӯи матни пурра
1) Чаро ба шумо қабати ҷустуҷӯ лозим аст
Филтр ва ҷустуҷӯи пурраи матн (FTS) дастрасии зудро ба маълумот "аз рӯи маъно" таъмин мекунад, на танҳо бо калидҳои ибтидоӣ. Қабати ҷустуҷӯии дуруст тарҳрезишуда иборат аст:- Филтрҳои қатъӣ (категорияҳо, санаҳо, нархҳо, ҳуқуқи дастрасӣ)
- Матни пурра (мувофиқат ва рейтинги лексикӣ)
- Ҷанбаҳо (агрегатҳо барои паймоиш)
- Рейтинги гибридӣ (BM25/TF-IDF + Вектор Embeddings)
- Протоколҳои боэътимод (пагинатсияи курсор, аломати TTL, салиб)
2) Тасвири меъморӣ
Компонентҳо:1. Instest/ETL → нормализатсия, ихтисор кардан, ғанисозӣ, майдонҳои сохтмонӣ барои индексатсия.
2. Индексатсия → индекси баръакс (токенҳо → ҳуҷҷатҳо), сохторҳои сутун, шохиси векторӣ (HNSW/IVF-PQ).
3. Query Layer → таҳлили дархост, истифодаи филтрҳо/ҳуқуқҳои дастрасӣ, ҷадвали shard, якҷояшавии k-way.
4. Ranker → BM25 + LTR/рутбаи нейрон.
5. Хизматрасонии § кэш, курсорҳо, паҳлӯҳо, нуқтаҳо, автокомплет.
6. Мушоҳидакорӣ → таъхир, ченакҳои сифат, таҷрибаҳои A/B.
3) Модели маълумот ва индексатсия
3. 1 Майдонҳо ва таҳлилгарон
Намудҳо: калимаи калидӣ (ҳатто мувофиқат), матн (таҳлил), рақамӣ/сана/гео, вектор.
Таҳлилгарон: токенизатсия, нормализатсия (ҳарфи хурд, Юникод NFKC), филтрҳо (калимаҳо, стемминг/лимматизатсия).
Бисёрзабонӣ: таҳлилгарони ҳар як соҳа (ru, uk, en); Таҳлили ICU; транслитератсия; баррасии диакритика.
3. 2 Индекси баръакс (пароканда)
Сохтор: истилоҳ → рӯйхати ҷойгиркунӣ (DoC ID, истилоҳи freq, вазифаҳо).
Гурӯҳбандӣ: BM25 (ё классикии TF-IDF) бо афзоиши майдон.
3. 3 Индекси векторӣ (зич)
Воридкунии матн (масалан, 384-1024 андоза).
Сохторҳои ANN: HNSW, IVF-PQ, Flat (барои маҷмӯаҳои хурд).
Наздикии косинус/маҳсулоти дохилӣ; BM25 калибрченкунӣ (гибрид).
3. 4 Ҷанбаҳо ва агрегатҳо
Нигоҳдории пешакӣ/сутуни арзишҳо барои ҳисобҳои зуд.
Ҷанбаҳои иерархӣ (категория/зеркатегория).
Диапазонҳо (қуттиҳои нарх, санаҳо).
4) Саволҳо: филтрҳо + матни пурра + навъ
4. 1 Шартномаҳои API (REST)
Дархост:
GET /v1/search? q = classic slots & limit = 20 & cursor =... & sort = score: desc, created _ at: desc
&filters=brand:("NetEnt","EGT"); price:[10 TO 50];published_at:[2024-01-01 TO ]
&facets=brand,year,price:range(0,10,20,50,100)
Ҷавоб (порча):
json
{
"items": [ { "id":"...", "title":"...", "score": 12. 3, "highlight": { "content": ["..."] } } ],
"facets": { "brand": [{"value":"NetEnt","count":123},...] },
"page": { "limit":20, "has_more":true, "next_cursor":"opaque-token" }
}
4. 2 Диаграммаи QL (соддакардашуда)
graphql type Query {
search(query: String!, filter: SearchFilter, first: Int, after: String, sort: [Sort!]): SearchConnection!
}
4. 3 GRPC
proto message SearchRequest {
string query = 1;
map<string,string> filters = 2;
int32 page_size = 3;
string page_token = 4; // курсор repeated string facets = 5;
}
5) Коркарди забони табиӣ (NLP)
Токенизатсия/нормализатсия: баҳисобгирии юникод-бехатар, дефис/апостроф.
Калимаҳои таваққуф: рӯйхати мутобиқсозӣ аз рӯи забон.
Stemming vs lemmatization: барои lemmatization ru/uk беҳтар аст (сифат> суръат).
Синонимҳо: луғатҳои дуҷониба/самтӣ; версияҳои луғат бо TTL.
Typos (номуайян): Дамерау-Левенштейн бо маҳдудияти масофа ва тақвияти дақиқи бозӣ.
N-grams/edge-ngrams: барои худкор ва маслиҳатҳо.
Транслитератсия: "shch ↔" "u", "kyiv/kyiv" - қоидаҳои мукотиба.
6) Аҳамият ва рейтинг
6. 1 Холҳои асосии лексикӣ
BM25 бо танзими 'k1', 'b' аз рӯи маҷмӯа.
Афзудани аз рӯи майдонҳо (title) 3, барчаспҳои 1. 5, бадану 1).
Тару тоза: 'хол + = freshness_boost (вайроншавӣ (created_at))'.
6. 2 Нуктаҳои рафторӣ
Сатҳи клик-клик, вақти истироҳат, сарфа кардани мунтахабҳо (бо bayas зидди мавқеъ).
Deduplication - Stitch якҷоя бо ҳуҷҷатҳо бо мундариҷаи якхела (Min
6. 3 Омӯзиш ба дараҷа (LTR)
Хусусиятҳо: BM25 саҳроӣ, дарозӣ, тару тоза, маъруфият, мувофиқат бо ибора, суръати мавқеъ.
Моделҳо: Lambda .MART/XGB boost; ченакҳои офлайнӣ NDCG @ k, MAP, Precision @ k; онлайн A/B.
6. 4 Neuro-азнавсозӣ
Ду қадам: ёдраскунӣ (BM25/ANN) → top-N (масалан, 200) → rerank cross-encoder.
Баҳисобгирии хароҷот: буҷаи вақт, таназзул бидуни марҳилаи нейро дар зери сарборӣ.
6. 5 Ҷустуҷӯи гибридӣ (пароканда + зич)
Ҳам синтез (ба эътидол овардани суръат ва сум) ё бисёр марҳила (зич ҳамчун rerank).
Калибрченкунӣ муҳим аст: min-max/z-score/харитасозии миқдорӣ.
7) Филтр, паҳлӯҳо ва дастрасӣ
7. 1 Филтрҳо
Операторҳо: '=', 'IN', диапазонҳо, префиксҳо, қуттии гео-пайвандак/гео-масофа.
Омезишҳо: 'AND' аз ҷониби филтрҳо, 'OR' дар доираи маҷмӯи арзишҳо (бренди IN...).
Намуди амният: майдонҳои рақамӣ ҳамчун матн таҳлил карда намешаванд.
7. 2 Ҷабҳаҳо
Ҳисобҳои арзон барои сохторҳои пешакӣ ҳисобшуда.
Ҷанбаҳои "татбиқ" паҳлӯҳои боқимондаи пас аз филтрро нишон медиҳанд.
7. 3 Дастрасӣ/бисёрҳуҷрагӣ
Филтрҳои амниятӣ пеш аз гурӯҳбандӣ (пеш аз филтр) муттаҳид карда мешаванд.
Майдонҳои ABAC/RBAC дар ҳуҷҷат ('иҷорагир _ ид', 'намоён', 'acl').
Аломати дархост имзо шудааст; бо иҷорагир - автоматии 'иҷорагир _ id' filter.
8) Пагинатсия, курсорҳо ва пайдарҳамӣ
Пагинатсия аз рӯи курсор аз рӯи '(хол, галстук)' ё '(created_at, id)' ҳангоми мураттаб кардани вақт.
Ношаффоф 'page _ token' бо HMAC ва TTL.
Мувофиқат: индекси вақти воқеӣ (NRT): таъхир 0. Байни сабт ва намоён 5-2 с. Онро дар SLA ҳуҷҷатгузорӣ кунед.
Кросс-шард: ҷустуҷӯи маҳаллӣ → k-way якҷоя бо фармоиши глобалӣ, курсорҳои ҳар як шард дар нишона.
9) Худмухтор ва таклифҳо
Пешниҳодкунандагон: префикс-трие/edge-ngrams po pol 'title'.
Дархостҳои маъмул: сабти кликҳо → маслиҳатҳо оид ба маъруфият + фардикунонӣ (сегментҳо).
Навъи имло-ҳамчун-шумо: ҷустуҷӯи тези номуайян бо маҳдудияти масофа '<= 1'.
GET /v1/suggest? q=kaz&limit=8&locale=ru
→ ["casino," "casual games,..."]
10) Нуктаҳо ва порчаҳо
Индекси мавқеъӣ → гирифтани ибораҳо бо мувофиқатҳо.
Фирори HTML, маҳдудияти дарозӣ, иттифоқи пораҳои ҳамсоя.
Гурӯҳбандии порчаҳо аз рӯи зичии истилоҳҳои мувофиқ.
11) Иҷро, кэш ва SLO
Индексҳо: сегментҳои гарм дар хотира; постҳои фишурдасозӣ; қиматҳои doc барои паҳлӯҳо.
Кэш: L1 (раванд), L2 (Redis), кэши паҳлӯҳо/агрегатҳо; бо версияи индексатсия хомӯш карда шудааст.
SLO: P95 <150-200 ms дар 'k <= 20', P99 <500 ms; мавҷудияти 99. 9%.
Backpressure: кам кардани 'k', хомӯш кардани марҳилаи нейро ҳангоми изофабор.
Меъёри маҳдудият бо калиди API/корбар/иҷорагир.
12) Нишондиҳандаҳои мушоҳида ва сифат
Нишондиҳандаҳои техникӣ:- 'search _ latency _ ms' (P50/P95/P99), 'qps', 'танаффус', 'хато _ нарх'
- 'cache _ hit _ таносуб', 'facet _ cache _ hit', 'rerank _ share'
- 'shard _ fanout', 'merge _ time _ ms', 'ann _ recall @ k'
- NDCG @ k, MAP, MRR, Recall @ k, Precision @ k дар намунаҳои қайдшуда.
- CTR @ k, SCTR (кликҳои қаноатбахш), вақти зист, отказ (сатҳи погостик).
A/B: ислоҳи ченакҳои "посбон" (ниҳонӣ, хатогиҳо) + ҳадаф (прокси NDCG).
13) Санҷиш
Санҷишҳои воҳиди дахлдор: санҷиши мувофиқати пешбинишуда барои дархостҳои асосӣ.
Дар асоси амвол: муқовимат ба чопҳо/синонимҳо/забонҳо.
Пагинатсия: дар сарҳади саҳифа нусхабардорӣ нест (шартномаҳоро ҷустуҷӯ кунед).
Амният: филтрҳои дастрасӣ ҳамеша истифода мешаванд (ҳатто ҳангоми ҳисоб кардани рӯза).
Регрессияҳои луғат: нусхабардории синонимҳо ва қоидаҳои номуайян.
14) Амният ва махфият
Майдонҳо бо PII ҳамчун матн индексатсия карда намешаванд; алоҳида/рамзгузорӣ нигоҳ доред.
Манбаъҳои захирашударо кам кунед (танҳо мағоза = бардурӯғ, майдонҳои порча).
Махфияти дархост: дархостҳои хомро бо PII сабт накунед; беном/hashing.
Иҷорагир: ҷудокунии қатъии шохис ё ҳатмии 'иҷорагир _ id' filter.
15) Муҳоҷират ва созгорпазирӣ
Схемаи шохиси версия (v1 → v2) бо навиштани дукарата ва гузариши тадриҷӣ.
Мутобиқати таҳлилгар: то ҳол занҷирҳои кӯҳнаро дубора индексатсия накунед.
Гардиши луғатҳои синонимӣ/stopword: 'версия', 'activated _ at', rollback.
16) Дорухатҳои амалӣ
16. 1 Ҷустуҷӯи лексикии классикӣ (BM25)
Майдонҳо: 'title; 3', 'барчаспҳои; 2', 'бадан' 1 '.
Таҳлилгарон: забон-хос + лимматизатсия.
Номуайянӣ барои дархостҳои кӯтоҳ ('<= 3' токенҳо), 'номуайянӣ = 1'.
16. 2 Пардаи гибридӣ + зич
1. Ҷустуҷӯи ANN тавассути ҷобаҷогузории дархост (k = 200)
2. Якҷоя кардан бо top-200 BM25
3. Calibration Rank Fusion
4. Top-N (N = 20) -ро гиред, ихтиёрӣ - рамзгузорро бо буҷаи кофӣ дараҷа диҳед.
16. 3 Паймоиши каталоги паҳлӯ
Филтри сахт аз ҷониби ҳуқуқҳо/иҷорагир
Ҷанбаҳои пас аз филтр (ҳисобҳо, аз ҷумла филтрҳои фаъол)
Аз рӯи аҳамият ё соҳаи тиҷорат (нарх/навоварӣ) ҷудо кунед
17) Дархостҳои намунавӣ (псевдо-DSL)
Филтрҳо ва навъбандӣ:json
{
"query": "live casino,"
"filters": {
"country": ["EE","LV","LT"],
"license": ["MGA","UKGC"],
"launched_at": {"gte": "2023-01-01"}
},
"sort": ["_score:desc","launched_at:desc"],
"facets": ["country","license"],
"page": {"limit": 20, "cursor": "opaque"}
}
Геопоиск:
json
{
"query": "casino",
"geo": {"lat": 59. 437, "lon": 24. 753, "radius_km": 50}
}
Худмухтор:
json
{ "prefix": "evo", "field": "brand_suggest", "limit": 8 }
18) Намунаҳои UX
Микросхемаҳои филтри фаъол + "ҳамаашро барқарор кунед".
Натиҷаҳои холӣ: намоиши "кӯшиш"... (синонимҳо, хориҷ кардани филтр).
Маслиҳатҳои сифр: дархостҳо/категорияҳои маъмул.
Ҷойивазкунии курсор (тугмаи бештар) ва ҳаракатҳои беохир; нишондиҳандаи собитшудаи филтрҳои татбиқшаванда.
Коммутаторҳои ҷудогона "чопҳоро ба назар мегиранд", "мувофиқати дақиқи ибора".
19) Хатогиҳои зуд-зуд ва зидди намунаҳо
Ҳангоми ҷобаҷогузории → дугона/секунҷа ягон галстук нест.
Ҷанбаҳо бидуни назардошти филтрҳои фаъол → ҳисобҳои "бардурӯғ".
Филтрҳои дастрасии баъди дараҷаро татбиқ кунед.
Омезиши забонҳои гуногун бо як таҳлилгар.
Ҷойивазкунии чуқури OFFSET/LIMIT ба ҷои курсор.
Таркиши бемаҳдуд § аз ҷониби ниҳонӣ.
20) Рӯйхати санҷиши амалисозӣ
1. Майдонҳо ва намудҳои онҳоро муайян кунед, таҳлилгаронро ба як маҳал таъин кунед.
2. Тарҳрезии индекси баръакс + (оптҳо.) вектор ANN.
3. Таҳлили дархостро иҷро кунед ва филтрҳои пешакиро бехатар кунед.
4. Барпо кардани BM25 ва пурборкунии саҳро; паҳлӯҳо замима кунед.
5. Ворид кардани курсорҳо (ношаффоф, HMAC, TTL) ва якҷояшавии k-way бо shards.
6. Илова кардани автокомплет, нуқтаҳои муҳим, муҳофизати бехатар.
7. Нишондиҳандаҳо: таъхир, NDCG @ k, CTR; L1/L2 кэш.
8. Чаҳорчӯбаи A/B барои танзими аҳамият.
9. Ҳуҷҷати SLA: Таъхири NRT, маҳдудиятҳои 'маҳдуд', кафолати мувофиқат.
10. Нақшаи муҳоҷират: версияҳои индекс, луғатҳо ва таҳлилгарон.
Филтри хуб тарҳрезишуда ва қабати пурраи матн на танҳо индекси зуд, балки шартномаи возеҳи протокол бо курсорҳо, амният, UX пешгӯишаванда ва аҳамияти ченшаванда мебошад. Ин равиш аз ҳазорҳо то миллиардҳо ҳуҷҷатҳоро васеъ мекунад ва ҳам ҷустуҷӯи классикии лексикӣ ва ҳам сенарияҳои муосири гибридиро бо рейтинги шабакаи нейрон дастгирӣ мекунад.