基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
TOKENIZE
更新时间:2026-08-18 14:47:49
描述
该函数用于将文本按照指定的分词器或文本分析器(Analyzer)及 JSON 形式的参数,输出分词结果。
语法
TOKENIZE('text' [, 'parser'] [, 'behavior_ctrl'])
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text |
VARCHAR / TEXT / CHAR |
是 | 待分词的文本内容。 |
parser |
字符串 | 否 | 分词器名称,默认 space。可指定原有 parser 名称(space(空格分词器)、ngram(N-gram 分词器)、beng(基础英文分词器)、ik(中文分词器)、ngram2(N-gram 分词器)等)或 analyzer(Analyzer 文本分析器)。 |
behavior_ctrl |
JSON 数组字符串 | 否 | 控制输出格式及分词参数的配置项数组。可选配置项包括 output(输出格式)、stopwords(停词表)、case(大小写处理)、additional_args(原有 parser 的附加参数)、analysis(Analyzer 的 JSON 定义)。 |
behavior_ctrl 配置项详细说明如下:
| 配置项 | 说明 |
|---|---|
output |
输出格式。default(默认):返回词元(token)数组,如 ["token1", "token2"];all:返回包含词频和文档长度的 JSON 对象,如 {"tokens": [{"token1": 1}, {"token2": 2}], "doc_len": 5}。 |
stopwords |
停词表。未指定时按全局默认配置;指定为空则禁用停词。 |
case |
大小写处理。未指定时按系统默认行为;可指定 upper / lower。 |
additional_args |
原有 parser 的附加参数,如 ngram 的 ngram_token_size、space/beng 的 min_token_size / max_token_size。 |
analysis |
仅 parser = 'analyzer' 时有效。Analyzer 的 JSON 定义,支持 JSON object 或 JSON string 两种写法,推荐 object 写法:{"analysis": {"analyzer": "$analyzer_type"}};也兼容 string 写法:{"analysis": "{\"analyzer\": \"standard\"}"}。返回结果为 JSON 格式,token 顺序不保证与原文一致。
注意本功能从 V4.6.0 BP1 版本开始支持。 |
additional_args 详细说明如下:
| Parser | 参数 | 取值范围 | 说明 |
|---|---|---|---|
ngram |
ngram_token_size |
[1, 10] | N-gram 的 token 长度。 |
space / beng |
min_token_size |
[1, 16] | token 最小字符长度。 |
space / beng |
max_token_size |
[10, 84] | token 最大字符长度(须 ≥ min_token_size)。 |
$analyzer_type 当前版本支持以下取值:
| Analyzer 类型 | 语言 |
|---|---|
standard |
多语言通用 |
english |
英语 |
thai |
泰语 |
vietnamese |
越南语 |
indonesian |
印尼语 |
malay |
马来语 |
示例
使用原有 Parser
TOKENIZE 支持所有原有的内置 parser,用法与建索引时的 parser 一致。
SELECT TOKENIZE('hello world');
-- 结果: ["world", "hello"]
SELECT TOKENIZE('hello world', 'ngram');
-- 结果: ["lo", "he", "ll", "or", "rl", "wo", "ld", "el"]
SELECT TOKENIZE('hello world', 'beng');
-- 结果: ["world", "hello"]
SELECT TOKENIZE('hello world', 'space', '[{"output": "all"}]');
-- 结果: {"tokens": [{"world": 1}, {"hello": 1}], "doc_len": 2}
additional_args 参数
SELECT TOKENIZE('hello', 'ngram', '[{"additional_args": [{"ngram_token_size": 3}]}]');
-- 结果: ["hel", "ell", "llo"]
SELECT TOKENIZE('hello world abcdefg', 'space',
'[{"output": "all"}, {"additional_args": [{"min_token_size": 6}]}]');
-- 结果: {"tokens": [{"abcdefg": 1}], "doc_len": 1}
使用文本分析器(Analyzer)
注意
behavior_ctrl 一旦传入,必须包含至少一项有效配置项;传入空对象 [{}] 会报错。若需使用默认 standard analyzer,请完全省略第三参数,或显式传入 [{"analysis": {"analyzer": "standard"}}]。
-- 推荐:analysis 直接写 JSON object
SELECT TOKENIZE('Hello World! OceanBase是一款分布式数据库。', 'analyzer',
'[{"analysis": {"analyzer": "standard"}}]');
-- 兼容:analysis 写成 JSON string
SELECT TOKENIZE('text', 'analyzer',
'[{"analysis": "{\\"analyzer\\": \\"standard\\"}"}]');
-- 省略第三参数时,默认使用 standard analyzer
SELECT TOKENIZE('John', 'analyzer');
-- 结果: ["john"]
SELECT TOKENIZE('The quick brown fox jumps.', 'analyzer',
'[{"analysis": {"analyzer": "english"}}, {"output": "all"}]');
-- 结果: {"tokens": [{"quick": 1}, {"brown": 1}, {"jump": 1}, {"fox": 1}], "doc_len": 4}
在查询中使用 TOKENIZE 函数示例如下:
TOKENIZE 返回 JSON 数组,可配合 MEMBER OF 语法实现文本过滤:
SELECT * FROM articles
WHERE 'database' MEMBER OF (TOKENIZE(body, 'analyzer',
'[{"analysis": {"analyzer": "standard"}}]'));
SELECT
TOKENIZE(content, 'space') AS space_tokens,
TOKENIZE(content, 'ngram') AS ngram_tokens,
TOKENIZE(content, 'analyzer',
'[{"analysis": {"analyzer": "standard"}}]') AS std_tokens
FROM docs;