すべてのプロダクト
Search
ドキュメントセンター

Tablestore:全文検索

最終更新日:Dec 28, 2024

テーブル用に作成された検索インデックスを使用して、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")

参照

検索インデックスを使用して全文検索を実行することもできます。 詳細については、トークン化一致クエリ、および 一致フレーズクエリを参照してください。