GH GambleHub

Ֆիլտրում և ամբողջական որոնում

1) Ինչո՞ ւ է անհրաժեշտ որոնման շերտը

Ֆիլտրը և ամբողջական տեքստային որոնումը (FFC) ապահովում են արագ հասանելիություն տվյալների «իմաստով», և ոչ միայն առաջնային բեկորների վրա։ Որոնման ճիշտ նախագծված շերտը համատեղում է

Խիստ ֆիլտրեր (կատեգորիաներ, ամսաթվեր, գներ, հասանելիության իրավունքներ)

Լիխտեքստ (լեքսիկ խաղ և ռենջացիա)

Ֆասետներ (նավարկության ագրեգատներ)

Հիբրիդային դասակարգում (BM25/TF-IDF + վեկտորային սաղմեդդինգներ)

Հուսալի արձանագրություններ (պագինացիա կուրսորների, TTL Տոկենի, Քրոս Շարդինգի)

2) Ճարտարապետական նկարը

Բաղադրիչները

1. Ingest/ETL-ն պարունակում է նորմալացում, deduplication, հարստացում, դաշտերի կառուցում ինդեքսի համար։

2. Ինդեքսատորը հաստատեց հակադարձ ինդեքսը (lexems), կոլոնային կառուցվածքները, վեկտորային ինդեքսը (HNSW/IVF-PQ)։

3. Query Layer-ը բացատրում է հարցումների պարսերը, ֆիլտրերի/մուտքի իրավունքների օգտագործումը, շարքերի պլանավորողը, k-way merge-ը։

4. Ranker no BM25 + (op.) LTR/Neural re-rank.

5. Serving winkash, կուրսորներ, ֆասետներ, hailyts, ավտոնիտիտ։

6. Լատենտության, որակի, A/B փորձարկումների հաճախականությունը։

3) Տվյալների և ինդեքսի մոդելը

3. 1 Դաշտեր և վերլուծողներ

Տեսակներ ՝ keyword (հավասար զուգադիպություն), numeric/date/geo, vector։

Վերլուծողները 'թունավորում, նորմալացում (lowercae, Unicode NFKC), ֆիլտրեր (stop-բառեր, stemming/lemmatization)։

Բազմալեզու 'per-field վերլուծողներ (ru, uk, en); ICU վերլուծություն; տրանսլիտերացիա; Ռուսական դիակրիտիկներ։

3. 2 Հակադարձ ինդեքսը (sparse)

Կառուցվածքը ՝ term www.posting list (docID, term freq, դիրքեր)։

Ռանգինգը 'BM25 (կամ դասական TF-IDF) դաշտային բուստերով։

3. 3 Վեկտորային ինդեքսը (dense)

Տեքստի էմբեդինգները (օրինակ ՝ 244-1024-չափավոր)։

ANN կառուցվածքները ՝ HNSW, IVF-PQ, Flat (փոքր հավաքածուների համար)։

Կոսինուսի հարևանությունը/inner prot; տրամաչափը BM25-ից (հիբրիդ)։

3. 4 Ֆասետներ և ագրեգատներ

Precompute/հսկայական արժեքներ արագ count-ների համար։

Հիերարխիկ ֆասետներ (կատեգորիա/ենթատեգորիա)։

Միջանցքները (արժեքավոր բիններ, ամսաթվերը)։

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 GraphQL (պարզեցված)

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)

Տոկենիզացիա/նորմալացում ՝ Unicode-անվտանգ, դեֆիսի/ապոստրոֆների բարձրացում։

Stop-բառերը 'լեզուների տրամադրության ցուցակներ։

Stemmming vs lemmatization: ru/uk-ի համար ավելի լավ է լեմմատիզացումը (որակը> արագություն)։

Հոմանիշներ ՝ երկվորյակ/ուղղիչ բառարաններ։ բառարանների տարբերակները TTL-ից։

Տպագրությունները (fuzzy): Damerau-Levronhtein-ը, հեռավորության սահմանափակումով և ճշգրիտ համընկնման թփերով։

N-grams/edge-ngrams: ավտորիտիտի և հուշումների համար։

Տրանսսլիտերացիա ՝ "shch" noved "," kiev/ky.ru "- ագրեսիայի կանոնները։

6) Ռելեվանտիզմը և դասակարգումը

6. 1 Հիմնական lextic corping

BM25 պարամետրով 'k1', «b» հավաքածուի վրա։

Թփերը դելմ (title ^ 3, tags ^ 1։ 5, body^1).

Թարմ '«score + = freshness _ boost (decay (created _ at)»։

6. 2 Վարքագծային ազդանշաններ

Click-through rate, www.elll time, պահպանեք ընտրված (հակա-դիրքային բայասի հետ)։

Deduplications: Փաստաթղթերի սկլանավորումը համապատասխան նույնական պարունակությամբ (MinHash/SimHash)։

6. 3 Learning-to-Rank (LTR)

Ֆիչին ՝ BM25, երկարությունը, թարմությունը, ժողովրդականությունը, արտահայտության համընկնումը, դիրքային ժայռը։

Մոդելներ ՝ Lambert MART/XGBoost; NDCG @ k, MAP, Precision @ k; Առցանց A/B

6. 4 Նյարդային փոխակերպում

Երկու էթապկա ՝ recall (BM25/ANN) www.top-N (օրինակ, 200) www.cross-encoder rerank։

Արժեքի բարձրացումը 'թայմ բյուջե, fallback առանց նյարդային փուլի բեռի։

6. 5 Ստացիոնար որոնում (sparse + dense)

Կամ fusion (ոսկորների և գումարի նորմալացում) կամ multi-stage (dense որպես rerank)։

Տրամաչափումը կարևոր է ՝ min-max/z-score/quantile mapping։

7) Ֆիլտրը, ֆասետները և հասանելիությունը

7. 1 Ֆիլտրեր

Օպերատորներ ՝ «=», «IN», միջակայքներ, նախածանցներ, geo-bounding bant/geo-distae։

Համադրություններ ՝ «AND» ֆիլտրերի վրա, «OR» բազմաթիվ արժեքների ներսում (brand IN...)։

Այսպիսով, թվային դաշտերը չեն վերլուծվում որպես տեքստ։

7. 2 Ճակատներ

Էժան կոունտ-ները կանխատեսելի կառուցվածքներով։

«Օգտագործված» ֆասետները ցույց են տալիս մնացած տարբերակները (post-inter faceting)։

7. 3 Մուտք/մուլտֆիլմ-տենանտիզմ

Անվտանգության ֆիլտրերը ինտեգրվում են մինչև դասակարգումը (pre-inter)։

ABAC/RBAC դաշտերը փաստաթղթում («tenom _ id», «visibility», «acl»)։

Թոկենը ստորագրվել է. multi tenante - ավտոմատ 'tenium _ id' ֆիլտրը։

8) Պագինացիա, կուրսորներ և կոնսիստենտություն

«(score, tie-breaker)» կամ «(created _ at, id)» ժամանակի տեսակավորման ժամանակ։

Անթույլատրելի «page _ token 'c HMAC և TTL»։

Կոնսիստենտություն ՝ near-real-time (NRT) ինդեքսի ինդեքսը '0 ուշացում։ 5-2 հետ ձայնագրման և տեսանելիության միջև։ Փաստաթղթավորեք դա SLA-ում։

Քրոս Շարդ 'տեղական որոնումը www.k-way merge-ը գլոբալ կարգի, per-shard դասընթացների վրա։

9) Ավտոմատացում և հուշումներ

Suggesters: prefix-trie / edge-ngrams по полю `title`.

Popular queries: Տեսահոլովակների լոգը ցույց է տալիս, որ հայտնի է + կերպարիզացիա (հատվածներ)։

Spell-as-type-ը արագ fuzzy-որոնումն է, որը սահմանափակվում է «<= 1» հեռավորությամբ։

REST-ի օրինակ


GET /v1/suggest? q=kaz&limit=8&locale=ru
→ ["casino," "casual games,..."]

10) Հայլայթ և նեպետներ

Դիրքային ինդեքսը բացատրում է ֆրազների ներարկումը զուգադիպությունների հետ։

HTML-ի էկրանավորումը, երկարության սահմանը, հարևան բեկորների միավորումը։

Նեպետների դասակարգումը ռևլանտային տերմինների խտության վրա։

11) Արտադրողականությունը, քեշը և SLO-ն

Ինդեքսներ 'տաք հատվածներ հիշողության մեջ։ postings; doc values ճակատների համար։

Քաշ 'L1 (գործընթացը), L2 (Redis), ֆասետների/ագրեգատների կաշ; հաշմանդամացնել ըստ ինդեքսի։

SLO: P95 <150-200 ms «k <= 20», P99 <500 ms; 99 հասանելիություն։ 9%.

Backpressure: նվազում է 'k', նյարդային փուլի անջատումը ծանրաբեռնվածության ժամանակ։

Rate limiting-ը API/օգտագործողի/tenault-ի բանալին։

12) Դիտողություններ և հատկություններ

Տեխնոմետրիկներ

`search_latency_ms` (P50/P95/P99), `qps`, `timeouts`, `error_rate`

`cache_hit_ratio`, `facet_cache_hit`, `rerank_share`

`shard_fanout`, `merge_time_ms`, `ann_recall@k`

Որակը (offline)

NDCG @ k, MAP, MRR, Recall @ k, Precision @ k տարբերակված նմուշների վրա։

Առցանց

CTR@k, sCTR (satisfied clicks), dwell time, отказ (pogostick rate).

A/B: Գրեք «guardrail» (լատենտ, սխալներ) + 108 (NDCG proxy)։

13) Թեստավորում

Relevensit untes.ru: Ակնկալվող դեղամիջոցների ստուգումը հիմնական պահանջներով։

Property-based-ը 'տպագրությունների դիմադրություն/հոմանիշներ/լեզուներ։

Պագինացիա 'կրկնօրինակների բացակայություն էջերի սահմանին (seek պայմանագրեր)։

Անվտանգությունը 'հասանելիության ֆիլտրերը միշտ օգտագործվում են (նույնիսկ faset-count)։

Բառարանների ռեգրեսները 'հոմանիշների տարբերակումը և ֆուզզիի կանոնները։

14) Անվտանգությունն ու գաղտնիությունը

PII-ի հետ դաշտերը չեն ինդեքսավորվել որպես ռուսական; պահել առանձին/ծածկագրել։

Նվազագույնի հասցնել պահպանված սկզբնական տեքստերը (store = false, միայն հատիկների դաշտերը)։

Query privacy: Մի տրամաբանեք հացի հարցումները PII-ի հետ։ անանուն/հեշթինգ։

Multi-tenant-ը ինդեքսների խիստ մեկուսացումն է կամ պարտադիր 'tenium _ id' ֆիլտրը։

15) Մոսկվան և համատեղելիությունը

Ինդեքսի սխեմայի տարբերակումը (v1 71 v2) կրկնակի ձայնագրությամբ և աստիճանական անցումով։

Վերլուծողների համատեղելիությունը 'պահել հին շղթաները դեռ չեն փոխակերպվում։

Հոմանիշների/ստոպի բառերի բառարանների լուծարումը '«version», «activated _ at», rollback։

16) Գործնական բաղադրատոմսեր

16. 1 Դասական լեքսիկ որոնում (BM25)

Դաշտեր ՝ «title ^ 3», «tags ^ 2», «body ^ 1»։

Վերլուծողներ 'հատուկ լեզուն + լեմմատիզացիա։

Fuzzy-ը կարճ հարցումների համար («<= 3»), «fuzziness = 1»։

16. 2 Հիբրիդ sparse + dense

1. ANN որոնում է հարցման սաղմդինգը (k = 200)

2. Միավորել top-200 BM25

3. Տրամաչափել և փակցնել (Reciprocal Rank Fusion)

4. Վերցրեք top-N (N = 20), oporational - rerank cross-encoder-ը բավարար հաճախականությամբ։

16. 3 Ճակատային նավարկություն

Կոշտ pre-inter իրավունքների/tenantu

Փոստի ֆիլտրային ֆասետները (counts, հաշվի առնելով ակտիվ ֆիլտրերը)

Տեսակավորումը 'ռելեվանտությամբ կամ բիզնես դաշտով (գինը/նորություն)

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-patterns

Ակտիվ ֆիլտրերի չիպերը + «նետել ամեն ինչ»։

Դատարկ արդյունքներ 'ցույց տալ «փորձեք...» (հոմանիշ, ֆիլտրը հեռացնել)։

«Նշումներ զրոյի ժամանակ» 'հայտնի հարցումներ/կատեգորիաներ։

Պագինազիան կուրսով (կոճակ «Դեռ») և անվերջ սկրոլը։ օգտագործված ֆիլտրերի ֆիքսված ցուցիչը։

«Հաշվի առնել տպագրությունները», «արտահայտության ճշգրիտ համընկնում»։

19) Հաճախակի սխալներ և հակատիպեր

Tie-breaker-ի բացակայությունը wwww.duble/Skaker-ի տեսակավորման ժամանակ։

Ֆասետները առանց հաշվի առնելու ակտիվ ֆիլտրերը «կեղծ» կոունտսը։

Մուտքի ֆիլտրերի օգտագործումը դասակարգումից հետո։

Տարբեր լեզուների խառնուրդը մեկ վերլուծություն է։

MSSET/LIMIT խորը պագինացիա seek-կուրսորի փոխարեն։

Անսահմանափակ fuzzy-ը ցույց է տալիս լատենտության պայթյունը։

20) Ներդրման չեկլիստ

1. Դաշտերի իրականացումը և նրանց տեսակները, նշանակեք per-entale վերլուծողներ։

2. Նախագծեք հակադարձ ինդեքսը + (opc.) վեկտորային ANN։

3. Իրականացրեք հարցումների պարսերը և անվտանգ հասանելիության ֆիլտրերը (pre-inter)։

4. Patte BM25 և դաշտային թփեր; միացրեք ճակատները։

5. Մուտքագրեք կուրսորները (opaque, HMAC, TTL) և k-way merge շարդերով։

6. Ավելացրեք ավտորիտիտը, հայելթները, անվտանգ էկրանավորումը։

7. Մետրիկները ՝ լատենտություն, NDCG @ k, CTR; kash L1/L2։

8. A/B-ֆրեյմորքը ռելեվանտիզմի թյունինգի համար։

9. Փաստաթղթավորեք SLA: NRT ուշացում, limit ", կոնսիստենտության երաշխիք։

10. Միգրացիայի պլանը 'ինդեքսի, բառարանների և վերլուծողների տարբերակները։

Ֆիլտրի և ամբողջական որոնման լավ նախագծված շերտը ոչ միայն արագ ինդեքսն է, այլ նաև հստակ պրոտոկոլային պայմանագիրը կուրսորների, անվտանգության, կանխատեսելի UX-ի և չափված ռելեվանտիզմի հետ։ Այս մոտեցումը մեծանում է հազարից միլիարդավոր փաստաթղթերից և աջակցում է ինչպես դասական լեքսիկ որոնումը, այնպես էլ ժամանակակից հիբրիդային սցենարները նյարդային դասակարգման հետ։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։