GH GambleHub

Süzgüç we doly tekst gözlemek

1) Näme üçin gözleg gatlagy gerek?

Süzgüç we doly tekst gözlemek (FTS) diňe bir esasy açarlar boýunça däl-de, "manysy boýunça" maglumatlara çalt elýeterliligi üpjün edýär. Dogry dizaýn edilen gözleg gatlagy:
  • Berk süzgüçler (kategoriýalar, seneler, bahalar, elýeterlilik hukuklary)
  • Doly söz (leksiki oýun we reýting)
  • Fasetler (nawigasiýa üçin agregatlar)
  • Gibrid reýting (BM25/TF-IDF + wektor embeddingleri)
  • Ygtybarly teswirnamalar (kursorlar, TTL bellikleri, kross-sharding)

2) Binagärlik suraty

Komponentler:

1. Ingest/ETL → kadalaşmak, de-duplikasiýa, baýlaşdyrmak, indeks üçin meýdanlary gurmak.

2. Indeksator → ters indeks (leksemler → resminamalar), sütün gurluşlary, wektor indeksi (HNSW/IVF-PQ).

3. Query Layer → Soraglar parseri, süzgüçleri/giriş hukuklaryny ulanmak, şard meýilleşdiriji, k-way merge.

4. Ranker → BM25 + (ops.) LTR/Neural re-rank.

5. Serving → keş, kursorlar, fasetler, highlightlar, awtokompletler.

6. Syn edilişi → gizlinlik metrikasy, hil, A/B-synaglary.

3) Maglumatlaryň we indeksiň nusgasy

3. 1 Meýdanlar we analizatorlar

Görnüşleri: keyword (tekiz gabat gelmek), text (seljerilýär), numeric/date/geo, vector.
Analizatorlar: tokenizasiýa, kadalaşma (lowercase, Unicode NFKC), süzgüçler (stemming/lemmatizasiýa).
Köp dillilik: per-field analizatorlary (ru, uk, en); ICU-analiz; transliterasiýa; diakritikany hasaba almak.

3. 2 Ters indeks (sparse)

Gurluşy: term → posting list (docID, term freq, pozisiýalar).
Reýting: BM25 (ýa-da nusgawy TF-IDF).

3. 3 Wektor indeksi (dense)

Tekstiň embeddingleri (mysal üçin 384-1024-ölçegli).
ANN gurluşlary: HNSW, IVF-PQ, Flat (kiçi toplumlar üçin).
Kosinus ýakynlygy/inner product; BM25 bilen kalibrlemek (gibrid).

3. 4 Fasetler we agregatlar

Çalt count-lar üçin gymmatlyklaryň deslapky/sütünli saklanylyşy.
Iýerarhiki fasetler (kategoriýa/kiçi kategoriýa).
Diapazonlar (bahalar, seneler).

4) Soraglar: süzgüçler + doly tekst + sortlamak

4. 1 API (REST) şertnamalary

Haýyş:

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)
Jogap (bölek):
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 (ýönekeý)

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) Tebigy dili gaýtadan işlemek (NLP)

Tokenizasiýa/kadalaşma: Unicode-howpsuz, defisleri/apostroflary hasaba almak.
Stop sözleri: diller boýunça sazlama sanawlary.
Stemming vs lemmatizasiýa: ru/uk üçin lemmatizasiýa has gowudyr (hil> tizlik).
Sinonimler: iki taraplaýyn/ugrukdyrylan sözlükler; TTL sözlükleriniň wersiýalary.
Hatalar (fuzzy): Damerau-Levenştein aralyk çäkleri we takyk gabat geliş bustlary bilen.
N-gramlar/edge-ngrams: awtokomplet we maslahatlar üçin.
Transliterasiýa: "shch", "kiev/kyiv" - laýyklyk düzgünleri.

6) Degişli we reýting

6. 1 Esasy leksiki skoring

BM25 boýunça 'k1', 'b' sazlamasy bar.
Ekin meýdanlary (title ^ 3, tags ^ 1. 5, body^1).
Täzelik: 'score + = freshness_boost (decay (created_at))'.

6. 2 Özüni alyp baryş signallary

Click-through rate, dwell time, saýlanan (anti-pozisiýa baýasy bilen) saklamak.
Duplikasiýa: ~ meňzeş mazmuny bolan resminamalary ýelmemek (MinHash/SimHash).

6. 3 Learning-to-Rank (LTR)

Fiçler: BM25, uzynlygy, täzeligi, meşhurlygy, söz bilen gabat gelmegi, pozisiýa tizligi.
Modeller: LambdaMART/XGBoost; NDCG @k, MAP, Precision @k awtonom metrikleri; onlaýn A/B.

6. 4 Neýro-üýtgedip gurmak

Iki basgançak: recall (BM25/ANN) → top-N (mysal üçin 200) → cross-encoder rerank.
Çykdajylary hasaba almak: wagt-býudjet, ýüklenende neýro-basgançaksyz fallback.

6. 5 Gibrid gözleg (sparse + dense)

Ýa fusion (tizligiň kadalaşmagy we jemi) ýa-da multi-stage (dense rerank hökmünde).
Kalibrlemek möhümdir: min-max/z-score/quantile mapping.

7) Süzgüç, faset we elýeterlilik

7. 1 Süzgüçler

Operatorlar: '=', 'IN', diapazonlar, prefiksler, geo-bounding box/geo-distance.
Kombinasiýalar: 'AND' süzgüçlerde, 'OR' köp sanly manyda (brand IN...).
Nusga howpsuzlygy: san meýdanlary tekst hökmünde seljerilmeýär.

7. 2 Fasetler

Deslapky gurluşlar boýunça arzan count-lar.
"Ulanylan" fasetler galan görnüşleri görkezýär (post-filter faceting).

7. 3 Giriş/köp tenantlyk

Howpsuzlyk süzgüçleri reýtinge çenli birleşdirilýär (pre-filter).
ABAC/RBAC ('tenant _ id', 'visibility', 'acl').
Haýyşnamanyň belligine gol çekildi; köp tenantda - awtomatiki 'tenant _ id' süzgüç.

8) Paginasiýa, kursorlar we yzygiderlilik

Wagt boýunça sortlananda '(score, tie-breaker)' ýa-da '(created_at, id)' 'seek-kursor paginasiýasy.
Aç-açan däl 'page _ token' c HMAC we TTL.
Yzygiderlilik: near-real-time (NRT) indeks: gijikdirme 0. 5-2 ýazgy bilen görünmegiň arasynda. Muny SLA-da resminamalaşdyryň.
Kross-şard: lokal gözlemek → global tertipde k-way merge, tokende per-shard kursorlary.

9) Awtomatiki doldurma we maslahatlar

Suggesters: prefix-trie / edge-ngrams по полю `title`.
Popular queries: log clicks → meşhurlyk boýunça maslahatlar + şahsylaşdyrma (segmentler).
Spell-as-you-type: aralyk çäkli çalt fuzzy-gözleg '<= 1'.

REST mysaly:

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

10) Haýlaýtlar we snippetler

Pozisiýa indeksi → gabat gelýän sözlemleri çykarmak.
HTML ekranlamak, uzynlyk çäkleri, goňşy bölekleri birleşdirmek.
Degişli terminleriň dykyzlygy boýunça snippetleri tertipleşdirmek.

11) Öndürijilik, nagt pul we SLO

Indeksler: ýatda gyzgyn segmentler; gysyş postings; doc values fasetler üçin.
Keş: L1 (proses), L2 (Redis), faset/agregat keş; indeksiň görnüşi boýunça maýyp etmek.
SLO: P95 <150-200 ms 'k <= 20', P99 <500 ms; elýeterlilik 99. 9%.
Backpressure: 'k' -ni azaltmak, artykmaç ýüklenende neýro-basgançagy öçürmek.
API/ulanyjy/tenant açaryna rate limiting.

12) Synlamak we hil ölçegleri

Tehnometrikler:
  • `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`
Hil (awtonom):
  • NDCG @k, MAP, MRR, Recall @k, Precision @k bellenen nusgalarda.
Onlaýn:
  • CTR@k, sCTR (satisfied clicks), dwell time, отказ (pogostick rate).

A/B: "guardrail" metrikasyny (gizlinlik, ýalňyşlyklar) + maksatly (NDCG proxy) ýazyň.

13) Synag

Relevance unit tests: esasy soraglar boýunça garaşylýan oýunlary barlamak.
Property-based: hatalara/sinonimlere/dillere çydamlylyk.
Paginasiýa: sahypalaryň serhedinde dublikatlaryň ýoklugy (seek-kontraktlar).
Howpsuzlyk: Giriş süzgüçleri hemişe ulanylýar (hatda faset-count-da).
Sözlükleriň regresleri: sinonimleriň we fuzzy-düzgünleriň wersiýasy.

14) Howpsuzlyk we gizlinlik

PII bolan meýdanlar text ýaly indekslenmez; aýratyn saklamak/şifrlemek.
Saklanan asyl tekstleri minimallaşdyrmak (store = false, diňe snippet meýdançalary).
Query privacy: çig PII soraglaryny goldamaň; anonimleşdirmek/kesmek.
Köp tenant: indeksleriň berk izolýasiýasy ýa-da hökmany 'tenant _ id' süzgüç.

15) Migrasiýa we gabat gelmek

Indeks shemasynyň (v1 → v2) iki gezek ýazylmagy we kem-kemden çalşylmagy.
Analizatorlaryň laýyklygy: köne zynjyrlary indekslemezden saklaň.
Synonimleriň sözlüklerini aýlamak/durmak: 'version', 'activated _ at', rollback.

16) Amaly reseptler

16. 1 Nusgawy leksiki gözleg (BM25)

Meýdanlar: 'title ^ 3', 'tags ^ 2', 'body ^ 1'.
Analizatorlar: spesifik dil + lemmatizasiýa.
Gysga soraglar üçin fuzzy ('<= 3' tokenler), 'fuzziness = 1'.

16. 2 Gibrid sparse + dense

1. Soragyň embeddingi boýunça ANN-gözleg (k = 200)

2. Top-200 bilen birleştir BM25

3. Kalibrlemek we syzmak (Reciprocal Rank Fusion)

4. Almak top-N (N = 20), goşmaça - rerank cross-encoder-om ýeterlik býudjet.

16. 3 Katalogyň faset nawigasiýasy

Hukuklar/tenant boýunça gaty pre-filter

Süzgüçden soňky fasetler (işjeň süzgüçleri göz öňünde tutup)

Sortlamak: degişli ýa-da iş ugry boýunça (bahasy/täzeligi)

17) Soraglaryň mysallary (psevdo-DSL)

Süzgüçler we sortlar:
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"}
}
Geopoisk:
json
{
"query": "casino",
"geo": {"lat": 59. 437, "lon": 24. 753, "radius_km": 50}
}
Awtokomplekt:
json
{ "prefix": "evo", "field": "brand_suggest", "limit": 8 }

18) UX-patternler

Işjeň süzgüçleriň çipleri + "hemme zady taşlaň".
Boş netijeler: "synap görüň..." (sinonimler, süzgüçleri aýyrmak).
"Nol wagtynda maslahatlar": meşhur soraglar/kategoriýalar.
Kursor bilen paginasiýa ("Başga" düwmesi) we tükeniksiz skroll; ulanylan süzgüçleriň kesgitlenen görkezijisi.
Aýry-aýry açarlar "ýalňyşlyklary göz öňünde tutuň", "sözlemiň takyk gabat gelmegi".

19) Ýygy-ýygydan ýalňyşlyklar we anti-patternler

Sortlamakda tie-breaker ýoklugy → goşa/bökmek.
Işjeň süzgüçleri hasaba almazdan fasetler → "ýalan" counts.
Reýtingden soň giriş süzgüçlerini ulanmak.
Dürli dilleri bir analizator bilen garyşdyrmak.
Seek-kursoryň ýerine OFFSET/LIMIT çuňňur paginasiýasy.
Çäksiz fuzzy → gizlinlik partlamasy.

20) Giriş barlagy

1. Meýdanlary we olaryň görnüşlerini kesgitläň, per-locale analizatorlaryny belläň.
2. Ters indeksini düzüň wektor ANN.
3. Soraglaryň parserini we howpsuz giriş süzgüçlerini (pre-filter) amala aşyryň.
4. BM25 we meýdan güýçlendirijilerini sazlaň; fasetleri birikdiriň.
5. Düwmeler boýunça kursorlary (opaque, HMAC, TTL) we k-way merge giriziň.
6. Awtokompletleri, highlightlary, howpsuz ekrany goşuň.
7. Metrikler: gizlinlik, NDCG @k, CTR; Keş L1/L2.
8. Degişli sazlamak üçin A/B-freýmwork.
9. SLA-ny resminamalaşdyryň: NRT-gijikdirme, limit çäkleri, yzygiderlilik kepilligi.
10. Migrasiýa meýilnamasy: indeksiň, sözlükleriň we analizatorlaryň wersiýalary.

Süzgüçiň we doly tekst gözleginiň gowy dizaýn edilen gatlagy diňe bir çalt indeks däl, eýsem kursorlar, howpsuzlyk, öňünden aýdyp boljak UX we ölçäp bolýan degişlilik bilen anyk teswirnama şertnamasydyr. Bu çemeleşme müňlerçe-milliardlarça resminama çenli giňeldilýär we nusgawy leksiki gözlegleri hem, nerw ulgamy reýtingli häzirki zaman gibrid ssenariýalary hem goldaýar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.