* Replace underscores with hyphens * remove temporary code * fix style check * fix collapse
22 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
41 | برای جستجوی رشتهها |
توابع برای جستجوی رشته ها
جستجو به طور پیش فرض در تمام این توابع حساس به حروف است. انواع جداگانه ای برای جستجوی غیر حساس مورد وجود دارد.
موقعیت (انبار کاه, سوزن), تعیین محل (انبار کاه, سوزن)
بازگرداندن موقعیت (به بایت) از رشته پیدا شده است در رشته, با شروع از 1.
این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری تک بایت. اگر این فرض ملاقات کرد و یک شخصیت نمی تواند با استفاده از یک بایت تنها نشان داده شود, تابع یک استثنا پرتاب نمی کند و برخی از نتیجه غیر منتظره را برمی گرداند. اگر شخصیت را می توان با استفاده از دو بایت نشان, این دو بایت و غیره استفاده.
برای یک جستجو غیر حساس به حالت, استفاده از تابع حساس به حالت.
نحو
position(haystack, needle)
نام مستعار: locate(haystack, needle)
.
پارامترها
haystack
— string, in which substring will to be searched. رشته.needle
— substring to be searched. رشته.
مقادیر بازگشتی
- موقعیت شروع در بایت (شمارش از 1), اگر زیر رشته پیدا شد.
- 0, اگر زیر رشته یافت نشد.
نوع: Integer
.
مثالها
عبارت “Hello, world!” شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری تک بایت. تابع بازده برخی از نتیجه انتظار می رود:
پرسوجو:
SELECT position('Hello, world!', '!')
نتیجه:
┌─position('Hello, world!', '!')─┐
│ 13 │
└────────────────────────────────┘
همان عبارت در روسیه شامل شخصیت های که نمی تواند با استفاده از یک بایت نشان داده شود. تابع بازده برخی از نتیجه غیر منتظره (استفاده موقعیت 8 تابع برای متن چند بایت کد گذاری):
پرسوجو:
SELECT position('Привет, мир!', '!')
نتیجه:
┌─position('Привет, мир!', '!')─┐
│ 21 │
└───────────────────────────────┘
حساس به حالت
همان موقعیت بازگرداندن موقعیت (به بایت) از رشته پیدا شده است در رشته, با شروع از 1. استفاده از تابع برای یک جستجو غیر حساس به حالت.
این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری تک بایت. اگر این فرض ملاقات کرد و یک شخصیت نمی تواند با استفاده از یک بایت تنها نشان داده شود, تابع یک استثنا پرتاب نمی کند و برخی از نتیجه غیر منتظره را برمی گرداند. اگر شخصیت را می توان با استفاده از دو بایت نشان, این دو بایت و غیره استفاده.
نحو
positionCaseInsensitive(haystack, needle)
پارامترها
haystack
— string, in which substring will to be searched. رشته.needle
— substring to be searched. رشته.
مقادیر بازگشتی
- موقعیت شروع در بایت (شمارش از 1), اگر زیر رشته پیدا شد.
- 0, اگر زیر رشته یافت نشد.
نوع: Integer
.
مثال
پرسوجو:
SELECT positionCaseInsensitive('Hello, world!', 'hello')
نتیجه:
┌─positionCaseInsensitive('Hello, world!', 'hello')─┐
│ 1 │
└───────────────────────────────────────────────────┘
موقعیت 8
بازگرداندن موقعیت (در نقاط یونیکد) از رشته پیدا شده است در رشته, با شروع از 1.
این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری شده وزارت مخابرات 8. اگر این فرض ملاقات نمی, تابع یک استثنا پرتاب نمی کند و برخی از نتیجه غیر منتظره را برمی گرداند. اگر شخصیت را می توان با استفاده از دو نقطه یونیکد نشان, این دو و غیره استفاده.
برای یک جستجو غیر حساس به حالت, استفاده از تابع در حال بارگذاری.
نحو
positionUTF8(haystack, needle)
پارامترها
haystack
— string, in which substring will to be searched. رشته.needle
— substring to be searched. رشته.
مقادیر بازگشتی
- موقعیت شروع در یونیکد امتیاز (شمارش از 1), اگر زیر رشته پیدا شد.
- 0, اگر زیر رشته یافت نشد.
نوع: Integer
.
مثالها
عبارت “Hello, world!” در روسیه شامل مجموعه ای از نقاط یونیکد نمایندگی یک متن کد گذاری تک نقطه. تابع بازده برخی از نتیجه انتظار می رود:
پرسوجو:
SELECT positionUTF8('Привет, мир!', '!')
نتیجه:
┌─positionUTF8('Привет, мир!', '!')─┐
│ 12 │
└───────────────────────────────────┘
عبارت “Salut, étudiante!”, جایی که شخصیت é
می توان با استفاده از یک نقطه نشان داد (U+00E9
) یا دو نقطه (U+0065U+0301
) تابع را می توان بازگشت برخی از نتیجه غیر منتظره:
پرسوجو برای نامه é
که نشان داده شده است یک نقطه یونیکد U+00E9
:
SELECT positionUTF8('Salut, étudiante!', '!')
نتیجه:
┌─positionUTF8('Salut, étudiante!', '!')─┐
│ 17 │
└────────────────────────────────────────┘
پرسوجو برای نامه é
که به نمایندگی از دو نقطه یونیکد U+0065U+0301
:
SELECT positionUTF8('Salut, étudiante!', '!')
نتیجه:
┌─positionUTF8('Salut, étudiante!', '!')─┐
│ 18 │
└────────────────────────────────────────┘
در حال بارگذاری
همان موقعیت 8, اما غیر حساس به حروف است. بازگرداندن موقعیت (در نقاط یونیکد) از رشته پیدا شده است در رشته, با شروع از 1.
این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری شده وزارت مخابرات 8. اگر این فرض ملاقات نمی, تابع یک استثنا پرتاب نمی کند و برخی از نتیجه غیر منتظره را برمی گرداند. اگر شخصیت را می توان با استفاده از دو نقطه یونیکد نشان, این دو و غیره استفاده.
نحو
positionCaseInsensitiveUTF8(haystack, needle)
پارامترها
haystack
— string, in which substring will to be searched. رشته.needle
— substring to be searched. رشته.
مقدار بازگشتی
- موقعیت شروع در یونیکد امتیاز (شمارش از 1), اگر زیر رشته پیدا شد.
- 0, اگر زیر رشته یافت نشد.
نوع: Integer
.
مثال
پرسوجو:
SELECT positionCaseInsensitiveUTF8('Привет, мир!', 'Мир')
نتیجه:
┌─positionCaseInsensitiveUTF8('Привет, мир!', 'Мир')─┐
│ 9 │
└────────────────────────────────────────────────────┘
چند ضلعی
همان موقعیت اما بازگشت Array
از موقعیت (به بایت) از بسترهای مربوطه موجود در رشته. موقعیت ها با شروع از نمایه 1.
جستجو در دنباله ای از بایت بدون توجه به رمزگذاری رشته و میترا انجام می شود.
- برای جستجو اسکی غیر حساس به حالت, استفاده از تابع
multiSearchAllPositionsCaseInsensitive
. - برای جستجو در یوتف-8, استفاده از تابع چند ضلعی پایگاه داده های8.
- برای غیر حساس به حالت جستجو-8, استفاده از تابع چند تخصیص چندگانه 18.
نحو
multiSearchAllPositions(haystack, [needle1, needle2, ..., needlen])
پارامترها
haystack
— string, in which substring will to be searched. رشته.needle
— substring to be searched. رشته.
مقادیر بازگشتی
- مجموعه ای از موقعیت های شروع در بایت (شمارش از 1), اگر زیر رشته مربوطه پیدا شد و 0 اگر یافت نشد.
مثال
پرسوجو:
SELECT multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])
نتیجه:
┌─multiSearchAllPositions('Hello, World!', ['hello', '!', 'world'])─┐
│ [0,13,0] │
└───────────────────────────────────────────────────────────────────┘
چند ضلعی پایگاه داده های8
ببینید multiSearchAllPositions
.
ترکیب چندجفتاری (هیستک, [سوزن1 سوزن2, …, needleنه])
همان position
اما بازده سمت چپ افست از رشته haystack
که به برخی از سوزن همسان.
برای یک جستجوی غیر حساس مورد و یا / و در توابع استفاده از فرمت جی تی اف 8 multiSearchFirstPositionCaseInsensitive, multiSearchFirstPositionUTF8, multiSearchFirstPositionCaseInsensitiveUTF8
.
مقالههای جدید مرتبط با تحقیق این نویسنده1 سوزن2, …, needleنه])
بازگرداندن شاخص i
(شروع از 1) سوزن چپ پیدا شده استمن … در رشته haystack
و 0 در غیر این صورت.
برای یک جستجوی غیر حساس مورد و یا / و در توابع استفاده از فرمت جی تی اف 8 multiSearchFirstIndexCaseInsensitive, multiSearchFirstIndexUTF8, multiSearchFirstIndexCaseInsensitiveUTF8
.
مولسیرچانی (هیستک, [سوزن1 سوزن2, …, needleنه])
بازده 1, اگر حداقل یک سوزن رشتهمن … مسابقات رشته haystack
و 0 در غیر این صورت.
برای یک جستجوی غیر حساس مورد و یا / و در توابع استفاده از فرمت جی تی اف 8 multiSearchAnyCaseInsensitive, multiSearchAnyUTF8, multiSearchAnyCaseInsensitiveUTF8
.
!!! note "یادداشت"
در همه multiSearch*
توابع تعداد سوزن ها باید کمتر از 2 باشد8 به دلیل مشخصات پیاده سازی.
همخوانی داشتن (کومه علف خشک, الگو)
بررسی اینکه رشته با pattern
عبارت منظم. یک re2
عبارت منظم. این نحو از re2
عبارات منظم محدود تر از نحو عبارات منظم پرل است.
بازده 0 اگر مطابقت ندارد, یا 1 اگر منطبق.
توجه داشته باشید که نماد ممیز (\
) برای فرار در عبارت منظم استفاده می شود. همان نماد برای فرار در لیتر رشته استفاده می شود. بنابراین به منظور فرار از نماد در یک عبارت منظم, شما باید دو بک اسلش ارسال (\) در یک رشته تحت اللفظی.
عبارت منظم با رشته کار می کند به عنوان اگر مجموعه ای از بایت است. عبارت منظم می تواند بایت پوچ نیست. برای الگوهای به جستجو برای بسترهای در یک رشته, بهتر است به استفاده از مانند و یا ‘position’ از اونجایی که خیلی سریعتر کار میکنن
ملتمتچانی (کومه علف خشک, [الگو1 الگو2, …, patternنه])
همان match
, اما بازده 0 اگر هیچ یک از عبارات منظم همسان و 1 اگر هر یک از الگوهای مسابقات. این استفاده می کند hyperscan کتابخونه. برای الگوهای به جستجو بسترهای در یک رشته, بهتر است به استفاده از multiSearchAny
چون خیلی سریعتر کار میکنه
!!! note "یادداشت"
طول هر یک از haystack
رشته باید کمتر از 2 باشد32 بایت در غیر این صورت استثنا پرتاب می شود. این محدودیت صورت می گیرد به دلیل hyperscan API.
مقالههای جدید مرتبط با تحقیق این نویسنده1 الگو2, …, patternنه])
همان multiMatchAny
, اما بازگرداندن هر شاخص که منطبق بر انبار کاه.
اطلاعات دقیق1 الگو2, …, patternنه])
همان multiMatchAny
, اما بازگرداندن مجموعه ای از تمام شاخص که مطابقت انبار کاه در هر سفارش.
چندبازیماتچانی (هیستک, فاصله, [الگو1 الگو2, …, patternنه])
همان multiMatchAny
, اما بازده 1 اگر هر الگوی منطبق انبار کاه در یک ثابت ویرایش فاصله. این تابع نیز در حالت تجربی است و می تواند بسیار کند باشد. برای اطلاعات بیشتر نگاه کنید به hyperscan مستندات.
چند شکلی (هیستاک, فاصله, [الگو1 الگو2, …, patternنه])
همان multiFuzzyMatchAny
, اما می گرداند هر شاخص که منطبق بر انبار کاه در فاصله ویرایش ثابت.
بازهای چندگانه (انبار کاه, فاصله, [الگو1 الگو2, …, patternنه])
همان multiFuzzyMatchAny
, اما بازگرداندن مجموعه ای از تمام شاخص در هر منظور که مطابقت با انبار کاه در فاصله ویرایش ثابت.
!!! note "یادداشت"
multiFuzzyMatch*
توابع از عبارات منظم یونایتد-8 پشتیبانی نمی کنند و چنین عبارات به عنوان بایت به دلیل محدودیت هیپراکسان درمان می شوند.
!!! note "یادداشت"
برای خاموش کردن تمام توابع است که با استفاده از بیش از حد اسکان, استفاده از تنظیمات SET allow_hyperscan = 0;
.
عصاره (انبار کاه, الگو)
عصاره یک قطعه از یک رشته با استفاده از یک عبارت منظم. اگر ‘haystack’ با ‘pattern’ عبارت منظم, یک رشته خالی بازگشته است. اگر عبارت منظم حاوی وسترن نیست, طول می کشد قطعه که منطبق بر کل عبارت منظم. در غیر این صورت قطعه ای را می گیرد که با اولین زیر دست ساز مطابقت دارد.
خارج تماس بگیرید)
عصاره تمام قطعات از یک رشته با استفاده از یک عبارت منظم. اگر ‘haystack’ با ‘pattern’ عبارت منظم, یک رشته خالی بازگشته است. بازگرداندن مجموعه ای از رشته متشکل از تمام مسابقات به عبارت منظم. به طور کلی, رفتار همان است که ‘extract’ تابع (در آن طول می کشد برای اولین بار subpattern یا کل بیان اگر وجود ندارد subpattern).
مانند (کومه علف خشک, الگو), کومه علف خشک مانند اپراتور الگوی
بررسی اینکه یک رشته منطبق یک عبارت ساده به طور منظم.
عبارت منظم می تواند حاوی متسیمبلس باشد %
و _
.
%
نشان می دهد هر مقدار از هر بایت (از جمله صفر شخصیت).
_
نشان می دهد هر یک بایت.
از بک اسلش استفاده کنید (\
) برای فرار از متسیمبلس . توجه داشته باشید در فرار در شرح ‘match’ تابع.
برای عبارات منظم مانند %needle%
, کد مطلوب تر است و کار می کند به همان سرعتی که position
تابع.
برای دیگر عبارات منظم, کد همان است که برای است ‘match’ تابع.
notLike(انبار کاه pattern), انبار کاه نیست مانند الگوی اپراتور
همان چیزی که به عنوان ‘like’, اما منفی.
نمک زدایی (انبار کاه, سوزن)
محاسبه فاصله 4 گرم بین haystack
و needle
: counts the symmetric difference between two multisets of 4-grams and normalizes it by the sum of their cardinalities. Returns float number from 0 to 1 – the closer to zero, the more strings are similar to each other. If the constant needle
یا haystack
بیش از 32 کیلوبایت است, می اندازد یک استثنا. اگر برخی از غیر ثابت haystack
یا needle
رشته ها بیش از 32 کیلوبایت, فاصله است که همیشه یکی.
برای جستجوی غیر حساس به حالت یا / و در توابع استفاده از فرمت جی تی اف 8 ngramDistanceCaseInsensitive, ngramDistanceUTF8, ngramDistanceCaseInsensitiveUTF8
.
نگراماسراچ (هیستک سوزن)
مثل ngramDistance
اما محاسبه تفاوت غیر متقارن بین needle
و haystack
– the number of n-grams from needle minus the common number of n-grams normalized by the number of needle
مامان بزرگ نزدیک تر به یک, بیشتر احتمال دارد needle
در haystack
. می تواند برای جستجو رشته فازی مفید باشد.
برای جستجوی غیر حساس به حالت یا / و در توابع استفاده از فرمت جی تی اف 8 ngramSearchCaseInsensitive, ngramSearchUTF8, ngramSearchCaseInsensitiveUTF8
.
!!! note "یادداشت"
For UTF-8 case we use 3-gram distance. All these are not perfectly fair n-gram distances. We use 2-byte hashes to hash n-grams and then calculate the (non-)symmetric difference between these hash tables – collisions may occur. With UTF-8 case-insensitive format we do not use fair tolower
function – we zero the 5-th bit (starting from zero) of each codepoint byte and first bit of zeroth byte if bytes more than one – this works for Latin and mostly for all Cyrillic letters.