يتبع البحث غير الحساس لحالة الأحرف قواعد التحويل بين الأحرف الصغيرة والكبيرة في اللغة الإنجليزية. فعلى سبيل المثال، يكون الحرف الكبير لـ
i في اللغة الإنجليزية هو
I، بينما يكون في اللغة التركية İ - لذا قد تكون النتائج غير متوقعة في اللغات غير الإنجليزية.haystack) وسلسلة البحث (ويُشار إليها في هذا القسم باسم needle) نصّان مرمَّزان بترميز أحادي البايت. وإذا لم يتحقق هذا الافتراض،
فلا يُطرَح أي استثناء وتكون النتائج غير معرّفة. وعادةً ما تتوفر صيغ دوال منفصلة للبحث في السلاسل المرمَّزة بـ UTF-8.
وبالمثل، إذا استُخدمت صيغة دالة لـ UTF-8 وكانت سلاسل الإدخال ليست نصًا مرمَّزًا بـ UTF-8، فلا يُطرَح أي استثناء وتكون
النتائج غير معرّفة. لاحظ أيضًا أنه لا يُجرى أي تطبيع تلقائي لـ Unicode، ولكن يمكنك استخدام دوال
normalizeUTF8*() لهذا الغرض.
يُشرح كلٌّ من الدوال العامة للسلاسل ودوال الاستبدال في السلاسل بشكل منفصل.
التوثيق أدناه مُولَّد من جدول النظام
system.functions.countMatches
سلوك يعتمد على الإصداريعتمد سلوك هذه الدالة على إصدار ClickHouse:
- في الإصدارات < v25.6، تتوقف الدالة عن العد عند أول تطابق فارغ حتى إذا كان النمط يسمح بذلك.
- في الإصدارات >= 25.6، تواصل الدالة التنفيذ عند حدوث تطابق فارغ. ويمكن استعادة السلوك القديم باستخدام الإعداد
count_matches_stop_at_empty_match = true;
UInt64
أمثلة
عدّ تسلسلات الأرقام
Query
Response
countMatchesCaseInsensitive
countMatches، لكنه يُجري مطابقة تتجاهل حالة الأحرف.
البنية
haystack— السلسلة النصية المراد البحث فيها.Stringpattern— نمط تعبير نمطي.const String
UInt64
أمثلة
العدّ دون تمييز بين الأحرف الكبيرة والصغيرة
Query
Response
countSubstrings
needle ضمن السلسلة haystack.
البنية
haystack— السلسلة التي يُجرى البحث فيها. String أو Enum. -needle— السلسلة الفرعية المطلوب البحث عنها. String. -start_pos— الموضع (بدءًا من 1) فيhaystackالذي يبدأ منه البحث. UInt. اختياري.
UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
countSubstringsCaseInsensitive
countSubstrings، لكنه يحسب بغض النظر عن حالة الأحرف.
الصياغة
haystack— السلسلة التي يُجرى فيها البحث.StringأوEnumneedle— السلسلة الفرعية المطلوب البحث عنها.Stringstart_pos— اختياري. الموضع (بدءًا من 1) فيhaystackالذي يبدأ منه البحث.UInt*
needle في haystack. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
countSubstringsCaseInsensitiveUTF8
countSubstrings، لكنها تحسب بدون حساسية لحالة الأحرف، وتفترض أن haystack عبارة عن سلسلة UTF-8.
الصيغة
haystack— سلسلة UTF-8 يُجرى البحث فيها.StringأوEnumneedle— سلسلة فرعية يُبحث عنها.Stringstart_pos— اختياري. الموضع (ابتداءً من 1) فيhaystackالذي يبدأ منه البحث.UInt*
needle في haystack. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
extract
haystack— السلسلة المراد الاستخراج منها.Stringpattern— تعبير نمطي، يحتوي عادةً على مجموعة التقاط.const String
String
أمثلة
استخراج النطاق من البريد الإلكتروني
Query
Response
Query
Response
extractAll
extract، لكنها تُرجِع مصفوفة تضم جميع مطابقات التعبير النمطي في سلسلة نصية.
إذا لم يطابق ‘haystack’ التعبير النمطي ‘pattern’، فستُرجَع مصفوفة فارغة.
إذا كان التعبير النمطي يحتوي على مجموعات ملتقطة (أنماط فرعية)، فستُطابِق الدالة سلسلة الإدخال مع أول مجموعة ملتقطة.
البنية
haystack— السلسلة التي تُستخرج منها المقاطع.Stringpattern— تعبير نمطي، وقد يتضمن اختياريًا مجموعات التقاط.const String
Array(String)
أمثلة
استخراج جميع الأرقام
Query
Response
Query
Response
extractAllGroupsHorizontal
s—سلسلة الإدخالالمطلوب الاستخراج منها.StringأوFixedStringregexp—تعبير نمطيلإجراء المطابقة.const Stringأوconst FixedString
مصفوفة من المصفوفات، حيث تحتوي كل مصفوفة داخلية على جميع القيم الملتقطة من مجموعة ملتقطة واحدة عبر كل المطابقات. تحتوي المصفوفة الداخلية الأولى على جميع القيم الملتقطة من المجموعة 1، والثانية من المجموعة 2، وهكذا. وإذا لم يتم العثور على أي مطابقات، فستُعاد مصفوفة فارغة. Array(Array(String))
أمثلة
مثال على الاستخدام
Query
Response
extractGroups
extractAllGroupsHorizontal أو extractAllGroupsVertical.
الصيغة
s— سلسلة الإدخال المطلوب الاستخراج منها.StringأوFixedStringregexp— تعبير نمطي. يجب أن يحتوي على مجموعة ملتقطة واحدة على الأقل. ثابت.const Stringأوconst FixedString
1 إلى N، حيث إن N هو عدد المجموعات الملتقطة في regexp) لأول تطابق. وإذا لم يوجد تطابق، فستُعاد مصفوفة فارغة. Array(String)
أمثلة
مثال على الاستخدام
Query
Response
hasAllTokens
hasAnyTokens، لكنه يعيد 1 إذا كانت جميع الرموز في السلسلة أو المصفوفة needle تطابق السلسلة input، ويعيد 0 خلاف ذلك. وإذا كانت input عمودًا، فإنه يعيد جميع الصفوف التي تستوفي هذا الشرط.
يجب أن يكون للعمود
input فهرس نصي معرّف لضمان أفضل أداء.
إذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة مسحًا كاملًا للعمود دون استخدام فهرس، وهو أبطأ بكثير من البحث باستخدام فهرس.- الوسيط
input(دائمًا)، و - الوسيط
needle(إذا أُعطي على هيئة String) باستخدام مُجزِّئ الرموز المحدد للفهرس النصي. إذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا منه مُجزِّئ الرموزsplitByNonAlpha. إذا كان الوسيطneedleمن النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا تُجرى أي عملية إضافية لتجزئته إلى رموز.
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، فإن hasAllTokens يطبّقه على input، وعندما تكون needles من نوع String، يطبّقه أيضًا على needles قبل تجزئتها إلى رموز. وعندما تكون needles من نوع Array(String)، فتمرَّر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق.
لا يُطبَّق المعالج المسبق إلا على مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث بالنص الكامل.hasAllToken
الوسيطات
input— عمود الإدخال.StringأوFixedStringأوArray(String)أوArray(FixedString)needles— الرموز المراد البحث عنها.StringأوArray(String)tokenizer— مُجزِّئ الرموز المميزّة المراد استخدامه. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوasciiCJKوngramsوsparseGramsوarray. وهو اختياري، وإذا لم يُحدَّد صراحةً، فستكون القيمة الافتراضيةsplitByNonAlpha.const String
UInt8
أمثلة
استخدام أساسي مع سلسلة بحث من نوع String
Query
Response
Query
Response
tokens
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasAnyTokens
needle السلسلة input، ويعيد 0 خلاف ذلك. وإذا كانت input عمودًا، فإنه يعيد جميع الصفوف التي تستوفي هذا الشرط.
يجب تعريف فهرس نصي على العمود
input لتحقيق أفضل أداء.
وإذا لم يكن هناك فهرس نصي معرّف، فستُجري الدالة فحصًا كاملًا للعمود بالقوة الغاشمة، وهو أبطأ بعدة مراتب من البحث باستخدام فهرس.- الوسيط
input(دائمًا)، و - الوسيط
needle(إذا أُعطي على هيئة String) باستخدام مُقسِّم الرموز المحدد للفهرس النصي. وإذا لم يكن للعمود فهرس نصي معرّف، فسيُستخدم بدلًا من ذلك مُقسِّم الرموزsplitByNonAlpha. وإذا كان الوسيطneedleمن النوع Array(String)، فسيُعامل كل عنصر في المصفوفة على أنه رمز — ولا يحدث أي تجزئة إضافية إلى رموز.
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، فإن hasAnyTokens تطبّقه على input، وعندما تكون needles من النوع String، على needles قبل التجزئة إلى رموز. وعندما تكون needles من النوع Array(String)، تمر عناصرها كما هي ولا يُطبَّق عليها المعالج المسبق.
لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذا قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
ويُتسامح مع هذا التباين لتحسين سهولة استخدام البحث النصي الكامل.hasAnyToken
الوسيطات
input— عمود الإدخال.StringأوFixedStringأوNullable(String)أوNullable(FixedString)أوArray(String)أوArray(FixedString)أوArray(Nullable(String))أوArray(Nullable(FixedString))needles— التوكنات المراد البحث عنها.StringأوArray(String)tokenizer— أداة تقسيم النص المستخدمة. الوسيطات الصالحة هيsplitByNonAlphaوsplitByStringوasciiCJKوngramsوsparseGramsوarray. هذا الوسيط اختياري، وإذا لم يُحدَّد صراحةً، تكون القيمة الافتراضيةsplitByNonAlpha.const String
1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجِع 0. UInt8
أمثلة
الاستخدام الأساسي مع نمط بحث نصي
Query
Response
Query
Response
tokens
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasPhrase
input يحتوي على جميع الرموز من phrase بترتيب متتابع.
يجب أن يكون للعمود
input فهرس نصي مُعرّف للحصول على أفضل أداء.
إذا لم يكن هناك فهرس نصي مُعرّف، فستُجري الدالة فحصًا كاملًا للعمود، وهو أبطأ بعدة مراتب من البحث عبر الفهرس.input وphrase إلى رموز باستخدام مُجزِّئ الرموز المحدد للفهرس النصي.
إذا لم يكن للعمود فهرس نصي مُعرّف، فسيُستخدم بدلًا من ذلك مُجزِّئ الرموز splitByNonAlpha — ما لم يتم تمرير مُجزِّئ رموز باعتباره الوسيط الثالث الاختياري.
يجب أن يكون وسيط مُجزِّئ الرموز واحدًا من splitByNonAlpha أو splitByString أو ngrams أو asciiCJK.
عندما يعرّف الفهرس النصي معالجًا مسبقًا (على سبيل المثال
lowerUTF8)، تطبّقه hasPhrase على كلٍّ من input وphrase قبل تجزئتهما إلى رموز.
لا يُطبَّق المعالج المسبق إلا في مسار الفهرس النصي، لذلك قد تختلف النتائج بين الاستعلامات التي تستخدم الفهرس النصي والاستعلامات التي لا تستخدمه (مثل SETTINGS use_skip_indexes = 0).
يُتسامح مع هذا التباين لتحسين سهولة استخدام البحث النصي الكامل.hasToken وhasAnyTokens وhasAllTokens، تتطلب hasPhrase أن تظهر الرموز بالترتيب نفسه
ومن دون أي رموز فاصلة بينها. على سبيل المثال، تُرجع hasPhrase('the quick brown fox', 'quick fox') القيمة 0
لأن “brown” تظهر بين “quick” و”fox”.
الصياغة
matchPhrase
المعاملات
input— عمود الإدخال.StringأوFixedStringphrase— العبارة المراد البحث عنها.const Stringtokenizer— أداة تقسيم النص إلى رموز المراد استخدامها. اختياري، والقيمة الافتراضية هيsplitByNonAlpha.const String
1 إذا عُثر على العبارة كتسلسل متتالٍ من الرموز، وإلا فتُرجع 0. UInt8
أمثلة
مطابقة العبارة
Query
Response
Query
Response
hasSubsequence
haystack— السلسلة التي يُبحث فيها عن التسلسل الفرعي.Stringneedle— التسلسل الفرعي المطلوب البحث عنه.String
1 إذا كان needle تسلسلاً فرعياً من haystack، وإلا فيعيد 0. UInt8
أمثلة
فحص أساسي لتسلسل فرعي
Query
Response
Query
Response
hasSubsequenceCaseInsensitive
hasSubsequence، لكنه يبحث مع تجاهل حالة الأحرف.
الصياغة
haystack— السلسلة النصية التي يُجرى البحث ضمنها.Stringneedle— المتتالية الجزئية المراد البحث عنها.String
needle متتالية جزئية من haystack، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
hasSubsequenceCaseInsensitiveUTF8
hasSubsequenceUTF8، لكنه يبحث دون التفريق بين الأحرف الكبيرة والصغيرة.
الصياغة
haystack— سلسلة مرمّزة بـ UTF8 يُجرى البحث فيها.Stringneedle— سلسلة تسلسل فرعي مرمّزة بـ UTF8 يُبحث عنها.String
needle تسلسلاً فرعيًا من haystack، وإلا فتُرجِع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
hasSubsequenceUTF8
hasSubsequence، لكنها تفترض أن haystack و needle سلسلتان نصيتان مرمَّزتان بترميز UTF-8.
البنية
1 إذا كان needle تسلسلاً فرعيًا من haystack، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
hasToken
token المُعطى موجودًا في النص المراد البحث فيه.
يستخدم splitByNonAlpha كمُجزِّئ للرموز، أي إن token يُعرَّف بأنه أطول تتابع فرعي ممكن من المحارف المتتالية [0-9A-Za-z_] (الأرقام، ومحارف ASCII، والشرطة السفلية).
البنية
haystack— السلسلة النصية المطلوب البحث فيها.Stringtoken— التوكن المطلوب البحث عنه.const String
1 إذا عُثر على التوكن، و0 خلاف ذلك. UInt8
أمثلة
البحث عن توكن
Query
Response
hasTokenCaseInsensitive
needle داخل haystack باستخدام الفهرس tokenbf_v1.
الصياغة
- لا شيء.
hasTokenCaseInsensitiveOrNull
- لا شيء.
hasTokenOrNull
hasToken، لكنه يُرجع NULL إذا كان الرمز غير مُشكَّل على نحو صحيح.
الصيغة
haystack— السلسلة المراد البحث فيها. يجب أن تكون ثابتة.Stringtoken— الرمز المراد البحث عنه.const String
1 إذا عُثر على الرمز، و0 خلاف ذلك، وNULL إذا كان الرمز غير صحيح التكوين. Nullable(UInt8)
أمثلة
مثال على الاستخدام
Query
Response
highlight
haystack— النص المراد البحث فيه.StringأوFixedStringneedles— مصفوفة من عبارات البحث المراد إبرازها.const Array(String)open_tag— وسم الفتح الذي يُدرج قبل كل تطابق. القيمة الافتراضية:<em>.const Stringclose_tag— وسم الإغلاق الذي يُدرج بعد كل تطابق. القيمة الافتراضية:</em>.const String
String
أمثلة
إبراز أساسي
Query
Response
Query
Response
ilike
like، لكنه يبحث بدون مراعاة حالة الأحرف. ويدعم عبارة ESCAPE الاختيارية (راجع like).
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.StringأوFixedStringpattern— نمط LIKE المطلوب مطابقته.Stringescape_character— سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من\. الافتراضي:\.String
1 إذا كانت السلسلة تطابق نمط LIKE (غير حساس لحالة الأحرف)، وإلا تُعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
like
haystack تطابق تعبير LIKE pattern.
يمكن أن يحتوي تعبير LIKE على أحرف عادية والرموز الوصفية التالية:
- يشير
%إلى أي عدد من الأحرف كيفما كانت (بما في ذلك عدم وجود أي أحرف). - يشير
_إلى حرف واحد كيفما كان. - تُستخدم
\للهروب من الرموز الحرفية%و_و\.
_ نقطة الترميز Unicode ¥، التي تُمثَّل في UTF-8 باستخدام بايتين.
إذا لم تكن haystack أو تعبير LIKE صالحَين وفق UTF-8، فسيكون السلوك غير معرّف.
لا يُجرى أي تطبيع Unicode تلقائيًا، ويمكنك استخدام الدوال normalizeUTF8* لهذا الغرض.
للمطابقة مع % و_ و\ الحرفية (وهي محارف وصفية في LIKE)، أضف قبلها شرطة مائلة عكسية: \% و\_ و\\.
وتفقد الشرطة المائلة العكسية معناها الخاص (أي تُفسَّر حرفيًا) إذا سبقت حرفًا غير % أو _ أو \.
يتطلب ClickHouse أيضًا تهريب الشرطات المائلة العكسية داخل السلاسل كما هو موضح هنا، لذا ستحتاج فعليًا إلى كتابة
\\% و\\_ و\\\\.LIKE من الشكل %needle%، تكون الدالة بالسرعة نفسها التي تتمتع بها الدالة position.
أما جميع تعابير LIKE الأخرى فتُحوَّل داخليًا إلى تعبير نمطي وتُنفَّذ بأداء مماثل للدالة match.
عبارة ESCAPE
ESCAPE الاختيارية محرف هروب مخصّصًا (ويجب أن يكون محرف ASCII واحدًا).
عند تحديده، يستبدل محرف الهروب المخصّص الشرطة المائلة العكسية الافتراضية عند التعامل مع المحرفين الخاصين % و _.
يمكن لمحرف الهروب أن يُستخدم مع ثلاثة أشياء: % (علامة نسبة مئوية حرفية)، و_ (شرطة سفلية حرفية)، ونفسه (محرف هروب حرفي).
عند استخدام محرف هروب مخصّص، لا يعود للشرطة المائلة العكسية أي معنى خاص، وتُعامَل على أنها محرف حرفي.
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.StringأوFixedStringpattern— نمطLIKEالمستخدم للمطابقة. يمكن أن يحتوي على%(يطابق أي عدد من المحارف)، و_(يطابق محرفًا واحدًا)، و\كحرف هروب.Stringescape_character— سلسلة نصية اختيارية مكوّنة من محرف واحد تُستخدم كحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة النصية تطابق نمط LIKE، وإلا فتُعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
Query
Response
locate
position، ولكن مع تبديل الوسيطين haystack وlocate.
سلوك يعتمد على الإصداريعتمد سلوك هذه الدالة على إصدار ClickHouse:
- في الإصدارات < v24.3، كانت
locateاسمًا مستعارًا للدالةposition، وكانت تقبل الوسائط(haystack, needle[, start_pos]). - في الإصدارات >= 24.3، أصبحت
locateدالة مستقلة (لتحقيق توافق أفضل مع MySQL)، وتقبل الوسائط(needle, haystack[, start_pos]). يمكن استعادة السلوك السابق باستخدام الإعدادfunction_locate_has_mysql_compatible_argument_order = false.
needle— السلسلة الفرعية المطلوب البحث عنها.Stringhaystack— السلسلة التي يُجرى فيها البحث.StringأوEnumstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع بدء العد من 1).UInt
0 إذا لم يُعثر عليها. UInt64
أمثلة
الاستخدام الأساسي
Query
Response
match
¥ داخليًا على هيئة بايتين، لكن المطابقة تتعامل معه باعتباره نقطة ترميز واحدة.
يجب ألا يحتوي التعبير النمطي على بايتات NULL.
إذا لم تكن السلسلة النصية المُدخلَة أو النمط بتنسيق UTF-8 صالحين، فسيكون السلوك غير معرّف.
وعلى خلاف السلوك الافتراضي في re2، فإن . يطابق فواصل الأسطر. لتعطيل ذلك، أضف (?-s) في بداية النمط.
النمط غير مقيَّد. ولمطابقة السلسلة النصية بالكامل، قيِّد النمط بنفسك باستخدام ^ و $.
إذا كنت تريد فقط البحث عن سلاسل فرعية، فيمكنك استخدام الدالتين like أو position بدلًا من ذلك، إذ تعملان أسرع بكثير من هذه الدالة.
صياغة عامل التشغيل البديلة: haystack REGEXP pattern.
الصياغة
REGEXP_MATCHES
الوسيطات
haystack— سلسلة يُبحث فيها عن النمط.Stringpattern— نمط تعبير نمطي. يمكن أن يكون ثابتًا أو أن يأتي من عمود.String
1 إذا كان هناك تطابق مع النمط، و0 خلاف ذلك. UInt8
أمثلة
مطابقة الأنماط الأساسية
Query
Response
Query
Response
Query
Response
multiFuzzyMatchAllIndices
multiFuzzyMatchAny، لكنه يعيد مصفوفة بجميع الفهارس المطابقة لـ haystack، بأي ترتيب، ضمن مسافة تحرير ثابتة.
الصياغة
haystack— سلسلة يُجرى البحث فيها.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— مصفوفة من الأنماط المطلوب المطابقة معها.Array(String)
haystack ضمن مسافة التحرير المحددة، بأي ترتيب. ويعيد مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64)
أمثلة
مثال على الاستخدام
Query
Response
multiFuzzyMatchAny
multiMatchAny، لكنه يعيد القيمة 1 إذا طابق أي نمط النص ضمن مسافة تحرير ثابتة.
تعتمد هذه الدالة على الميزة التجريبية في مكتبة hyperscan، وقد تكون بطيئة في بعض الحالات الحدّية.
يعتمد الأداء على قيمة مسافة التحرير والأنماط المستخدمة، لكنه يكون دائمًا أعلى كلفة مقارنةً بالنظائر غير التقريبية.
لا تدعم عائلة الدوال
multiFuzzyMatch*() التعبيرات النمطية UTF-8 (إذ تتعامل معها كتسلسل من البايتات) بسبب قيود hyperscan.haystack— السلسلة التي يُجرى فيها البحث.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— اختياري. مصفوفة من الأنماط للمطابقة معها.Array(String)
1 إذا طابق أي نمط القيمة haystack ضمن مسافة التحرير المحددة، وإلا فتُرجِع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiFuzzyMatchAnyIndex
multiFuzzyMatchAny، لكنه يُرجع أي فهرس يطابق haystack ضمن مسافة تحرير ثابتة.
الصياغة
haystack— السلسلة النصية التي يُجرى البحث فيها.Stringdistance— الحد الأقصى لمسافة التحرير للمطابقة التقريبية.UInt8pattern— مصفوفة من الأنماط المطلوب المطابقة معها.Array(String)
haystack ضمن مسافة التحرير المحددة (بدءًا من 1)، وإلا يعيد 0. UInt64
أمثلة
مثال على الاستخدام
Query
Response
multiMatchAllIndices
multiMatchAny، لكنها تُرجع مصفوفة بجميع الفهارس التي تطابق haystack بأي ترتيب.
البنية
haystack— السلسلة التي يُجرى البحث فيها.Stringpattern— التعبيرات النمطية المطلوب المطابقة معها.String
haystack بأي ترتيب. وتُرجع مصفوفة فارغة إذا لم يتم العثور على أي تطابقات. Array(UInt64)
أمثلة
مثال على الاستخدام
Query
Response
multiMatchAny
multiSearchAny بدلًا من ذلك، فهي أسرع بكثير من هذه الدالة.
البنية
haystack— السلسلة التي يُبحث فيها عن الأنماط.Stringpattern1[, pattern2, ...]— مصفوفة تضم نمط تعبير نمطي واحدًا أو أكثر.Array(String)
1 إذا طابق أي نمط، و0 خلاف ذلك. UInt8
أمثلة
مطابقة عدة أنماط
Query
Response
Query
Response
multiMatchAnyIndex
multiMatchAny، لكنه يُرجع فهرس أي تطابق مع haystack.
الصيغة
haystack— سلسلة نصية يُجرى البحث فيها.Stringpattern— تعبيرات نمطية تجري المطابقة معها.Array(String)
UInt64
أمثلة
مثال على الاستخدام
Query
Response
multiSearchAllPositions
position، لكنه يعيد مصفوفة من المواضع (بالبايت، بدءًا من 1) لعدة سلاسل فرعية needle ضمن سلسلة haystack.
لا تدعم جميع دوال multiSearch*() أكثر من 2^8 من قيم needle.
الصياغة
haystack— سلسلة يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
0 إذا لم يُعثر عليها. Array(UInt64)
أمثلة
البحث عن عدة سلاسل فرعية
Query
Response
multiSearchAllPositionsCaseInsensitive
multiSearchAllPositions، لكنه لا يميّز بين الأحرف الكبيرة والصغيرة.
الصيغة
haystack— سلسلة نصية يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
0 إذا لم يُعثر على السلسلة الفرعية. Array(UInt64)
أمثلة
بحث متعدد غير حساس لحالة الأحرف
Query
Response
multiSearchAllPositionsCaseInsensitiveUTF8
multiSearchAllPositionsUTF8، لكنه يتجاهل اختلاف حالة الأحرف.
البنية
haystack— سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها.Stringneedle— سلاسل فرعية مرمّزة بترميز UTF-8 يُبحث عنها.Array(String)
Array
أمثلة
بحث UTF-8 غير متأثر بحالة الأحرف
Query
Response
multiSearchAllPositionsUTF8
multiSearchAllPositions، لكنها تفترض أن haystack والسلاسل الفرعية needle عبارة عن سلاسل نصية مرمّزة بترميز UTF-8.
الصياغة
haystack— سلسلة مرمّزة بترميز UTF-8 يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة من السلاسل الفرعية المرمّزة بترميز UTF-8 المطلوب البحث عنها.Array(String)
0 إذا لم يُعثر على السلسلة الفرعية. Array
أمثلة
بحث متعدد في UTF-8
Query
Response
multiSearchAny
multiSearchAnyCaseInsensitive، multiSearchAnyUTF8 وmultiSearchAnyCaseInsensitiveUTF8 صيغًا غير حساسة لحالة الأحرف و/أو صيغ UTF-8 لهذه الدالة.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.Stringneedle1[, needle2, ...]— مصفوفة من السلاسل الفرعية المراد البحث عنها.Array(String)
1 عند وجود مطابقة واحدة على الأقل، وإلا يعيد 0. UInt8
أمثلة
البحث عن أي مطابقة
Query
Response
multiSearchAnyCaseInsensitive
haystack— السلسلة التي يُجرى فيها البحث.Stringneedle— السلاسل الفرعية المطلوب البحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل غير حسّاسة لحالة الأحرف، وإلا فيعيد 0. UInt8
أمثلة
بحث غير حسّاس لحالة الأحرف
Query
Response
multiSearchAnyCaseInsensitiveUTF8
haystack— سلسلة UTF-8 يُجرى فيها البحث.Stringneedle— سلاسل فرعية بترميز UTF-8 يُبحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل دون حساسية لحالة الأحرف، وإلا فتُرجع 0. UInt8
أمثلة
في سلسلة UTF-8 ‘Здравствуйте’، تحقّق مما إذا كان الحرف ‘з’ (حرفًا صغيرًا) موجودًا
Query
Response
multiSearchAnyUTF8
haystack والسلاسل الفرعية needle هي سلاسل نصية مرمّزة بترميز UTF-8.
الصيغة
haystack— سلسلة UTF-8 يُجرى البحث داخلها.Stringneedle— سلاسل فرعية بترميز UTF-8 يُبحث عنها.Array(String)
1 إذا وُجدت مطابقة واحدة على الأقل، وإلا فتُرجع 0 إذا لم توجد أي مطابقة. UInt8
أمثلة
باعتبار ‘你好,世界’ (‘Hello, world’) سلسلة UTF-8، تحقّق مما إذا كانت السلسلة تحتوي على أي من الحرفين 你 أو 界
Query
Response
multiSearchFirstIndex
haystack— السلسلة النصية المطلوب البحث فيها.Stringneedles— مصفوفة من السلاسل النصية المطلوب البحث عنها.Array(String)
needles) لأول needle يُعثر عليه في haystack. وتعيد 0 إذا لم يتم العثور على أي من عناصر needles. البحث حساس لحالة الأحرف. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexCaseInsensitive
i (ابتداءً من 1) لأول needle_i يتم العثور عليه من اليسار في السلسلة haystack، وتعيد 0 بخلاف ذلك.
يتجاهل حالة الأحرف.
البنية
haystack— السلسلة النصية التي يُجرى فيها البحث.Stringneedle— السلاسل الفرعية المراد البحث عنها.Array(String)
needle يُعثر عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فستكون القيمة 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiSearchFirstIndexCaseInsensitiveUTF8
haystack— السلسلة النصية المطلوب البحث فيها.Stringneedles— مصفوفة من السلاسل النصية المطلوب البحث عنها.Array(String)
needles) لأول سلسلة يتم العثور عليها داخل haystack. وتُرجع 0 إذا لم يتم العثور على أي سلسلة. البحث غير حساس لحالة الأحرف، ويراعي ترميز المحارف UTF-8. UInt64
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
multiSearchFirstIndexUTF8
i (بدءًا من 1) لأول needle_i يتم العثور عليه من أقصى اليسار في السلسلة haystack، وتُرجع 0 بخلاف ذلك.
وتفترض أن haystack وneedle سلسلتان مرمّزتان بترميز UTF-8.
البنية
haystack— سلسلة UTF-8 يُجرى البحث فيها.Stringneedle— مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
needle يتم العثور عليه من جهة اليسار. وإذا لم توجد أي مطابقة، فتكون القيمة 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
multiSearchFirstPosition
position، لكنها تُرجع الإزاحة الأولى في سلسلة haystack التي تطابق أيًا من سلاسل needle المتعددة.
توفّر الدوال multiSearchFirstPositionCaseInsensitive وmultiSearchFirstPositionUTF8 وmultiSearchFirstPositionCaseInsensitiveUTF8 أشكالًا غير حساسة لحالة الأحرف و/أو أشكال UTF-8 لهذه الدالة.
الصياغة
haystack— السلسلة النصية التي يُجرى فيها البحث.Stringneedle1[, needle2, ...]— مصفوفة تضم سلسلة فرعية واحدة أو أكثر للبحث عنها.Array(String)
haystack تطابق أيًا من سلاسل needle المتعددة، وإلا فستكون 0 إذا لم يُعثر على أي تطابق. UInt64
أمثلة
البحث عن أول موضع
Query
Response
multiSearchFirstPositionCaseInsensitive
haystack— السلسلة التي يُجرى فيها البحث.Stringneedle— مصفوفة من السلاسل الفرعية المطلوب البحث عنها.Array(String)
haystack تطابق أيًّا من سلاسل needle. وتعيد 0 إذا لم توجد أي مطابقة. UInt64
أمثلة
أول موضع دون حساسية لحالة الأحرف
Query
Response
multiSearchFirstPositionCaseInsensitiveUTF8
haystack وneedle سلسلتان بترميز UTF-8 ولا يميّز بين الأحرف الكبيرة والصغيرة.
الصياغة
haystack— سلسلة نصية بترميز UTF-8 يُجرى البحث فيها.Stringneedle— مصفوفة من السلاسل الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
haystack تطابق أيًّا من سلاسل needle المتعددة، مع تجاهل حالة الأحرف. وتعيد 0 إذا لم يتم العثور على أي تطابق. UInt64
أمثلة
اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًّا من قيم needle المعطاة
Query
Response
multiSearchFirstPositionUTF8
haystack وneedle سلسلتان نصيتان بترميز UTF-8.
البنية
haystack— سلسلة UTF-8 يُجرى البحث ضمنها.Stringneedle— مصفوفة من المقاطع الفرعية بترميز UTF-8 المطلوب البحث عنها.Array(String)
haystack تطابق أيًا من سلاسل needle المتعددة. تُعيد 0 إذا لم توجد أي مطابقة. UInt64
أمثلة
اعثر على أول إزاحة في سلسلة UTF-8 ‘Здравствуй, мир’ (‘Hello, world’) تطابق أيًا من قيم needle المعطاة
Query
Response
ngramDistance
ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8.
البنية
Float32 بين 0 و1. وكلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين. Float32
أمثلة
حساب مسافة 4-gram
Query
Response
ngramDistanceCaseInsensitive
ngramDistance.
تحسب مسافة 4-gram بين سلسلتين نصيتين مع تجاهل حالة الأحرف.
كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين النصيتين.
الصيغة
0 و1. Float32
أمثلة
مسافة 4-gram بدون تمييز حالة الأحرف
Query
Response
ngramDistanceCaseInsensitiveUTF8
ngramDistance لا يراعي حالة الأحرف.
يفترض أن السلسلتين needle وhaystack مرمَّزتان بترميز UTF-8، ولا يراعي حالة الأحرف.
يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8 دون مراعاة حالة الأحرف.
كلما صغرت القيمة المُعادة، زاد التشابه بين السلسلتين.
البنية
haystack— سلسلة المقارنة الأولى المرمّزة بترميز UTF-8.Stringneedle— سلسلة المقارنة الثانية المرمّزة بترميز UTF-8.String
0 و1. Float32
أمثلة
مسافة 3-gram غير الحساسة لحالة الأحرف في UTF-8
Query
Response
ngramDistanceUTF8
ngramDistance.
يفترض أن سلسلتي needle وhaystack مُشفَّرتان بترميز UTF-8.
يحسب مسافة 3-gram بين سلسلتين بترميز UTF-8.
كلما كانت القيمة المُعادة أصغر، زاد التشابه بين السلسلتين.
البنية
haystack— سلسلة المقارنة الأولى المُرمَّزة بـ UTF-8.Stringneedle— سلسلة المقارنة الثانية المُرمَّزة بـ UTF-8.String
0 و1. Float32
أمثلة
مسافة 3-gram بترميز UTF-8
Query
Response
ngramSearch
ngramSearchCaseInsensitive وngramSearchUTF8 وngramSearchCaseInsensitiveUTF8.
الصيغة
1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8
أمثلة
البحث باستخدام 4-grams
Query
Response
ngramSearchCaseInsensitive
ngramSearch.
تحسب الفرق غير المتماثل بين سلسلة needle وسلسلة haystack، أي عدد مقاطع n-gram في needle مطروحًا منه العدد المشترك من مقاطع n-gram، ثم يُطبَّع على عدد مقاطع n-gram في needle.
تتحقق مما إذا كانت مسافة 4-gram بين سلسلتين أقل من أو تساوي threshold محددة، مع تجاهل حالة الأحرف.
البنية
1 إذا كانت مسافة 4-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فتعيد 0. UInt8
أمثلة
بحث غير حساس لحالة الأحرف باستخدام 4-grams
Query
Response
ngramSearchCaseInsensitiveUTF8
ngramSearch يعمل على UTF-8 دون تمييز بين الأحرف الكبيرة والصغيرة.
يفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8، ويتجاهل الفرق بين الأحرف الكبيرة والصغيرة.
يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة، دون تمييز بين الأحرف الكبيرة والصغيرة.
الصيغة
1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيعيد 0. UInt8
أمثلة
بحث UTF-8 غير حساس لحالة الأحرف باستخدام 3-grams
Query
Response
ngramSearchUTF8
ngramSearch.
تفترض أن haystack وneedle سلسلتان نصيتان بترميز UTF-8.
يتحقق مما إذا كانت مسافة 3-gram بين سلسلتين نصيتين بترميز UTF-8 أقل من أو تساوي عتبة محددة.
البنية
1 إذا كانت مسافة 3-gram بين السلسلتين أقل من العتبة أو تساويها (1.0 افتراضيًا)، وإلا فيُرجع 0. UInt8
أمثلة
البحث في UTF-8 باستخدام 3-grams
Query
Response
notILike
% و _ لمطابقة SQL LIKE. ويدعم عبارة ESCAPE الاختيارية (راجع like).
البنية
haystack— سلسلة الإدخال المراد البحث فيها.StringأوFixedStringpattern— نمط SQL LIKE المراد مطابقته. يطابق%أي عدد من المحارف (بما في ذلك الصفر)، ويطابق_محرفًا واحدًا فقط.Stringescape_character— سلسلة اختيارية من محرف واحد تُستخدَم كمحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة لا تطابق النمط (من دون حساسية لحالة الأحرف)، وإلا فتعيد 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
notLike
like، لكنها تنفي النتيجة. وتدعم بند ESCAPE الاختياري (راجع like).
الصيغة
haystack— السلسلة التي يُجرى فيها البحث.StringأوFixedStringpattern— نمطLIKEالمراد مطابقته.Stringescape_character— سلسلة اختيارية مكوّنة من محرف واحد تُستخدم كمحرف هروب بدلًا من\. القيمة الافتراضية:\.String
1 إذا كانت السلسلة لا تطابق نمط LIKE، وإلا فتُرجع 0. UInt8
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
position
needle داخل السلسلة haystack (بالبايتات، بدءًا من 1).
إذا كانت السلسلة الفرعية needle فارغة، فتُطبَّق القواعد التالية:
- إذا لم يتم تحديد
start_pos: فأعد1 - إذا كان
start_pos = 0: فأعد1 - إذا كان
start_pos >= 1وstart_pos <= length(haystack) + 1: فأعدstart_pos - بخلاف ذلك: فأعد
0
locate، وpositionCaseInsensitive، وpositionUTF8، وpositionCaseInsensitiveUTF8.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— الموضع فيhaystackالذي يبدأ منه البحث (بترقيم يبدأ من 1). اختياري.UInt
0 إذا لم يُعثر عليها. UInt64
أمثلة
الاستخدام الأساسي
Query
Response
Query
Response
Query
Response
Query
Response
positionCaseInsensitive
position، لكنه غير حساس لحالة الأحرف.
الصيغة
instr
الوسيطات
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المطلوب البحث عنها.Stringstart_pos— اختياري. الموضع (مع احتساب المواضع بدءًا من 1) فيhaystackالذي يبدأ منه البحث.UInt*
0. UInt64
أمثلة
بحث غير حساس لحالة الأحرف
Query
Response
positionCaseInsensitiveUTF8
positionUTF8، لكنها تبحث مع تجاهل حالة الأحرف.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع احتساب الموضع الأول على أنه 1).UInt*
0 إذا لم يُعثر عليها. UInt64
أمثلة
بحث UTF-8 غير حساس لحالة الأحرف
Query
Response
positionUTF8
position، لكنه يفترض أن haystack وneedle سلسلتان نصيتان مرمّزتان بترميز UTF-8.
الصيغة
haystack— السلسلة التي يُجرى البحث فيها.StringأوEnumneedle— السلسلة الفرعية المراد البحث عنها.Stringstart_pos— اختياري. الموضع فيhaystackالذي يبدأ منه البحث (مع بدء العد من 1).UInt*
0 إذا لم يُعثر عليها. UInt64
أمثلة
عدّ محارف UTF-8
Query
Response