Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

دوال تقسيم السلاسل النصية

alphaTokens

أُضيف في: v1.1.0

يستخرج مقاطع فرعية من بايتات متتالية ضمن النطاقين a-z و A-Z، ويُرجع مصفوفة من المقاطع الفرعية المستخرجة.

البنية

alphaTokens(s[, max_substrings])

الأسماء البديلة: splitByAlpha

الوسائط

  • s — السلسلة النصية المراد تقسيمها. String
  • max_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

الوسيطات

القيمة المعادة

يعيد مصفوفة من المصفوفات، بحيث تحتوي كل مصفوفة داخلية على المجموعات الملتقطة من مطابقة واحدة. وتنتج كل مطابقة مصفوفةً بعناصر تقابل المجموعات الملتقطة في التعبير النمطي (المجموعة 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. String
  • n — حجم n-gram، من 1 إلى 1024. const UInt
  • mode — وضع تقسيم النص إلى رموز: 'byte' أو 'codepoint' أو 'token'. const String
  • start_token — اختياري. رمز حدّي يُضاف إلى بداية الإدخال (n-1) مرة؛ يكون رقمًا مع 'byte'/'codepoint'، أو قيمة حرفية مع 'token'. وتعني القيمة الفارغة عدم وجود حشو. const String
  • end_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)

الوسيطات

القيمة المُعادة

تعيد مصفوفة من 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 — سلسلة الإدخال المطلوب عكس ترتيب أجزائها. String
  • separator — سلسلة الفاصل المستخدمة لتحديد الأجزاء. إذا لم يتم توفيرها، فسيُستخدم '.' (نقطة). القيمة الافتراضية: '.' 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', '')
edcba

splitByChar

أُضيف في: v1.1.0

يُقسِّم سلسلة نصية مفصولة بالسلسلة الثابتة المحددة separator، والتي يجب أن تتكوّن من محرف واحد تمامًا، إلى مصفوفة من السلاسل الفرعية. قد تُحدَّد سلاسل فرعية فارغة إذا ظهر الفاصل في بداية السلسلة أو نهايتها، أو إذا وُجدت عدة فواصل متتالية.

قد تُحدَّد سلاسل فرعية فارغة في الحالات التالية:

  • ظهور فاصل في بداية السلسلة أو نهايتها
  • وجود عدة فواصل متتالية
  • إذا كانت السلسلة الأصلية s فارغة

بنية

splitByChar(separator, s[, max_substrings])

وسيطة الدالة

  • separator — يجب أن يكون الفاصل حرفًا من بايت واحد. String
  • s — السلسلة المراد تقسيمها. String
  • max_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 — السلسلة النصية المراد تقسيمها. String
  • max_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 أو FixedString
  • s — السلسلة المراد تقسيمها. String
  • max_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 — الفاصل. String
  • s — السلسلة النصية المراد تقسيمها. String
  • max_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 — السلسلة المطلوب تقسيمها. String
  • max_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)، ينتج مُقسِّم الرموز sparseGrams N-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 أو FixedString
  • tokenizer — مُقسِّم الرموز المراد استخدامه. الوسيطات الصالحة هي splitByNonAlpha وsplitByString وsplitByRegexp وasciiCJK وchinese وicu وjapanese وngrams وsparseGrams وarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فالقيمة الافتراضية هي splitByNonAlpha. const String
  • locale — ينطبق فقط إذا كانت الوسيطة tokenizer هي icu: الإعدادات المحلية الإلزامية، مثل 'ja'. const String
  • n — ينطبق فقط إذا كانت الوسيطة tokenizer هي ngrams: معلمة اختيارية تحدد طول الـ ngrams. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي 3. const UInt8
  • separators — ينطبق فقط إذا كانت الوسيطة tokenizer هي split: معلمة اختيارية تحدد سلاسل الفواصل. إذا لم تُحدَّد صراحةً، فالقيمة الافتراضية هي [' ']. const Array(String)
  • regexp — ينطبق فقط إذا كانت الوسيطة tokenizer هي splitByRegexp: معلمة إلزامية تحدد فاصل التعبير النمطي. const String
  • min_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول الـ gram، والقيمة الافتراضية هي 3. const UInt8
  • max_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول الـ gram، والقيمة الافتراضية هي 100. const UInt8
  • min_cutoff_length — ينطبق فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع. const UInt8
  • granularity — ينطبق فقط إذا كانت الوسيطة 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 أو FixedString
  • tokenizer — مُقسِّم الرموز المراد استخدامه. الوسيطات الصالحة هي splitByNonAlpha وsplitByString وasciiCJK وngrams وsparseGrams وarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضية splitByNonAlpha. const String
  • locale — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي icu: الإعدادات المحلية الإلزامية، مثل 'ja'. const String
  • n — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي ngrams: معلمة اختيارية تحدد طول ngrams. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية 3. const UInt8
  • separators — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي split: معلمة اختيارية تحدد سلاسل الفواصل. إذا لم تُحدَّد صراحةً، فستكون القيمة الافتراضية [' ']. const Array(String)
  • regexp — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي splitByRegexp: معلمة إلزامية تحدد فاصل التعبير النمطي. const String
  • min_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول gram، والقيمة الافتراضية هي 3. const UInt8
  • max_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأقصى لطول gram، والقيمة الافتراضية هي 100. const UInt8
  • min_cutoff_length — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي sparseGrams: معلمة اختيارية تحدد الحد الأدنى لطول القطع. const UInt8
  • granularity — يكون ذا صلة فقط إذا كانت الوسيطة tokenizer هي chinese: معلمة اختيارية، إما coarse_grained (الافتراضي) أو fine_grained، تتحكم في دقة التقسيم. const String

القيمة المعادة

يعيد مصفوفة الرموز الناتجة من سلسلة الإدخال. Array

أمثلة

مُقسِّم الرموز الافتراضي

SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;
['test2']
Navigation