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 Apple
で Apple Pie
を検索します。
実行例:
select Foods --match_columns name --query 'Apple'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 1
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "name",
# "Text"
# ]
# ],
# [
# 1,
# "Apple Pie"
# ]
# ]
# ]
# ]
上記の例では、 Apple
は TokenPattern
で指定したパターンにマッチします。そのため select
は Apple Pie
にマッチします。
--query Raspberry
で Raspberry Pie
を検索します。
実行例:
select Foods --match_columns name --query 'Raspberry'
# [
# [
# 0,
# 1337566253.89858,
# 0.000355720520019531
# ],
# [
# [
# [
# 0
# ],
# [
# [
# "_id",
# "UInt32"
# ],
# [
# "name",
# "Text"
# ]
# ]
# ]
# ]
# ]
上記の例では、 Foods
テーブルに Raspberry Pie
が含まれているにもかかわらず、 select
ではヒットしません。これは Raspberry
は TokenPattern
のパターンにマッチしないからです。