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

Tablestore:完全一致検索

最終更新日:Apr 30, 2026

完全一致検索は、フィールド値が指定されたキーワードと完全に一致する行を返します。キーワードは分析されず、Tablestore はインデックス済みの値に対してそのまま比較を行います。TEXT 列の場合、Tablestore はその列内の各トークンに対してキーワードを照合し、いずれかのトークンがキーワードと一致すれば、その行はマッチします。

前提条件

警告: 元の文字列全体をマッチさせたい場合は、TEXT 列に対して完全一致検索を使用しないでください。Tablestore はインデックス時に TEXT 列の値をトークン化するため、格納されるトークンが元の文字列と一致しない可能性があります。TEXT 列の全文内容でクエリを実行する場合は、代わりに一致検索を使用してください。

パラメーター

パラメーター

説明

table_name

データテーブルの名前。

index_name

検索インデックスの名前です。

offset

現在のクエリにおける結果セット内の開始位置。

limit

返される行の最大数。行データを返さずに件数のみを取得する場合は、この値を 0 に設定します。

get_total_count

クエリにマッチする行の総数を返すかどうかを指定します。デフォルト値は false です。

true を設定すると、クエリのパフォーマンスが低下します。

query_type

クエリの種類。完全一致検索を行う場合は、QueryTypeConst::TERM_QUERY に設定します。

field_name

クエリ対象のフィールド名。

term

フィールド値と照合するキーワード。このキーワードはトークン化されず、Tablestore はそのまま比較に使用します。

TEXT 列の場合、Tablestore はインデックス時に列の値をトークン化し、いずれかのトークンがキーワードと完全に一致するかどうかをチェックします。たとえば、TEXT 値 "tablestore is cool""tablestore""is""cool" のトークンに分割されます。"tablestore" でクエリを実行するとこの行が返されますが、"tablestore is cool" でクエリを実行しても結果は返されません。これは、その全文が単一のトークンとして格納されていないためです。

sort

返される行のソート順。詳細については、「ソートとページング」をご参照ください。

columns_to_get

マッチした各行に対して返すカラムを指定します。このパラメーターには return_type および return_names を設定します。

  • return_type を ColumnReturnTypeConst::RETURN_SPECIFIED に設定した場合、return_names を使用して返すカラムを指定できます。

  • return_type パラメーターを ColumnReturnTypeConst::RETURN_ALL に設定した場合、すべてのカラムが返されます。

  • return_type を ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX に設定した場合、多次元インデックス内のすべてのカラムが返されます。

  • return_type パラメーターを ColumnReturnTypeConst::RETURN_NONE に設定した場合、プライマリキー列のみが返されます。

使用例

次の例では、keyword 列の値がキーワード "keyword" と完全に一致するすべての行をクエリします。

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::TERM_QUERY,
            'query' => array(
                'field_name' => 'keyword',
                'term' => 'keyword'
            )
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'keyword',
                    'order' => SortOrderConst::SORT_ORDER_ASC
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_ALL,
        'return_names' => array('keyword', 'long')
    )
);
$response = $otsClient->search($request);

よくある質問

参考資料

  • 多次元インデックスを使用してデータをクエリする際は、以下のクエリ方法を利用できます:完全一致検索複数値完全一致検索完全一致検索一致検索フレーズ一致検索プレフィックス検索範囲クエリワイルドカード検索ブール値クエリジオクエリネストされたクエリ、およびexists クエリ。ビジネス要件に応じて、さまざまなクエリ方法を組み合わせて多角的にデータをクエリできます。

    クエリ条件を満たす行をソートまたはページングしたい場合は、ソートとページング機能を使用できます。詳細については、「ソートとページング」をご参照ください。

    特定のカラムに基づいて結果セットを折りたたみたい場合は、折りたたみ (distinct) 機能を使用できます。これにより、指定されたタイプのデータがクエリ結果に一度だけ表示されます。詳細については、「折りたたみ (distinct)」をご参照ください。

  • データテーブル内のデータを分析したい場合(たとえば、最大値・最小値・合計値・行数の取得など)、集約操作または SQL ステートメントを実行できます。詳細については、「集約」および「SQL クエリ」をご参照ください。

  • 行をソートする必要がなく、クエリ条件を満たすすべての行を迅速に取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「並列スキャン」をご参照ください。