テーブル用に作成された検索インデックスを使用して、SELECT ステートメントの WHERE 句として一致クエリまたは一致フレーズクエリ条件を使用し、SELECT ステートメントを実行して、特定の文字列と一致するテーブル内のデータをクエリできます。 この方法で、全文検索を実行できます。
前提条件
クエリするデータを含むテーブルに対して検索インデックスが作成され、クエリするフィールドに対してトークン化が実行されます。 詳細については、検索インデックスの作成を参照してください。
トークン化の詳細については、トークン化を参照してください。
一致クエリ
一致クエリを使用して、おおよその一致に基づいてテーブル内のデータをクエリできます。 Tablestore は、指定したアナライザータイプに基づいて、TEXT フィールドの値と一致クエリを実行するために使用するキーワードをトークン化します。 このようにして、Tablestore はトークンに基づいて一致クエリを実行できます。あいまいトークン化が実行されるフィールドをクエリするためにあいまいクエリを実行する場合は、一致フレーズクエリを使用して高パフォーマンスを実現することをお勧めします。
SQL 式
TEXT_MATCH(fieldName, text, [options])
パラメーター
パラメーター
タイプ
必須
例
説明
fieldName
string
はい
col1
一致させるフィールドの名前。一致クエリは TEXT フィールドに適用されます。
text
string
はい
"tablestore is cool"
一致クエリを実行するときにフィールドの値と一致させるために使用されるキーワード。
一致させるフィールドが TEXT フィールドの場合、キーワードは、検索インデックスの作成時に指定したアナライザータイプに基づいて複数のトークンにトークン化されます。 検索インデックスの作成時にアナライザータイプを指定しない場合は、単一単語トークン化が実行されます。
たとえば、一致させるフィールドが TEXT フィールドで、アナライザータイプを単一単語トークン化に設定し、検索キーワードとして "this is" を使用する場合、"..., this is tablestore"、"is this tablestore"、"tablestore is cool"、"this"、"is" などのクエリ結果を取得できます。
options
string
いいえ
"or", "2"
一致クエリを実行するために使用するオプション。有効な値:
operator: 論理演算子。有効な値:OR および AND。デフォルト値:OR。
minimum_should_match: フィールドの値に含まれる一致するトークンの最小数。デフォルト値:1。
operator を OR に設定した場合、行は、行の fieldName パラメーターで指定されたフィールドの値に少なくとも最小数の一致するトークンが含まれている場合にのみクエリ条件を満たします。
operator を AND に設定した場合、行は、行の fieldName パラメーターで指定されたフィールドの値にすべてのトークンが含まれている場合にのみクエリ条件を満たします。
戻り値
戻り値は、行がクエリ条件を満たすかどうかを示します。戻り値はブール型です。戻り値が true の場合、行はクエリ条件を満たします。戻り値が false の場合、行はクエリ条件を満たしません。
例
次のサンプルコードは、一致クエリを使用して exampletable テーブル内のデータをクエリする方法の例を示しています。この例では、col1 列の値が "tablestore is cool" 文字列の少なくとも 2 つのトークンと一致する行がクエリされます。
SELECT * FROM exampletable WHERE TEXT_MATCH(col1, "tablestore is cool", "or", "2")
次のサンプルコードは、一致クエリを使用して exampletable テーブル内のデータをクエリする方法の例を示しています。この例では、col1 列の値が "tablestore is cool" 文字列のすべてのトークンと一致する行がクエリされます。
SELECT * FROM exampletable WHERE TEXT_MATCH(col1, "tablestore is cool", "and")
一致フレーズクエリ
一致フレーズクエリは一致クエリに似ていますが、一致フレーズクエリはトークンの位置を評価するという点が異なります。行は、行内のトークンの順序と位置がキーワードに含まれるトークンの順序と位置と一致する場合にのみ、クエリ条件を満たします。
SQL 式
TEXT_MATCH_PHRASE(fieldName, text)
パラメーター
パラメーター
タイプ
必須
例
説明
fieldName
string
はい
col1
一致させるフィールドの名前。一致フレーズクエリは TEXT フィールドに適用されます。
text
string
はい
"tablestore is cool"
一致フレーズクエリを実行するときにフィールドの値と一致させるために使用されるキーワード。
一致させるフィールドが TEXT フィールドの場合、キーワードは、検索インデックスの作成時に指定したアナライザータイプに基づいて複数のトークンにトークン化されます。 検索インデックスの作成時にアナライザータイプを指定しない場合は、単一単語トークン化が実行されます。 詳細については、トークン化を参照してください。
たとえば、フレーズ "this is" を使用して一致フレーズクエリを実行すると、"..., this is tablestore" および "this is a table" が返されます。 "this table is ..." または "is this a table" は返されません。
戻り値
戻り値は、行がクエリ条件を満たすかどうかを示します。戻り値はブール型です。戻り値が true の場合、行はクエリ条件を満たします。戻り値が false の場合、行はクエリ条件を満たしません。
例
次のサンプルコードは、一致フレーズクエリを使用して exampletable テーブル内のデータをクエリする方法の例を示しています。この例では、col1 列の値が "tablestore is cool" 文字列と一致する行がクエリされます。
SELECT * FROM exampletable WHERE TEXT_MATCH_PHRASE(col1, "tablestore is cool")
参照
検索インデックスを使用して全文検索を実行することもできます。 詳細については、トークン化、一致クエリ、および 一致フレーズクエリを参照してください。