7.8.14. TokenPattern#

7.8.14.1. 概要#

TokenPattern は正規表現でトークンを抽出するのに使われるトークナイザーです。このトークナイザーは指定した正規表現にマッチしたトークンだけを抽出します。

複数の正規表現を指定することもできます。

7.8.14.2. 構文#

TokenPattern は、省略可能な引数があります。

パターンを1つ指定:

TokenPattern("pattern", PATTERN)

複数のパターンを指定:

TokenPattern("pattern", PATTERN_1, "pattern", PATTERN_2, ... "pattern", PATTERN_N)

TokenPattern は上記のように複数のパターンを受け付けます。

7.8.14.3. 使い方#

TokenPattern の例です。TokenPattern は指定した正規表現にマッチするトークンのみを抽出します。そのため抽出したトークンにのみマッチした検索結果になります。

例として、特定のキーワードによる検索結果を比較してみましょう。1つは TokenPattern に指定されているキーワードで、もう1つは TokenPattern に指定されていないキーワードとします。

Foods テーブルには特定のキーワードを含むメニューが両方あります。

スキーマ定義とサンプルデータは以下の通りです。

実行例:

table_create Foods TABLE_NO_KEY
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Foods name COLUMN_SCALAR Text
# [[0,1337566253.89858,0.000355720520019531],true]
table_create Keywords TABLE_PAT_KEY ShortText --default_tokenizer 'TokenPattern("pattern", "Apple|Orange")'
# [[0,1337566253.89858,0.000355720520019531],true]
column_create Keywords index COLUMN_INDEX Foods name
# [[0,1337566253.89858,0.000355720520019531],true]
load --table Foods
[
{"name": "Apple Pie"},
{"name": "Orange Pie"}
{"name": "Raspberry Pie"}
]
# [[0,1337566253.89858,0.000355720520019531],3]

--query AppleApple Pie を検索します。

実行例:

select Foods --match_columns name --query 'Apple'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         1
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "name",
#           "Text"
#         ]
#       ],
#       [
#         1,
#         "Apple Pie"
#       ]
#     ]
#   ]
# ]

上記の例では、 AppleTokenPattern で指定したパターンにマッチします。そのため selectApple Pie にマッチします。

--query RaspberryRaspberry Pie を検索します。

実行例:

select Foods --match_columns name --query 'Raspberry'
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     [
#       [
#         0
#       ],
#       [
#         [
#           "_id",
#           "UInt32"
#         ],
#         [
#           "name",
#           "Text"
#         ]
#       ]
#     ]
#   ]
# ]

上記の例では、 Foods テーブルに Raspberry Pie が含まれているにもかかわらず、 select ではヒットしません。これは RaspberryTokenPattern のパターンにマッチしないからです。

7.8.14.4. 参考#