メインコンテンツまでスキップ
バージョン: 4.x

TOKENIZE

説明

TOKENIZE関数は、指定されたparser/analyzerを使用して文字列をトークン化し、トークン化の結果を返します。この関数は、全文検索機能を持つ転置インデックスを使用する際に、テキストがどのように解析されるかをテストし、理解するのに特に便利です。

バージョンの違い

TOKENIZEの動作はバージョン3.0と3.1+で異なります:

  • バージョン3.0: parserパラメータを使用し、単純な文字列配列を返します
  • バージョン3.1+: built_in_analyzerとカスタムanalyzerをサポートし、拡張機能を持つJSONオブジェクト配列を返します

バージョン3.0の使用方法については、バージョン3.0固有の機能セクションを参照してください。


バージョン3.1+の機能(推奨)

構文

VARCHAR TOKENIZE(VARCHAR str, VARCHAR properties)

パラメータ

  • str: トークン化される入力文字列。型: VARCHAR
  • properties: アナライザー設定を指定するプロパティ文字列。型: VARCHAR

propertiesパラメータは以下のキー・バリューペアをサポートします(形式: "key1"="value1", "key2"="value2"):

プロパティ説明値の例
built_in_analyzer組み込みアナライザータイプ"standard", "english", "chinese", "unicode", "icu", "basic", "ik", "none"
analyzerカスタムアナライザー名(CREATE INVERTED INDEX ANALYZERで作成)"my_custom_analyzer"
parser組み込みパーサータイプ(後方互換性のため)"chinese", "english", "unicode"
parser_mode中国語パーサーのパーサーモード"fine_grained", "coarse_grained"
support_phraseフレーズサポートを有効化(位置情報を保存)"true", "false"
lower_caseトークンを小文字に変換"true", "false"
char_filter_type文字フィルタータイプ"char_replace"
char_filter_pattern置換対象の文字(char_filter_typeと併用)"._=:,"
char_filter_replacement置換文字(char_filter_typeと併用)" " (スペース)
stopwordsストップワード設定"none"

戻り値

トークン化結果のJSON配列を含むVARCHARを返します。配列の各要素は以下の構造を持つオブジェクトです:

  • token: トークン化された語句
  • position: (オプション)support_phraseが有効な場合のトークンの位置インデックス

例1: 組み込みアナライザーの使用

-- Standard analyzer
SELECT TOKENIZE("Hello World", '"built_in_analyzer"="standard"');
[{ "token": "hello" }, { "token": "world" }]
-- English analyzer with stemming
SELECT TOKENIZE("running quickly", '"built_in_analyzer"="english"');
[{ "token": "run" }, { "token": "quick" }]
-- Chinese analyzer
SELECT TOKENIZE('我来到北京清华大学', '"built_in_analyzer"="chinese"');
[{ "token": "我" }, { "token": "来到" }, { "token": "北京" }, { "token": "清华大学" }]
-- Unicode analyzer
SELECT TOKENIZE('Apache Doris数据库', '"built_in_analyzer"="unicode"');
[{ "token": "apache" }, { "token": "doris" }, { "token": "数" }, { "token": "据" }, { "token": "库" }]
-- ICU analyzer for multilingual text
SELECT TOKENIZE("Hello World 世界", '"built_in_analyzer"="icu"');
[{ "token": "hello" }, { "token": "world" }, { "token": "世界" }]
-- Basic analyzer
SELECT TOKENIZE("GET /images/hm_bg.jpg HTTP/1.0", '"built_in_analyzer"="basic"');
[{ "token": "get" }, { "token": "images" }, { "token": "hm" }, { "token": "bg" }, { "token": "jpg" }, { "token": "http" }, { "token": "1" }, { "token": "0" }]
-- IK analyzer for Chinese text
SELECT TOKENIZE("中华人民共和国国歌", '"built_in_analyzer"="ik"');
[{ "token": "中华人民共和国" }, { "token": "国歌" }]

Example 2: 細粒度モードを使用した中国語パーサー

SELECT TOKENIZE('我来到北京清华大学', '"built_in_analyzer"="chinese", "parser_mode"="fine_grained"');
[{ "token": "我" }, { "token": "来到" }, { "token": "北京" }, { "token": "清华" }, { "token": "清华大学" }, { "token": "华大" }, { "token": "大学" }]

例3: character filtersの使用

SELECT TOKENIZE('GET /images/hm_bg.jpg HTTP/1.0 test:abc=bcd',
'"built_in_analyzer"="unicode","char_filter_type" = "char_replace","char_filter_pattern" = "._=:,","char_filter_replacement" = " "');
[{ "token": "get" }, { "token": "images" }, { "token": "hm" }, { "token": "bg" }, { "token": "jpg" }, { "token": "http" }, { "token": "1" }, { "token": "0" }, { "token": "test" }, { "token": "abc" }, { "token": "bcd" }]

例4: フレーズサポート使用時(位置情報)

SELECT TOKENIZE("Hello World", '"built_in_analyzer"="standard", "support_phrase"="true"');
[{ "token": "hello", "position": 0 }, { "token": "world", "position": 1 }]

例5: カスタムアナライザーの使用

最初に、カスタムアナライザーを作成します:

CREATE INVERTED INDEX ANALYZER lowercase_delimited
PROPERTIES (
"tokenizer" = "standard",
"token_filter" = "asciifolding, lowercase"
);

その後、TOKENIZEと一緒に使用します:

SELECT TOKENIZE("FOO-BAR", '"analyzer"="lowercase_delimited"');
[{ "token": "foo" }, { "token": "bar" }]

Version 3.0 固有の機能

備考

Version 3.0 は 3.1+ と比較して機能が制限されています。拡張機能については 3.1+ へのアップグレードを推奨します。

構文

ARRAY<VARCHAR> TOKENIZE(VARCHAR str, VARCHAR properties)

パラメータ

バージョン3.0のpropertiesパラメータは以下をサポートします:

プロパティ説明例の値
parserビルトインパーサータイプ"chinese", "english", "unicode"
parser_modeChineseパーサーのパーサーモード"fine_grained", "coarse_grained"
char_filter_type文字フィルタータイプ"char_replace"
char_filter_pattern置換対象の文字"._=:,"
char_filter_replacement置換文字" " (スペース)
stopwordsストップワード設定"none"

バージョン3.0ではサポートされていません:

  • built_in_analyzerパラメータ
  • analyzerパラメータ(カスタムアナライザー)
  • support_phraseパラメータ
  • lower_caseパラメータ
  • 追加アナライザー:icu, basic, ik, standard

戻り値

トークン化された文字列を個別の配列要素として含むARRAY<VARCHAR>を返します(JSONオブジェクトではなく、シンプルな文字列配列)。

例1:Chineseパーサーの使用

SELECT TOKENIZE('我来到北京清华大学', "'parser'='chinese'");
["我", "来到", "北京", "清华大学"]

Example 2: 細粒度モードでのChinese parser

SELECT TOKENIZE('我来到北京清华大学', "'parser'='chinese', 'parser_mode'='fine_grained'");
["我", "来到", "北京", "清华", "清华大学", "华大", "大学"]

例3: Unicodeパーサーの使用

SELECT TOKENIZE('Apache Doris数据库', "'parser'='unicode'");
["apache", "doris", "数", "据", "库"]

例4: character filtersの使用

SELECT TOKENIZE('GET /images/hm_bg.jpg HTTP/1.0 test:abc=bcd',
'"parser"="unicode","char_filter_type" = "char_replace","char_filter_pattern" = "._=:,","char_filter_replacement" = " "');
["get", "images", "hm", "bg", "jpg", "http", "1", "0", "test", "abc", "bcd"]

Example 5: Stopwords設定

SELECT TOKENIZE('华夏智胜新税股票A', '"parser"="unicode"');
["华", "夏", "智", "胜", "新", "税", "股", "票"]
SELECT TOKENIZE('华夏智胜新税股票A', '"parser"="unicode","stopwords" = "none"');
["华", "夏", "智", "胜", "新", "税", "股", "票", "a"]

注意事項

  1. バージョン互換性:

    • バージョン3.0ではparserパラメータを使用し、シンプルな文字列配列を返します
    • バージョン3.1+ではparser(後方互換)とbuilt_in_analyzerの両方をサポートし、JSONオブジェクト配列を返します
    • バージョン3.1+ではカスタムアナライザー、追加の組み込みアナライザー、フレーズサポートが追加されています
  2. サポートされるアナライザー:

    • バージョン3.0: chineseenglishunicode
    • バージョン3.1+: standardenglishchineseunicodeicubasiciknone
  3. Parserモード: parser_modeプロパティは主にchineseパーサーで使用されます:

    • fine_grained: オーバーラップするセグメントでより詳細なトークンを生成します
    • coarse_grained: 標準セグメンテーションのデフォルトモードです
  4. 文字フィルター: char_filter_typechar_filter_patternchar_filter_replacementを組み合わせて使用し、トークン化前に特定の文字を置換します。

  5. パフォーマンス: TOKENIZE関数は主にパーサー設定のテストとデバッグを目的としています。本番環境での全文検索には、MATCH述語を使用した転置インデックスを使用してください。

  6. 転置インデックスとの互換性: 同じparser/analyzer設定を転置インデックスに適用できます:

    CREATE TABLE example (
    content TEXT,
    INDEX idx_content(content) USING INVERTED PROPERTIES("parser"="chinese")
    )
  7. パーサー動作のテスト: TOKENIZEを使用して、転置インデックスを作成する前にテキストがどのようにトークン化されるかをプレビューします。

キーワード

TOKENIZE, STRING, FULL-TEXT SEARCH, INVERTED INDEX, PARSER, ANALYZER