يقوم المصدر YAMLRegExpTree بتحميل شجرة التعبيرات النمطية من ملف YAML على نظام الملفات المحلي.
وقد صُمم حصريًا للاستخدام مع تخطيط القاموس regexp_tree
ويوفّر تعيينات هرمية من التعبيرات النمطية إلى السمات لعمليات البحث المستندة إلى الأنماط، مثل تحليل user agent.
الإعداد
CREATE DICTIONARY regexp_dict
(
regexp String,
name String,
version String
)
PRIMARY KEY(regexp)
SOURCE(YAMLRegExpTree(PATH '/var/lib/clickhouse/user_files/regexp_tree.yaml'))
LAYOUT(regexp_tree)
LIFETIME(0);حقول الإعدادات:
| الإعداد | الوصف |
|---|---|
PATH |
المسار المطلق إلى ملف YAML الذي يحتوي على شجرة التعبيرات النمطية. وعند إنشائه عبر DDL، يجب أن يكون الملف موجودًا في الدليل user_files. |
بنية ملف YAML
يحتوي ملف YAML على قائمة بعُقَد شجرة التعبيرات النمطية. ويمكن أن تتضمن كل عقدة سمات وعُقَد فرعية، بما يشكّل بنية هرمية:
- regexp: 'Linux/(\d+[\.\d]*).+tlinux'
name: 'TencentOS'
version: '\1'
- regexp: '\d+/tclwebkit(?:\d+[\.\d]*)'
name: 'Android'
versions:
- regexp: '33/tclwebkit'
version: '13'
- regexp: '3[12]/tclwebkit'
version: '12'
- regexp: '30/tclwebkit'
version: '11'
- regexp: '29/tclwebkit'
version: '10'لكل عقدة البنية التالية:
regexp: التعبير النمطي لهذه العقدة.- attributes: سمات القاموس التي يعرّفها المستخدم (مثل
nameوversion). قد تحتوي قيم السمات على مراجع خلفية إلى مجموعات الالتقاط في التعبير النمطي، وتُكتب بالشكل\1أو$1(الأرقام من 1 إلى 9). وتُستبدل هذه المراجع بمجموعة الالتقاط المطابِقة وقت تنفيذ الاستعلام. - child nodes: قائمة بالعقد الفرعية، لكل منها سماتها الخاصة، وقد تحتوي أيضًا على مزيد من العقد الفرعية. اسم قائمة العقد الفرعية اختياري (مثل
versionsأعلاه). تجري مطابقة السلاسل النصية بأسلوب العمق أولًا: إذا طابقت سلسلة نصية عقدةً ما، فسيجري أيضًا التحقق من عقدها الفرعية. وتكون لسمات أعمق عقدة مطابِقة الأسبقية، فتتجاوز سمات العقدة الأصل ذات الاسم نفسه.
- تخطيط القاموس regexp_tree — إعدادات البنية، وأمثلة على الاستعلامات، وأوضاع المطابقة
- dictGet, dictGetAll — دوال للاستعلام عن قواميس regexp tree