7.3.69. tokenize
#
7.3.69.1. 概要#
tokenize
コマンドは指定したトークナイザーでテキストをトークナイズします。これはトークナイズ処理のデバッグに便利です。
7.3.69.2. 構文#
このコマンドにはたくさんの引数があります。
tokenizer
と string
が必須の引数で、他の引数はすべて省略できます:
tokenize tokenizer
string
[normalizer=null]
[flags=NONE]
[mode=ADD]
[token_filters=NONE]
7.3.69.3. 使い方#
以下は簡単な使用例です。
実行例:
tokenize TokenBigram "Fulltext Search"
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Fu",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " S",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "Se",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h",
# "position": 14,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
この例では必須のパラメーターだけ使っています。 tokenizer
には TokenBigram
を、 string
には "Fulltext Search"
を指定しています。この例は TokenBigram
トークナイザーで "Fulltext Search"
をトークナイズしたトークンを返します。この例では "Fulltext Search"
を正規化していません。
7.3.69.4. 引数#
このセクションではすべての引数について説明します。引数はカテゴリわけしています。
7.3.69.4.1. 必須引数#
必須引数は二つあります。 tokenizer
と string
です。
7.3.69.4.1.1. tokenizer
#
トークナイザー名を指定します。 tokenize
コマンドは tokenizer
で指定された名前のトークナイザーを使います。
組み込みのトークナイザーについては トークナイザー を参照してください。
以下は組み込みの TokenTrigram
トークナイザーを使う例です。
実行例:
tokenize TokenTrigram "Fulltext Search"
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Ful",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ull",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "llt",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lte",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "tex",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ext",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt ",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t S",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " Se",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "Sea",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ear",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "arc",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rch",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h",
# "position": 14,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
他のトークナイザーを使いたい場合は、 register コマンドでトークナイザープラグインを登録する必要があります。例えば、 KyTea ベースのトークナイザーを tokenizers/kytea
を登録することで使えます。
7.3.69.4.1.2. string
#
トークナイズしたい文字列を指定します。
string
の中に文字列を含める場合は、シングルクォート( '
)またはダブルクォート( "
)で string
をクォートする必要があります。
string
の中で空白を使う例です。
実行例:
tokenize TokenBigram "Groonga is a fast fulltext earch engine!"
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Gr",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ro",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "oo",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "on",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ng",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ga",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "a ",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " i",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "is",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "s ",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " a",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "a ",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " f",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "fa",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "as",
# "position": 14,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "st",
# "position": 15,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 16,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " f",
# "position": 17,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "fu",
# "position": 18,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 19,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 20,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 21,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 22,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 23,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 24,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 25,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " e",
# "position": 26,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 27,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 28,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 29,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 30,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h ",
# "position": 31,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " e",
# "position": 32,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "en",
# "position": 33,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ng",
# "position": 34,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "gi",
# "position": 35,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "in",
# "position": 36,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ne",
# "position": 37,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "e!",
# "position": 38,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "!",
# "position": 39,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
7.3.69.4.2. 省略可能引数#
いくつか省略可能な引数があります。
7.3.69.4.2.1. normalizer
#
ノーマライザー名を指定します。 tokenize
コマンドは normalizer
という名前のノーマライザーを使います。ノーマライザーは TokenBigrma
など、N-gram関連のトークナイザーにとってとても重要です。
ノーマライザーはノーマライズ中にそれぞれの文字の種類を検出します。N-gram系のトークナイザーはトークナイズ中に文字の種類を利用します。
以下はノーマライザーを使わない例です。
実行例:
tokenize TokenBigram "Fulltext Search"
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Fu",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " S",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "Se",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h",
# "position": 14,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
すべてのアルファベットが2文字ごとトークナイズされています。例えば、 Fu
で1つのトークンになっています。
以下はノーマライザーを使う例です。
実行例:
tokenize TokenBigram "Fulltext Search" NormalizerAuto
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "fulltext",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "search",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
連続するアルファベットが1つのトークンにトークナイズされています。例えば、 fulltext
で1つのトークンになっています。
ノーマライザーを使いながら2文字でトークナイズしたい場合は TokenBigramSplitSymbolAlpha
を使って下さい。
実行例:
tokenize TokenBigramSplitSymbolAlpha "Fulltext Search" NormalizerAuto
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "fu",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "se",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
すべてのアルファベットが2文字ごとにトークナイズされています。そして、すべての文字が小文字にノーマライズされています。例えば、 fu
で1つのトークンになっています。
7.3.69.4.2.2. flags
#
トークナイズ処理をカスタマイズするオプションを指定します。「 |
」で区切って複数のオプションを指定することができます。例えば、 NONE|ENABLE_TOKENIZED_DELIMITER
というように指定できます。
指定可能なフラグは以下の通りです。
フラグ |
説明 |
---|---|
|
無視されます。 |
|
トークナイズ済み区切り文字を有効にします。トークナイズ済み区切り文字の詳細は トークナイザー を参照してください。 |
以下は ENABLE_TOKENIZED_DELIMITER
を使った例です。
実行例:
tokenize TokenDelimit "Fulltext Seacrch" NormalizerAuto ENABLE_TOKENIZED_DELIMITER
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "full",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "text sea",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "crch",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
TokenDelimit
トークナイザーはトークナイズ済み区切り文字をサポートしているトークナイザーの1つです。 ENABLE_TOKENIZED_DELIMITER
でトークナイズ済み区切り文字を有効に出来ます。トークナイズ済み区切り文字はトークンの区切りを表す特別な文字です。この文字は U+FFFE
です。この文字コードはどの文字にも割り当てられていません。つまり、通常の文字列にはこの文字は現れません。よって、トークンの区切りを表すという目的には適切な文字です。 ENABLE_TOKENIZED_DELIMITER
が有効のときは、対象文字列はすでにトークナイズ済みであると扱われます。トークナイザーは単にトークナイズ済み区切り文字で区切ってトークナイズします。
7.3.69.4.2.3. mode
#
トークナイズモードを指定します。 ADD
を指定すると、ドキュメント追加時と同じルールでトークナイズされます。 GET
を指定すると、ドキュメント検索時と同じルールでトークナイズされます。省略された場合、 ADD
モードでトークナイズされます。
デフォルトのモードは ADD
です。
以下は ADD
モードの例です。
実行例:
tokenize TokenBigram "Fulltext Search" --mode ADD
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Fu",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " S",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "Se",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "h",
# "position": 14,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
最後のアルファベットは1文字でトークナイズされています。
以下は GET
モードの例です。
実行例:
tokenize TokenBigram "Fulltext Search" --mode GET
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# {
# "value": "Fu",
# "position": 0,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ul",
# "position": 1,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ll",
# "position": 2,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "lt",
# "position": 3,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "te",
# "position": 4,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ex",
# "position": 5,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "xt",
# "position": 6,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "t ",
# "position": 7,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": " S",
# "position": 8,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "Se",
# "position": 9,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ea",
# "position": 10,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ar",
# "position": 11,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "rc",
# "position": 12,
# "force_prefix": false,
# "force_prefix_search": false
# },
# {
# "value": "ch",
# "position": 13,
# "force_prefix": false,
# "force_prefix_search": false
# }
# ]
# ]
最後のアルファベットは2文字でトークナイズされています。
7.3.69.4.2.4. token_filters
#
トークンフィルターを指定します。 tokenize
コマンドは token_filters
という名前のトークンフィルターを使います。
トークンフィルターについては トークンフィルター を参照してください。
7.3.69.5. 戻り値#
tokenize
コマンドはトークナイズしたトークンをすべて返します。各トークンはトークン自身の文字列情報以外にいくつかの属性を持ちます。属性は今後増えていく可能性があります:
[HEADER, tokens]
HEADER
HEADER
については 出力形式 を参照してください。
tokens
tokens
はトークンの配列です。トークンは以下の属性を持ったオブジェクトです。
名前
説明
value
トークン自身
position
N番目のトークン。