GH GambleHub

סינון וחיפוש טקסט מלא

1) מדוע אתה זקוק לשכבת חיפוש

סינון וחיפוש טקסט מלא (FTS) מספקים גישה מהירה למידע ”במשמעות”, לא רק על ידי מפתחות ראשיים. שכבת חיפוש מעוצבת היטב משלבת:
  • מסננים קפדניים (קטגוריות, תאריכים, מחירים, זכויות גישה)
  • טקסט מלא (התאמה לקסיקלית ודירוג)
  • היבטים (אגרגטים לניווט)
  • דירוג היברידי (BM25/TF-IDF + Vector Embedings)
  • פרוטוקולים אמינים (סמן פגינציה, TTL אסימון, cross-sharding)

2) תמונה ארכיטקטונית

רכיבים:

1. Inbleget/ETL # נורמליזציה, שכפול, העשרה, בניית שדות עבור האינדקס.

2. Indexer # Index Reverse Index (אסימונים = מסמכים), מבני עמודים, אינדקס וקטורים (HNSW/IVF-PQ).

3. Query Layer Parser, יישום של זכויות מסננים/גישה, לוח זמנים שברי, מיזוג דרך k.

4. Ranker # BM25 + LTR/דרגה מחדש עצבית.

5. הגשת מטמון, קימורים, היבטים, גוונים, השלמה אוטומטית.

6. תצפית latency, מדדים איכותיים, ניסויים A/B.

3) נתונים ומודל אינדקס

3. 1 שדות ומנתחים

סוגים: מילת מפתח (אפילו התאמה), טקסט (ניתוח), מספר/תאריך/גיאו, וקטור.
מנתחים: tokenization, normalization (lowercase, Unicode NFKC), מסננים (stopwords, steming/lemmatization).
רב-לשוניות: per-field analyzers (ru, uk, en); ניתוח טיפול נמרץ; תרגום; התחשבות בדיאקריטיקה.

3. 2 אינדקס הפוך (דליל)

מבנה: mong posting list (docID, מונח freq, עמדות).
דירוג: BM25 (או צה "ל קלאסי) עם מגברי שדה.

3. אינדקס וקטורי 3 (צפוף)

שיבוץ טקסט (לדוגמה, 384-1024-ממדי).
מבנים: HNSW, IVF-PQ, Flat (עבור סטים קטנים).
קרבה קוסינוס/תוצר פנימי; כיול BM25 (היברידי).

3. 4 היבטים וצבירים

איחסון טורים/טורים של ערכים עבור ספירות מהירות.
היררכיות (קטגוריה/תת-קטגוריה).
טווחים (פחי מחיר, תאריכים).

4) שאילתות: מסננים + טקסט מלא + מיין

4. 1 חוזי API (מנוחה)

בקשה:

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-safe, hyphen/gustrope חשבונאות.
סטופורדס: רשימות התאמה אישית לפי שפה.
Steming vs. lemmatization: עבור ru/uk lemmatization הוא טוב יותר (איכות> מהירות).
מילים נרדפות: מילונים דו כיווניים/כיווניים; גרסאות מילון עם TTL.
Typos (פאזי): Damerau-Levenshtein עם הגבלת מרחק והגברת התאמה מדויקת.
N-גרם/edge-ngrams: עבור השלמה אוטומטית ורמזים.
תרגום: "↔" u "," kyiv/kyiv "- כללי התכתבות.

6) רלוונטיות ודירוג

6. ניקוד לקסיקלי בסיסי 1

BM25 עם ”k1”, ”b” הגדרה על ידי אוסף.
מגביר על ידי שדות (כותרת _ 3, תגיות _ 1. 5, גוף = 1).
רעננות: ”ציון + = freshness_boost (דעיכה (created_at))”.

6. 2 רמזים התנהגותיים

קצב לחיצה דרך, זמן שיכון, שמור לפייבוריטים (עם ביאס אנטי-מוצב).
שכפול - תפר יחד מסמכים עם ~ תוכן זהה (MinHash/SimHash).

6. 3 למידה מדרגה לדרגה (LETR)

מאפיינים: BM25 שדה, אורך, רעננות, פופולריות, התאמה לפי ביטוי, מהירות מיקום.
מודלים: LAMBDAMART/XGBoost; NDCG @ k, MAP, Precision @ k; מקוון A/B.

6. 4 סידור מחדש של נוירו

שני שלבים: recall (BM25/ANN) # top-N (לדוגמה, 200).
חשבון עלות: תקציב זמן, נסיגה ללא שלב נוירו תחת עומס.

6. 5 חיפוש היברידי (דליל + צפוף)

איחוי (נורמליזציה של מהירויות וסכום), או ריבוי שלבים (דחוס כמו דרגה).
כיול חשוב: מין-מקס/z-ציון/מיפוי כמותי.

7) סינון, היבטים וגישה

7. 1 מסננים

אופרטורים: 'IN', 'IN', טווחים, קדימות, תיבת גיאו-Bounding/Geo-מרחק.
צירופים: 'ו' על ידי מסננים, 'או' בתוך קבוצה של ערכים (מותג ב...).
אבטחת סוג: שדות מספריים אינם מחולקים כטקסט.

7. 2 היבטים

ספירה זולה למבנים מחושבים מראש.
היבטים ”שימושיים” מראים את היבטי הפוסט-פילטר הנותרים.

7. 3 גישה/עמידות מרובה

מסנני אבטחה משולבים לפני הדירוג (קדם-מסנן).
שדות ABAC/RBAC במסמך (”דייר _ id',” ראות ”,” acl').
אסימון הבקשה חתום; עם דייר רב-דייר אוטומטי _ id 'filter.

8) עבודת אלילים, קיפודים ועקביות

pagination by search-color by '(ציון, שובר שוויון)' או by '(created_at, id)' כאשר ממוינים על ידי הזמן.
Opaque 'page _ token' עם HMAC ו-TTL.
עקביות: כמעט-בזמן-אמת (NRT) אינדקס: השהייה 0. 5-2 אס בין הקלטה לראות. לתעד את זה ב-SLA.
חתך צולב: חיפוש מקומי = k-way התמזג על ידי סדר עולמי, לכל שברי סלסולים בסימן.

9) השלמה אוטומטית ומעוררת

סוכנים: prefix-trie/edge-ngrams.
שאילתות פופולריות: רישום של קליקים * עצות על פופולריות + פרסונליזציה (מקטעים).
איות כמו שאתה סוג: חיפוש מהיר מטושטש עם גבול מרחק '<= 1'.

דוגמה מנוחה:

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

10) נקודות בולטות וקטעים

Index positional _ לאחזר ביטויים עם גפרורים.
בריחת HTML, הגבלת אורך, איחוד של שברים שכנים.
דירוג קטעים על ידי צפיפות של מונחים רלוונטיים.

11) ביצועים, מטמון ו ־ SLO

אינדקסים: קטעים חמים בזיכרון; פרסומי דחיסה; ערכי דוק עבור היבטים.
מטמון: L1 (תהליך), L2 (רדיס), היבטים/מטמון אגרגטים; מושבת על ידי גרסת אינדקס.
SLO: P95 <150-200 ms at 'k <= 20', P99 <500 ms; זמינות 99. 9%.
תרגיל גב: להקטין ”k”, לנטרל את השלב הנוירו כאשר עמוס.
קצב מגביל למפתח API/משתמש/דייר.

12) יכולת תצפית ומדדים איכותיים

מדדים טכניים:
  • 'search _ letency _ ms' (P50/P95/P99),' qps', 'timeouts', 'שגיאה _ ratte&pos
  • 'cache _ hit _ ratio', 'facet _ cache _ hit', 'renerank _ sherefost
  • "shard _ fanout'," merge _ time _ ms', "ann _ recall @ kfoss
איכות (לא מקוונת):
  • NDCG @ k, MAP, MRR, recall @ k, Precision @ k על דגימות מסומנות.
אונליין:
  • CTR @ k, sCTR (קליקים מסופקים), dwell time (קצב פוגוסטיק).

A/B: לתקן את מדדי מעקה הבטיחות (latency, images) + המטרה (NDCG proxy).

13) בדיקה

בדיקות יחידה רלוונטיות: בדיקת התאמות צפויות לבקשות מפתח.
מבוסס מאפיין: התנגדות לשפות/מילים נרדפות.
Pagination: אין כפילויות בגבול הדף (לחפש חוזים).
אבטחה: מסנני גישה תמיד מיושמים (אפילו בספירת פאסט).
רגרסיות מילון: מילים נרדפות מיושנות וחוקים מטושטשים.

14) ביטחון ופרטיות

שדות עם PII אינם מאינדקס כטקסט; לחנות בנפרד/להצפין.
מזעור מקורות מאוחסנים (store = שדות מזויפים בלבד).
פרטיות שאילתה: אל תרשום בקשות גלם עם PII; אנונימיות/חשיש.
רב-דייר: בידוד אינדקס קפדני או דייר חובה _ id' filter.

15) נדידה וכושר גישוש

סכימת אינדקס ורסיונינג (v1 * v2) עם כתיבה כפולה ומתג הדרגתי.
תאימות אנליזר: לא מחדש אינדקס שרשראות ישנות עדיין.
סיבוב של מילוני מילים נרדפות: "גרסה", "מופעל _ at', rollback.

16) מתכונים מעשיים

16. 1 חיפוש לקסיקלי קלאסי (BM25)

שדות: 'כותרת • 3', 'תגיות • 2', 'גוף • 1'.
מנתחים: שפה ספציפית + למטיזציה.
שאילתות קצרות ('<= 3' אסימונים), 'ערפול = 1'.

16. 2 דלילות היברידיות + צפופות

1. ANN חיפוש על ידי שיבוץ שאילתות (k = 200)

2. התמזגו עם 200 הטובים ביותר BM25

3. כיול רנק היתוך

4. קח טופ-אן (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

שבבי פילטר פעילים + ”לאפס את הכל”.
תוצאות ריקות: להראות ”לנסות”... (מילים נרדפות, להסיר מסנן).
אפס רמזים: שאילתות/קטגוריות פופולריות.
Corsor pagination (עוד כפתור) וגלילה אינסופית; סימון קבוע של מסננים יישומיים.
מתגים נפרדים ”לקחת בחשבון שגיאות דפוס”, ”התאמה מדויקת של הביטוי”.

19) שגיאות תכופות ותבניות אנטי

אין שובר שוויון כאשר מיון = כפול/קפיצות.
היבטים מבלי לקחת בחשבון מסננים פעילים = = ספירות ”כוזבות”.
הפעל מסנני גישה לאחר דירוג.
ערבוב שפות שונות עם מנתח אחד.
KAGINATION OFSET/LIMIT במקום לחפש את הסמן.
פיצוץ מטושטש בלתי מוגבל על ידי איחור.

20) רשימת מימושים

1. להגדיר את השדות וסוגיהם, להקצות מנתחים לכל מקום.
2. עיצוב האינדקס ההפוך + (Opts.) וקטור אן.
3. ליישם פרסר שאילתה ומאבטח מסננים מראש.
4. הגדרת BM25 והגבהות שדה; לצרף פקטים.
5. cursors (אטום, HMAC, TTL) ומיזוג k-way על ידי רסיסים.
6. הוסף השלמה אוטומטית, גוונים, מיגון בטוח.
7. מטריצות: Latency, NDCG @ k, CTR; מטמון L1/L2.
8. מסגרת A/B לכוונון רלוונטי.
9. מסמך SLA: עיכוב NRT, 'גבול' גבולות, ערבות עקבית.
10. תוכנית הגירה: גרסאות לאינדקס, מילונים ומנתחים.

שכבת סינון מעוצבת היטב וחיפוש טקסט מלא היא לא רק אינדקס מהיר, אלא גם חוזה פרוטוקול ברור עם קורסים, אבטחה, UX צפוי ורלוונטיות מדידה. גישה זו משקפת אלפי עד מיליארדי מסמכים ותומכת הן בחיפוש לקסיקלי קלאסי והן בתרחישים היברידיים מודרניים עם דירוג רשת עצבית.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.