以下文档根据
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
naiveBayesNgrams
NAIVE_BAYES 布局) 相同的分词方式将文本拆分为 n-gram:byte、codepoint 或 token 模式,并可选择添加边界填充。可用它来构建这类字典所需的预聚合 (ngram, class_id, count) 训练数据,从而确保训练用 n-gram 与 naiveBayesClassifier 在查询时生成的结果完全一致。
语法
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
Array(String)
示例
标记二元组
Query
Response
Query
Response
Query
Response
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 字符会成为单字符标记。chinese使用字典和隐马尔可夫模型将中文文本分割为单词 (该算法遵循 jieba;内嵌的字典和模型数据源自 cppjieba)。与将每个非 ASCII 字符视为单字符标记的asciiCJK不同,chinese会将连续的中文字符组合成单词,从而生成更有意义的标记,并提高中文文本的搜索质量。可选的granularity参数可以是coarse_grained(默认值) 或fine_grained;后者还会枚举重叠的子词,以更大的索引为代价提高召回率。icu(locale)使用 ICU 库的 Unicode 单词分段功能 (UAX #29) 将字符串拆分为单词标记。对于单词之间没有空格的文字系统 (例如中文、日文和泰文),ICU 会应用基于字典的分段,因此此类文本会被拆分为有意义的单词。locale是传递给分段器的 ICU 区域设置 (分段主要由文字系统和字典驱动;区域设置会选择 ICU 的区域特定定制);它是必需的,并作为单独的参数传入,例如tokens(value, 'icu', 'ja')。japanese使用 MeCab 形态分析器将日文文本拆分为单词。需要在服务器配置中配置字典 (请参阅文本索引文档)。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、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)min_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
示例
默认分词器
Query
Response
Query
Response
tokensForLikePattern
tokens 函数不同,此函数能够识别 LIKE 模式的语义
(例如前导和尾随通配符) ,并应用分词器特有的规则,
提取用于模式匹配的有效标记。
它支持与 tokens 函数相同的参数集,但有一些
例外:此处不支持 chinese 和 icu 分词器。
LIKE 模式的分词仅对明确支持 LIKE 语义的分词器
(supportsStringLike()) 有意义。使用不受支持的分词器调用
tokensForLikePattern 会引发 BAD_ARGUMENTS;请改用普通的 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 Stringlocale— 仅当参数tokenizer为icu时才相关:必填的区域设置,例如'ja'。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 UInt8granularity— 仅当参数tokenizer为chinese时才相关:一个可选参数,可以是coarse_grained(默认) 或fine_grained,用于控制分词粒度。const String
Array
示例
默认分词器
Query
Response