以下文档根据
system.functions 系统表生成。alphaTokens
a-z 和 A-Z 范围内选取连续字节组成的子字符串,并返回由这些子字符串构成的数组。
语法
splitByAlpha
参数
s— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量不超过max_substrings;否则,函数会返回尽可能多的子字符串。Int64
s 拆分得到的子字符串数组。Array(String)
示例
使用示例
Query
Response
arrayStringConcat
array_to_string
参数
arr— 要拼接的数组。Array(T)separator— 可选。分隔符字符串。默认为空字符串。const String
String
示例
用法示例
Query
Response
extractAllGroupsVertical
extractAllGroups
参数
s— 要提取内容的输入字符串。String或FixedStringregexp— 用于匹配的正则表达式。const String或const FixedString
Array(Array(String))
示例
使用示例
Query
Response
ngrams
N 的 n-gram。
语法
s— 输入字符串。String或FixedStringN—n-gram的长度。const UInt8/16/32/64
n-gram 的数组。 Array(String)
示例
用法示例
Query
Response
reverseBySeparator
- reverseBySeparator(‘www.google.com’) 返回 ‘com.google.www’
- reverseBySeparator(‘a/b/c’, ’/’) 返回 ‘c/b/a’
- reverseBySeparator(‘x::y::z’, ’::’) 返回 ‘z::y::x’
String
示例
基础版域名反转
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
splitByChar
separator (长度必须恰好为 1 个字符) 分隔的字符串拆分为子字符串数组。
如果分隔符出现在字符串的开头或结尾,或者存在多个连续的分隔符,则结果中可能会包含空子字符串。
设置
splitby_max_substrings_includes_remaining_string (默认值:0) 用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。- 分隔符出现在字符串的开头或结尾
- 存在多个连续的分隔符
- 原始字符串
s为空
separator— 分隔符必须是单字节字符。Strings— 要拆分的字符串。Stringmax_substrings— 可选。如果max_substrings > 0,返回的数组最多包含max_substrings个子字符串;否则,函数会返回尽可能多的子字符串。默认值为0。Int64
Array(String)
示例
用法示例
Query
Response
splitByNonAlpha
设置
splitby_max_substrings_includes_remaining_string (默认值:0) 用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。s— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量最多为max_substrings;否则,函数会返回尽可能多的子字符串。默认值:0。Int64
s 拆分得到的子字符串数组。Array(String)
示例
用法示例
Query
Response
splitByRegexp
- 非空正则表达式的匹配出现在字符串开头或结尾
- 存在多个连续的非空正则表达式匹配
- 原始字符串为空,而正则表达式非空。
设置
splitby_max_substrings_includes_remaining_string (默认值:0) 用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。regexp— 正则表达式。常量。String或FixedStrings— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量不会超过max_substrings;否则,该函数会返回尽可能多的子字符串。默认值:0。Int64
s 分割得到的子字符串数组。Array(String)
示例
使用示例
Query
Response
Query
Response
splitByString
separator 将字符串拆分为子字符串数组。
如果字符串 separator 为空,则会将字符串 s 拆分为由单个字符组成的数组。
在以下情况下,结果中可能会包含空子字符串:
- 非空分隔符出现在字符串的开头或结尾
- 存在多个连续的非空分隔符
- 原始字符串
s为空,而分隔符不为空
设置
splitby_max_substrings_includes_remaining_string (默认值:0) 用于控制:当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。separator— 分隔符。Strings— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量最多为max_substrings;否则,函数会返回尽可能多的子字符串。默认值:0。Int64
s 拆分得到的子字符串数组 Array(String)
示例
使用示例
Query
Response
Query
Response
splitByWhitespace
设置
splitby_max_substrings_includes_remaining_string (默认值:0) 用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。s— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量不超过max_substrings;否则,函数会返回尽可能多的子字符串。默认值:0。Int64
s 拆分得到的子字符串组成的数组。Array(String)
示例
使用示例
Query
Response
tokens
splitByNonAlpha按非 ASCII 字母数字字符拆分字符串 (另请参见函数 splitByNonAlpha) 。splitByString(S)按用户定义的分隔符字符串S拆分字符串 (另请参见函数 splitByString) 。这些分隔符可通过可选参数指定,例如tokens(value, 'splitByString', [', ', '; ', '\n', '\\'])。请注意,每个分隔符字符串都可以由多个字符组成 (如示例中的', ') 。如果未显式指定,则默认分隔符列表为单个空格[' ']。asciiCJK使用 Unicode 单词边界规则 (类似于 UAX #29) 将字符串拆分为标记。ASCII 字母数字字符和下划线会与连接符一起组成标记 (字母使用:,同类字符使用.和') 。非 ASCII Unicode 字符会成为单字符标记。ngrams(N)将字符串拆分为等长的N-gram (另请参见函数 ngrams) 。可通过 1 到 8 之间的可选整数参数指定 ngram 长度,例如tokens(value, 'ngrams', 3)。如果未显式指定,则默认 ngram 长度为 3。sparseGrams(min_length, max_length, min_cutoff_length)将字符串拆分为可变长度的 n-gram,长度最短为min_length、最长为max_length(含边界) (另请参见函数 sparseGrams) 。除非显式指定,否则min_length和max_length默认为 3 和 100。如果提供了参数min_cutoff_length,则只返回长度大于或等于min_cutoff_length的 n-gram。与ngrams(N)相比,sparseGrams分词器会生成可变长度的 N-gram,从而更灵活地表示原始文本。例如,tokens(value, 'sparseGrams', 3, 5, 4)会在内部基于输入字符串生成 3-、4-、5-gram,但只返回 4- 和 5-gram。array不执行分词,即每一行的值都是一个标记 (另请参见函数 array) 。
splitByString 分词器,如果这些分隔符不构成前缀码,通常会希望匹配时优先使用更长的分隔符。
为此,请按长度降序传入这些分隔符。
例如,当 separators = ['%21', '%'] 时,字符串 %21abc 会被分词为 ['abc'];而当 separators = ['%', '%21'] 时,则会被分词为 ['21ac'] (这很可能不是你想要的结果) 。
语法
value— 输入字符串。String或FixedStringtokenizer— 要使用的分词器。有效参数包括splitByNonAlpha、splitByString、asciiCJK、ngrams、sparseGrams和array。该参数可选;如果未显式设置,则默认为splitByNonAlpha。const Stringn— 仅当参数tokenizer为ngrams时适用:可选参数,用于定义 ngrams 的长度。如果未显式设置,则默认为3。const UInt8separators— 仅当参数tokenizer为split时适用:可选参数,用于定义分隔符字符串。如果未显式设置,则默认为[' ']。const Array(String)min_length— 仅当参数tokenizer为sparseGrams时适用:可选参数,用于定义最小 gram 长度,默认为 3。const UInt8max_length— 仅当参数tokenizer为sparseGrams时适用:可选参数,用于定义最大 gram 长度,默认为 100。const UInt8min_cutoff_length— 仅当参数tokenizer为sparseGrams时适用:可选参数,用于定义最小截断长度。const UInt8
Array
示例
默认分词器
Query
Response
Query
Response
tokensForLikePattern
tokens 函数不同,此函数能够识别 LIKE 模式的语义
(例如前导和尾随通配符) ,并应用分词器特有的规则,
提取用于模式匹配的有效标记。
它支持与 tokens 函数相同的参数集;tokenizer 之后的其他
参数会根据所选分词器来解释
(例如,ngrams 的 n、splitByString 的 separators,
以及 sparseGrams 的 min_length / max_length [/ min_cutoff_length]) 。
此函数主要用于调试和测试,
并在内部用于分析 LIKE 模式的分词行为。
语法
value— 输入字符串。String或FixedStringtokenizer— 要使用的分词器。有效参数包括splitByNonAlpha、splitByString、asciiCJK、ngrams、sparseGrams和array。可选;如果未显式设置,则默认为splitByNonAlpha。const Stringn— 仅当参数tokenizer为ngrams时才相关:一个可选参数,用于定义 ngram 的长度。如果未显式设置,则默认为3。const UInt8separators— 仅当参数tokenizer为split时才相关:一个可选参数,用于定义分隔符字符串。如果未显式设置,则默认为[' ']。const Array(String)min_length— 仅当参数tokenizer为sparseGrams时才相关:一个可选参数,用于定义最小 gram 长度,默认为 3。const UInt8max_length— 仅当参数tokenizer为sparseGrams时才相关:一个可选参数,用于定义最大 gram 长度,默认为 100。const UInt8min_cutoff_length— 仅当参数tokenizer为sparseGrams时才相关:一个可选参数,用于定义最小截断长度。const UInt8
Array
示例
默认分词器
Query
Response