GH GambleHub

التصفية والبحث عن النص الكامل

1) لماذا تحتاج إلى طبقة بحث

يوفر الترشيح والبحث عن النص الكامل (FTS) وصولاً سريعًا إلى البيانات «بالمعنى»، وليس فقط بالمفاتيح الأولية. طبقة بحث مصممة بشكل صحيح تجمع بين:
  • المرشحات الصارمة (الفئات والتواريخ والأسعار وحقوق الوصول)
  • النص الكامل (التطابق المعجمي والترتيب)
  • الجوانب (مجاميع الملاحة)
  • الترتيب الهجين (BM25/TF-IDF + Vector Embeddings)
  • بروتوكولات موثوقة (استعداد المؤشر، TTL الرمزي، الشحن المتقاطع)

2) صورة معمارية

المكونات:

1. Inster/ETL → التطبيع والتفريغ والإثراء وبناء حقول المؤشر.

2. الفهرس → الفهرس العكسي (الرموز → الوثائق)، هياكل الأعمدة، مؤشر المتجهات (HNSW/IVF-PQ).

3. طبقة الاستعلام → محلل الطلب، تطبيق المرشحات/حقوق الوصول، جدولة الشظايا، دمج كيلو واي.

4. رانكر → BM25 + LTR/Neural إعادة الترتيب.

5. تقديم مخبأ →، المؤشرات، الجوانب، النقاط البارزة، مكتمل تلقائيًا.

6. القابلية للرصد → الكمون، مقاييس الجودة، تجارب A/B.

3) نموذج البيانات والفهرس

3. 1 حقول ومحللات

الأنواع: الكلمة الرئيسية (حتى المطابقة)، النص (تم تحليله)، الرقم/التاريخ/الجغرافيا، المتجه.
المحللات: الترميز، التطبيع (lowercase، Unicode NFKC)، المرشحات (كلمات التوقف، stemming/lemmatization).
تعدد اللغات: المحللون الميدانيون (ru, uk, en) ؛ وتحليل وحدة العناية المركزة ؛ والترجمة ؛ النظر في التشكيل.

3. 2 مؤشر عكسي (متناثر)

الهيكل: المصطلح → قائمة النشر (docID، مصطلح 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: من أجل ru/uk lemmatization أفضل (الجودة> السرعة).
المرادفات: القواميس الثنائية الاتجاه/الاتجاه ؛ إصدارات القاموس مع TTL.
الأخطاء المطبعية (غامضة): Damerau-Levenshtein مع تقييد المسافة وتعزيز المباراة بالضبط.
N-grams/edge-ngram: للإكمال التلقائي والتلميحات.
الترجمة: "shch ↔" u "،" kyiv/kyiv "- قواعد المراسلة.

6) الأهمية والترتيب

6. 1 التسجيل المعجمي الأساسي

BM25 مع الإعداد 'k1'، 'b' حسب المجموعة.
التعزيزات حسب الحقول (العنوان ^ 3، العلامات ^ 1. 5, body ^ 1).
النضارة: «النتيجة + = freshness_boost (الاضمحلال (created_at))».

6. 2 إشارات سلوكية

انقر فوق معدل، وقت الإقامة، وفر للمفضلات (مع البايات المضادة للوضعية).
Deduplication - قم بتجميع المستندات مع محتوى متطابق ~ (MinHash/SimHash).

6. 3 التعلم إلى الرتبة (LTR)

الميزات: BM25 المجال، الطول، النضارة، الشعبية، التطابق بالعبارة، السرعة الموضعية.
النماذج: LambdaMART/XGBoost ؛ مقاييس غير متصلة بالإنترنت NDCG @ k, MAP, Precision @ k; على الإنترنت A/B.

6. 4 إعادة ترتيب الأعصاب

خطوتان: استدعاء (BM25/ANN) → أعلى N (على سبيل المثال، 200) → تصنيف تشفير متقاطع.
محاسبة التكلفة: ميزانية الوقت، احتياطية بدون مرحلة عصبية تحت التحميل.

6. 5 بحث هجين (متناثر + كثيف)

إما الاندماج (تطبيع السرعات والمجموع)، أو متعدد المراحل (كثيف مثل الترتيب).
المعايرة مهمة: min-max/z-score/الخرائط الكمية.

7) الترشيح والأوجه والوصول

7. 1 مرشحات

المشغلون: '='، 'IN'، نطاقات، بادئات، صندوق جغرافي/مسافة جغرافية.
التركيبات: «و» بواسطة المرشحات، «OR» ضمن مجموعة من القيم (العلامة التجارية IN...).
نوع الأمان: لا يتم تحليل الحقول الرقمية كنص.

7. 2 جوانب

عد رخيص للهياكل المحسوبة مسبقًا.
تُظهر الجوانب «المطبقة» الجوانب المتبقية بعد المرشح.

7. 3 الوصول/الإيجار المتعدد

يتم دمج مرشحات الأمان قبل الترتيب (المرشح المسبق).
حقول ABAC/RBAC في الوثيقة («المستأجر _ id» و «الرؤية» و «acl»).
تم التوقيع على رمز الطلب ؛ مع مستأجر متعدد - «مستأجر» تلقائي.

8) التثبيت والمؤشرات والاتساق

التثبيت عن طريق البحث عن المؤشر بواسطة «(النتيجة، كسر التعادل)» أو بواسطة «(created_at، الهوية)» عند فرزها حسب الوقت.
Opaque 'page _ token' with HMAC and TTL.
الاتساق: مؤشر الوقت الفعلي القريب (NRT): التأخير 0. 5-2 ث بين التسجيل والرؤية. وثقها في جيش تحرير السودان.
Cross-shard: البحث المحلي → k-way يندمج حسب النظام العالمي، المؤشرات لكل شظية في رمز.

9) AutoComplete والمطالبات

المقترحات: prefix-trie/edge-ngrams по полю 'title'.
الاستفسارات الشائعة: سجل النقرات → نصائح حول الشعبية + التخصيص (المقاطع).
Spell-as-you-type: بحث غامض سريع مع حد المسافة '<= 1'.

مثال REST:

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

10) النقاط البارزة والمقتطفات

الفهرس الموضعي → استرجاع العبارات مع تطابق.
هروب HTML، حد الطول، اتحاد الأجزاء المجاورة.
ترتيب المقتطفات حسب كثافة المصطلحات ذات الصلة.

11) الأداء والمخبأ و SLO

الفهارس: أجزاء ساخنة في الذاكرة ؛ وملصقات الضغط ؛ قيم وثيقة للجوانب.
المخبأ: L1 (العملية)، L2 (Redis)، الأوجه/المخبأ التجميعي ؛ معطلة حسب نسخة الفهرس.
SLO: P95 <150-200 ms at' k <= 20 ', P99 <500 ms; 99. 9%.
الضغط الخلفي: قل «k»، وعطل المرحلة العصبية عند تحميلها بشكل زائد.
السعر يقتصر على واجهة برمجة التطبيقات/المستخدم/المستأجر.

12) إمكانية الرصد ومقاييس الجودة

المقاييس التقنية:
  • 'search _ latency _ ms' (P50/P95/P99)،' qps'، 'timeouts'،' خطأ _ rate '
  • "cache _ hit _ ratio"، "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: إصلاح مقاييس "guardrail' (الكمون والأخطاء) + الهدف (وكيل NDCG).

13) الاختبار

اختبارات وحدة الصلة: التحقق من المطابقات المتوقعة للطلبات الرئيسية.
قائمة على الممتلكات: مقاومة الأخطاء المطبعية/المرادفات/اللغات.
Pagination: لا توجد نسخ مكررة عند حدود الصفحة (ابحث عن عقود).
الأمان: يتم تطبيق مرشحات الوصول دائمًا (حتى في عدد التماثيل).
تراجع القاموس: إصدار المرادفات والقواعد الغامضة.

14) الأمن والخصوصية

ولا تُفهرس الحقول المزودة بمؤشر الاستثمار الدولي كنص ؛ التخزين بشكل منفصل/التشفير.
تقليل المصادر المخزنة إلى الحد الأدنى (التخزين = حقول المقتطفات الخاطئة فقط).
الاستفسار عن الخصوصية: لا تسجل الطلبات الأولية مع PII ؛ إخفاء الهوية/التجزئة.
متعدد المستأجرين: عزل مؤشر صارم أو «مستأجر _ معرف» إلزامي.

15) الهجرات وقابلية التشغيل البيني

مخطط مؤشر الإصدار (v1→v2) مع الكتابة المزدوجة والتبديل التدريجي.
توافق المحلل: لا تعيد فهرسة السلاسل القديمة بعد.
دوران قواميس المرادف/كلمة التوقف: "نسخة"، "تنشيط _ at'، التراجع.

16) وصفات عملية

16. 1 بحث معجمي كلاسيكي (BM25)

الحقول: «العنوان ^ 3»، «العلامات ^ 2»، «الجسم ^ 1».
المحللات: لغة محددة + ليمونة.
غامض للاستفسارات القصيرة («<= 3» رموز)، «غموض = 1».

16. 2 هجين متناثر + كثيف

1. بحث ANN عن طريق تضمين الاستعلام (k = 200)

2. اندمج مع أفضل 200 BM25

3. دمج رتبة المعايرة

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) الأخطاء المتكررة والأنماط المضادة

لا يوجد فاصل التعادل عند الفرز → يتضاعف/يقفز.
الجوانب دون مراعاة المرشحات النشطة → التهم «الخاطئة».
طبق مرشحات الوصول بعد الترتيب.
مزج لغات مختلفة مع محلل واحد.
أوفست/ليمتد الوثب العميق بدلاً من البحث عن المؤشر.
انفجار → غامض غير محدود عن طريق زمن الكمون.

20) قائمة التنفيذ المرجعية

1. حدد الحقول وأنواعها، وعين محللات لكل مكان.
2. صمم المؤشر العكسي + (يختار.) المتجه ANN.
3. قم بتنفيذ محلل استعلام وتأمين المرشحات المسبقة.
4. إقامة BM25 وتعزيز ميداني ؛ تعلق الجوانب.
5. أدخل المؤشرات (مبهمة، HMAC، TTL) ودمج k-way بواسطة شظايا.
6. أضف ملامح مكتملة تلقائيًا ودرعًا آمنًا.

7. المقاييس: الكمون، NDCG @ k، CTR ؛ L1/L2 ذاكرة التخزين المؤقت

8. الإطار ألف/باء لضبط الأهمية.
9. الوثيقة SLA: تأخير NRT، حدود «الحد»، ضمان الاتساق.
10. خطة الهجرة: نسخ من المؤشر والقواميس والمحللين.

طبقة بحث التصفية والنصوص الكاملة المصممة جيدًا ليست فقط فهرسًا سريعًا، ولكنها أيضًا عقد بروتوكول واضح مع المؤشرات والأمان والنفط المستخدم الذي يمكن التنبؤ به والأهمية القابلة للقياس. يتراوح هذا النهج من الآلاف إلى المليارات من المستندات ويدعم كل من البحث المعجمي الكلاسيكي والسيناريوهات الهجينة الحديثة مع ترتيب الشبكة العصبية.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.