alphaTokens
أُضيف في: v1.1.0
يستخرج مقاطع فرعية من بايتات متتالية ضمن النطاقين a-z و A-Z، ويُرجع مصفوفة من المقاطع الفرعية المستخرجة.
البنية
alphaTokens(s[, max_substrings])الأسماء البديلة: splitByAlpha
الوسائط
s— السلسلة النصية المراد تقسيمها.Stringmax_substrings— اختياري. عندما تكونmax_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادةmax_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية.Int64
القيمة المُعادة
تعيد مصفوفة من السلاسل الفرعية الناتجة من s. Array(String)
أمثلة
مثال على الاستخدام
SELECT alphaTokens('abca1abc');┌─alphaTokens('abca1abc')─┐
│ ['abca','abc'] │
└─────────────────────────┘arrayStringConcat
أُضيف في: v1.1.0
يدمج التمثيلات النصية للقيم المدرجة في المصفوفة باستخدام الفاصل المُحدَّد، وهي معلمة اختيارية تُضبط افتراضيًا على سلسلة نصية فارغة.
الصيغة
arrayStringConcat(arr[, separator])الأسماء المستعارة: array_to_string
الوسيطات
arr— المصفوفة المطلوب دمج عناصرها.Array(T)separator— اختياري. سلسلة الفاصل. تكون سلسلة فارغة افتراضيًا.const String
القيمة المعادة
تُرجع السلسلة الناتجة عن الدمج. String
أمثلة
مثال على الاستخدام
SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘extractAllGroupsVertical
مُقدَّم في: v20.5.0
يطابق جميع مجموعات السلسلة باستخدام تعبير نمطي ويُرجع مصفوفة من المصفوفات، بحيث تتضمن كل مصفوفة الأجزاء المطابقة من كل مجموعة، مُجمَّعةً وفق ترتيب ظهورها في سلسلة الإدخال.
الصياغة
extractAllGroupsVertical(s, regexp)الأسماء البديلة: extractAllGroups
الوسيطات
s— سلسلة الإدخال المراد الاستخراج منها.StringأوFixedStringregexp— التعبير النمطي المطلوب المطابقة عليه.const Stringأوconst FixedString
القيمة المعادة
يعيد مصفوفة من المصفوفات، بحيث تحتوي كل مصفوفة داخلية على المجموعات الملتقطة من مطابقة واحدة. وتنتج كل مطابقة مصفوفةً بعناصر تقابل المجموعات الملتقطة في التعبير النمطي (المجموعة 1، المجموعة 2، وهكذا). وإذا لم يتم العثور على أي مطابقات، فستُعاد مصفوفة فارغة. Array(Array(String))
أمثلة
مثال على الاستخدام
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]naiveBayesNgrams
أُضيف في: v26.7.0
يقسّم النص إلى n-grams باستخدام أسلوب tokenization نفسه المستخدم في قاموس Naive Bayes (تخطيط NAIVE_BAYES): وضع byte أو codepoint أو token، مع حشو اختياري للحدود. استخدمه لإنشاء بيانات التدريب المجمّعة مسبقًا (ngram, class_id, count) التي يستهلكها هذا النوع من القواميس، بحيث تتطابق n-grams الخاصة بالتدريب تمامًا مع ما ينتجه naiveBayesClassifier وقت تنفيذ الاستعلام.
البنية
naiveBayesNgrams(text, n, mode[, start_token, end_token])المعاملات
text— النص المراد تقسيمه إلى مقاطع n-gram.Stringn— حجم n-gram، من 1 إلى 1024.const UIntmode— وضع تقسيم النص إلى رموز: 'byte' أو 'codepoint' أو 'token'.const Stringstart_token— اختياري. رمز حدّي يُضاف إلى بداية الإدخال (n-1) مرة؛ يكون رقمًا مع 'byte'/'codepoint'، أو قيمة حرفية مع 'token'. وتعني القيمة الفارغة عدم وجود حشو.const Stringend_token— اختياري. رمز حدّي يُضاف إلى نهاية الإدخال (n-1) مرة.const String
القيمة المُعادة
مقاطع n-gram للنص المُدخل. Array(String)
أمثلة
ثنائيات الرموز
SELECT naiveBayesNgrams('the cat sat', 2, 'token');['the cat','cat sat']ثنائيات التوكنات مع الحشو عند الحدود
SELECT naiveBayesNgrams('cat', 2, 'token', '<s>', '</s>');['<s> cat','cat </s>']ثنائيات البايت مع حشو الحدود (تُعرض النتيجة بالنظام الست عشري)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('xy', 2, 'byte', '0x01', '0xFF'));['0178','7879','79FF']ثنائيات نقاط الترميز مع الحشو عند الحدود (النتيجة معروضة بالنظام الست عشري)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('ab', 2, 'codepoint', '0x10FFFE', '0x10FFFF'));['F48FBFBE61','6162','62F48FBFBF']ngrams
تم تقديمه في: v21.11.0
يقسم سلسلة UTF-8 إلى n-grams بطول N.
الصياغة
ngrams(s, N)الوسيطات
s— سلسلة الإدخال.StringأوFixedStringN— طول الـn-gram.const UInt8/16/32/64
القيمة المُعادة
تعيد مصفوفة من n-grams. Array(String)
أمثلة
مثال على الاستخدام
SELECT ngrams('ClickHouse', 3);['Cli','lic','ick','ckH','kHo','Hou','ous','use']reverseBySeparator
أُضيفت في: v26.2.0
تعكس ترتيب السلاسل الفرعية في سلسلة نصية مفصولة بفاصل محدد. تقسم هذه الدالة السلسلة النصية باستخدام الفاصل، ثم تعكس ترتيب الأجزاء الناتجة، وتضمّها مجددًا باستخدام الفاصل نفسه. وهي مفيدة لتحليل أسماء النطاقات، ومسارات الملفات، أو أي بيانات هرمية أخرى تحتاج فيها إلى عكس ترتيب المكوّنات.
أمثلة:
- reverseBySeparator('www.google.com') تعيد 'com.google.www'
- reverseBySeparator('a/b/c', '/') تعيد 'c/b/a'
- reverseBySeparator('x::y::z', '::') تعيد 'z::y::x'
بنية
reverseBySeparator(string[, separator])وسيطة الدالة
string— سلسلة الإدخال المطلوب عكس ترتيب أجزائها.Stringseparator— سلسلة الفاصل المستخدمة لتحديد الأجزاء. إذا لم يتم توفيرها، فسيُستخدم '.' (نقطة). القيمة الافتراضية: '.'String
القيمة المُعادة
تعيد سلسلة تكون فيها السلاسل الفرعية مرتبة من اليمين إلى اليسار مقارنةً بالسلسلة الأصلية، ومتصلة باستخدام الفاصل نفسه. String
أمثلة
عكس اسم النطاق الأساسي
SELECT reverseBySeparator('www.google.com')com.google.wwwعكس ترتيب المسار
SELECT reverseBySeparator('a/b/c', '/')c/b/aفاصل مخصص
SELECT reverseBySeparator('x::y::z', '::')z::y::xحالة خاصة عند استخدام النقاط
SELECT reverseBySeparator('.a.b.', '.').b.a.عنصر واحد
SELECT reverseBySeparator('single')singleفاصل فارغ
SELECT reverseBySeparator('abcde', '')edcbasplitByChar
أُضيف في: v1.1.0
يُقسِّم سلسلة نصية مفصولة بالسلسلة الثابتة المحددة separator، والتي يجب أن تتكوّن من محرف واحد تمامًا، إلى مصفوفة من السلاسل الفرعية.
قد تُحدَّد سلاسل فرعية فارغة إذا ظهر الفاصل في بداية السلسلة أو نهايتها، أو إذا وُجدت عدة فواصل متتالية.
قد تُحدَّد سلاسل فرعية فارغة في الحالات التالية:
- ظهور فاصل في بداية السلسلة أو نهايتها
- وجود عدة فواصل متتالية
- إذا كانت السلسلة الأصلية
sفارغة
بنية
splitByChar(separator, s[, max_substrings])وسيطة الدالة
separator— يجب أن يكون الفاصل حرفًا من بايت واحد.Strings— السلسلة المراد تقسيمها.Stringmax_substrings— اختياري. إذا كانتmax_substrings > 0، فستتضمن المصفوفة المُعادةmax_substringsمن السلاسل الفرعية كحد أقصى، وإلا فستُرجع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية هي0.Int64
القيمة المعادة
تُرجع مصفوفة من السلاسل الفرعية المحددة. Array(String)
أمثلة
مثال على الاستخدام
SELECT splitByChar(',', '1,2,3,abcde');┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde'] │
└─────────────────────────────────┘splitByNonAlpha
أُضيف في: v21.9.0
يقسم السلسلة النصية، المفصولة بمحارف المسافات البيضاء وعلامات الترقيم، إلى مصفوفة من السلاسل الفرعية.
البنية
splitByNonAlpha(s[, max_substrings])المعاملات
s— السلسلة النصية المراد تقسيمها.Stringmax_substrings— اختياري. عندما تكون قيمةmax_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادةmax_substrings، وإلا فستُرجِع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية:0.Int64
القيمة المُعادة
تُرجِع مصفوفة من السلاسل الفرعية المحددة لـ s. Array(String)
أمثلة
مثال على الاستخدام
SELECT splitByNonAlpha('user@domain.com');['user','domain','com']splitByRegexp
أُضيف في: v21.6.0
يقسّم سلسلة مفصولة بالتعبير النمطي المُعطى إلى مصفوفة من السلاسل الفرعية. إذا كان التعبير النمطي المُعطى فارغًا، فسيقسّم السلسلة إلى مصفوفة من المحارف المفردة. إذا لم يتم العثور على أي تطابق للتعبير النمطي، فلن يتم تقسيم السلسلة.
قد تظهر سلاسل فرعية فارغة في الحالات التالية:
- إذا وقع تطابق غير فارغ للتعبير النمطي في بداية السلسلة أو نهايتها
- إذا وُجدت عدة تطابقات غير فارغة ومتتالية للتعبير النمطي
- إذا كانت السلسلة الأصلية فارغة بينما التعبير النمطي غير فارغ.
البنية
splitByRegexp(regexp, s[, max_substrings])وسيطة الدالة
regexp— تعبير نمطي. ثابت.StringأوFixedStrings— السلسلة المراد تقسيمها.Stringmax_substrings— اختياري. عندما تكونmax_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادة القيمةmax_substrings، وإلا فستُرجع الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية:0.Int64
القيمة المُعادة
تُرجع مصفوفة من السلاسل الفرعية المحددة من s. Array(String)
أمثلة
مثال على الاستخدام
SELECT splitByRegexp('\\d+', 'a12bc23de345f');┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐
│ ['a','bc','de','f'] │
└────────────────────────────────────────┘تعبير نمطي فارغ
SELECT splitByRegexp('', 'abcde');┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByString
أُضيف في: v1.1.0
يقسّم سلسلة نصية باستخدام separator ثابت يتكوّن من عدة محارف إلى مصفوفة من السلاسل الفرعية.
إذا كانت السلسلة النصية separator فارغة، فسيُقسَّم النص s إلى مصفوفة من المحارف المفردة.
قد تظهر سلاسل فرعية فارغة في الحالات التالية:
- إذا ظهر فاصل غير فارغ في بداية السلسلة النصية أو نهايتها
- إذا وُجدت عدة فواصل غير فارغة متتالية
- إذا كانت السلسلة النصية الأصلية
sفارغة وكان الفاصل غير فارغ
البنية
splitByString(separator, s[, max_substrings])وسيطة الدالة
separator— الفاصل.Strings— السلسلة النصية المراد تقسيمها.Stringmax_substrings— اختياري. عندما تكونmax_substrings > 0، لن يزيد عدد السلاسل الفرعية المُعادة عنmax_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية:0.Int64
القيمة المُعادة
تُعيد مصفوفة من السلاسل الفرعية الناتجة من s Array(String)
أمثلة
مثال على الاستخدام
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────────────────────┘فاصل فارغ
SELECT splitByString('', 'abcde');┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByWhitespace
أُضيفت في: v21.9.0
تقسم سلسلة نصية مفصولة بمحارف المسافات البيضاء إلى مصفوفة من السلاسل الفرعية.
الصياغة
splitByWhitespace(s[, max_substrings])الوسيطات
s— السلسلة المطلوب تقسيمها.Stringmax_substrings— اختياري. عندما تكون قيمةmax_substrings > 0، لن يتجاوز عدد السلاسل الفرعية المُعادةmax_substrings، وإلا فستُعيد الدالة أكبر عدد ممكن من السلاسل الفرعية. القيمة الافتراضية:0.Int64
القيمة المعادة
تعيد مصفوفة من السلاسل الفرعية المختارة من s. Array(String)
أمثلة
مثال على الاستخدام
SELECT splitByWhitespace(' 1! a, b. ');['1!','a,','b.']tokens
أُضيف في: v21.11.0
يقسّم سلسلة نصية إلى رموز باستخدام مُقسِّم الرموز المحدد.
مُقسِّمات الرموز المتاحة:
splitByNonAlphaيقسّم السلاسل النصية عند محارف ASCII غير الأبجدية الرقمية (راجع أيضًا الدالة splitByNonAlpha).splitByString(S)يقسّم السلاسل النصية باستخدام سلاسل الفواصلSالتي يحدّدها المستخدم (راجع أيضًا الدالة splitByString). يمكن تحديد الفواصل باستخدام معلمة اختيارية، على سبيل المثال:tokens(value, 'splitByString', [', ', '; ', '\n', '\\']). لاحظ أن كل سلسلة يمكن أن تتكوّن من عدة محارف (', 'في المثال). قائمة الفواصل الافتراضية، إذا لم تُحدَّد صراحةً، هي مسافة بيضاء واحدة[' '].splitByRegexp(re)يقسّم السلاسل النصية باستخدام فاصل تعبير نمطيreيحدّده المستخدم (راجع أيضًا الدالة splitByRegexp). التعبير النمطي إلزامي، على سبيل المثال:tokens(value, 'splitByRegexp', '[^\p{L}\p{N}#+]+'). وعلى خلافsplitByString، يمكن لفاصل التعبير النمطي الحفاظ على الرموز التي تحتوي على محارف خاصة (مثلC++أوC#).asciiCJKيقسّم السلاسل النصية إلى رموز باستخدام قواعد حدود الكلمات في Unicode (على غرار UAX #29). وتُشكّل محارف ASCII الأبجدية الرقمية والشرطات السفلية رموزًا مع الموصلات (:للحروف، و.و'للمحارف من النوع نفسه). أما محارف Unicode غير التابعة لـ ASCII فتتحول إلى رموز من محرف واحد.chineseيقسّم النص الصيني إلى كلمات باستخدام قاموس ونموذج ماركوف مخفي (تتبع الخوارزمية jieba؛ وتُشتق بيانات القاموس والنموذج المضمّنة من cppjieba). وعلى خلافasciiCJK، الذي يعامل كل محرف غير تابع لـ ASCII كرمز من محرف واحد، يجمعchineseالمحارف الصينية المتتالية في كلمات، مما ينتج رموزًا أكثر معنى وجودة بحث أعلى للنص الصيني. تكون وسيطةgranularityالاختيارية إماcoarse_grained(الافتراضي) أوfine_grained؛ ويقوم الأخير أيضًا بتعداد الكلمات الفرعية المتداخلة، مما يحسّن الاستدعاء على حساب فهرس أكبر.icu(locale)يقسّم السلاسل النصية إلى رموز كلمات باستخدام تجزئة كلمات Unicode في مكتبة ICU (UAX #29). بالنسبة إلى أنظمة الكتابة التي لا تستخدم مسافات بيضاء بين الكلمات (مثل الصينية واليابانية والتايلاندية)، تطبّق ICU تجزئة قائمة على القاموس، لذا يُقسَّم هذا النص إلى كلمات ذات معنى. تمثلlocaleالإعدادات المحلية لـ ICU التي تُمرَّر إلى المُقسِّم (يعتمد التقسيم أساسًا على نظام الكتابة والقاموس؛ وتحدد الإعدادات المحلية التخصيصات الخاصة بالإعدادات المحلية في ICU)؛ وهي إلزامية وتُمرَّر كمعامل منفصل، على سبيل المثال:tokens(value, 'icu', 'ja').japaneseيقسّم النص الياباني إلى كلمات باستخدام المحلل الصرفي MeCab. يتطلب قاموسًا مُعدًا في تكوين الخادم (راجع وثائق فهرس النص).ngrams(N)يقسّم السلاسل النصية إلى n-grams متساوية الحجم (راجع أيضًا الدالة ngrams). يمكن تحديد طول ngram باستخدام معلمة عددية صحيحة اختيارية بين 1 و8، على سبيل المثال:tokens(value, 'ngrams', 3). حجم ngram الافتراضي، إذا لم يُحدَّد صراحةً، هو 3.sparseGrams(min_length, max_length, min_cutoff_length)يقسّم السلاسل النصية إلى n-grams متغيرة الطول لا يقل طولها عنmin_lengthولا يزيد عنmax_length(شاملًا) من المحارف (راجع أيضًا الدالة sparseGrams). ما لم يُحدَّد ذلك صراحةً، تكون القيمتان الافتراضيتان لـmin_lengthوmax_lengthهما 3 و100. وإذا تم تمرير المعلمةmin_cutoff_length، فستُعاد فقط n-grams التي يكون طولها أكبر من أو مساويًا لـmin_cutoff_length. وبالمقارنة معngrams(N)، ينتج مُقسِّم الرموزsparseGramsN-grams متغيرة الطول، مما يتيح تمثيلًا أكثر مرونة للنص الأصلي. على سبيل المثال،tokens(value, 'sparseGrams', 3, 5, 4)يُنشئ داخليًا 3- و4- و5-grams من سلسلة الإدخال، ولكن لا تُعاد إلا 4- و5-grams.arrayلا يُجري أي تقسيم النص إلى رموز، أي إن قيمة كل row تُعد رمزًا (راجع أيضًا الدالة array). وللتوافق مع الأنظمة الأخرى، يتوفرkeywordكاسم مستعار لـarray.
في حالة مُقسِّم الرموز splitByString، إذا كانت الرموز لا تشكّل شيفرة بادئة، فمن المرجح أن ترغب في أن تُفضّل المطابقة الفواصل الأطول أولًا.
لتحقيق ذلك، مرّر الفواصل بترتيب تنازلي حسب الطول.
على سبيل المثال، عند استخدام separators = ['%21', '%']، ستُقسَّم السلسلة %21abc إلى الرموز ['abc']، بينما عند استخدام separators = ['%', '%21']، ستُقسَّم إلى ['21ac'] (وهو على الأرجح ليس ما تريده).
بناء الجملة
tokens(value) -- 'splitByNonAlpha' tokenizer
tokens(value, 'splitByNonAlpha')
tokens(value, 'splitByString'[, separators])
tokens(value, 'splitByRegexp', regexp)
tokens(value, 'asciiCJK')
tokens(value, 'chinese'[, granularity])
tokens(value, 'icu', locale)
tokens(value, 'japanese')
tokens(value, 'ngrams'[, n])
tokens(value, 'sparseGrams'[, min_length, max_length[, min_cutoff_length]])
tokens(value, 'array')وسيطات الدالة
value— سلسلة الإدخال.StringأوFixedStringtokenizer— مُقسِّم الرموز المراد استخدامه. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوsplitByRegexpوasciiCJKوchineseوicuوjapaneseوngramsوsparseGramsوarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فالقيمة الافتراضية هيsplitByNonAlpha.const Stringlocale— ينطبق فقط إذا كانت الوسيطةtokenizerهيicu: الإعدادات المحلية الإلزامية، مثل'ja'.const Stringn— ينطبق فقط إذا كانت الوسيطةtokenizerهيngrams: معلمة اختيارية تحدد طول الـ ngrams. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي3.const UInt8separators— ينطبق فقط إذا كانت الوسيطةtokenizerهيsplit: معلمة اختيارية تحدد سلاسل الفواصل. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي[' '].const Array(String)regexp— ينطبق فقط إذا كانت الوسيطةtokenizerهيsplitByRegexp: معلمة إلزامية تحدد فاصل التعبير النمطي.const Stringmin_length— ينطبق فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول الـ gram، والقيمة الافتراضية هي 3.const UInt8max_length— ينطبق فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول الـ gram، والقيمة الافتراضية هي 100.const UInt8min_cutoff_length— ينطبق فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع.const UInt8granularity— ينطبق فقط إذا كانت الوسيطةtokenizerهيchinese: معلمة اختيارية، إماcoarse_grained(الافتراضية) أوfine_grained، تتحكم في دقة التقسيم.const String
القيمة المعادة
تعيد مصفوفة الرموز الناتجة من سلسلة الإدخال. Array
أمثلة
مُقسِّم الرموز الافتراضي
SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\ test4') AS tokens;['test1','test2','test3','test4']مُقسِّم رموز Ngram
SELECT tokens('abc def', 'ngrams', 3) AS tokens;['abc','bc ','c d',' de','def']tokensForLikePattern
أُضيف في: v26.3.0
تُقسِّم هذه الدالة سلسلة نمط LIKE إلى رموز باستخدام مُقسِّم الرموز المحدد.
وعلى عكس الدالة tokens، فإن هذه الدالة تراعي دلالات نمط LIKE
(مثل محارف البدل في البداية والنهاية)، وتطبّق قواعد خاصة بكل مُقسِّم الرموز
لاستخراج رموز ذات معنى لأغراض Pattern matching.
وهي تدعم مجموعات الوسائط نفسها التي تدعمها الدالة tokens، مع بعض
الاستثناءات: مُقسِّما الرموز chinese وicu غير مدعومين هنا.
لا يكون تقسيم النص إلى رموز لأنماط LIKE ذا معنى إلا لمُقسِّمات الرموز التي
تختار صراحةً دعم دلالات LIKE (supportsStringLike()). يؤدي استدعاء
tokensForLikePattern باستخدام مُقسِّم رموز غير مدعوم إلى ظهور BAD_ARGUMENTS؛
استخدم tokens العادية بدلًا من ذلك.
تُفسَّر الوسائط الإضافية بعد tokenizer وفقًا للـ مُقسِّم الرموز
المحدد (على سبيل المثال، n من أجل ngrams، وseparators من أجل
splitByString، وmin_length / max_length [/ min_cutoff_length]
من أجل sparseGrams).
هذه الدالة مخصّصة أساسًا لأغراض تصحيح الأخطاء والاختبار، وتُستخدم داخليًا لتحليل سلوك تقسيم النص إلى رموز لأنماط LIKE.
بناء الجملة
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])وسيطات الدالة
value— سلسلة الإدخال.StringأوFixedStringtokenizer— مُقسِّم الرموز المراد استخدامه. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوasciiCJKوngramsوsparseGramsوarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضيةsplitByNonAlpha.const Stringlocale— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيicu: الإعدادات المحلية الإلزامية، مثل'ja'.const Stringn— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيngrams: معلمة اختيارية تحدد طول ngrams. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية3.const UInt8separators— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيsplit: معلمة اختيارية تحدد سلاسل الفواصل. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية[' '].const Array(String)regexp— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيsplitByRegexp: معلمة إلزامية تحدد فاصل التعبير النمطي.const Stringmin_length— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول gram، والقيمة الافتراضية هي 3.const UInt8max_length— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول gram، والقيمة الافتراضية هي 100.const UInt8min_cutoff_length— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيsparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع.const UInt8granularity— يكون ذا صلة فقط إذا كانت الوسيطةtokenizerهيchinese: معلمة اختيارية، إماcoarse_grained(الافتراضي) أوfine_grained، تتحكم في دقة التقسيم.const String
القيمة المعادة
يعيد مصفوفة الرموز الناتجة من سلسلة الإدخال. Array
أمثلة
مُقسِّم الرموز الافتراضي
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;['test2']