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

Tablestore:フレーズ一致検索の実行

最終更新日:May 01, 2026

フレーズ一致検索は、列内のトークンがキーワードと順序および位置の両方で一致した場合にのみ、該当する行を返します。一致検索とは異なり、トークンの位置が重要です。ターゲット列があいまいトークン化を使用している場合、フレーズ一致検索はワイルドカード検索よりも低遅延で実行されます。

前提条件

  • OTSClient インスタンスが初期化済みである必要があります。詳細については、「Initialize an OTSClient instance」をご参照ください。

  • データテーブルが作成され、データが書き込まれている必要があります。詳細については、「Create data tables」および「Write data」をご参照ください。

  • データテーブルの検索インデックスが作成されます。詳細については、「検索インデックスを作成する」をご参照ください。

パラメーター

Parameter

Description

FieldName

クエリ対象の列名。TEXT 型の列を指定できます。

Text

列の値と照合するキーワード。

TEXT 列の場合、キーワードは多次元インデックス作成時に指定されたアナライザタイプに基づいてトークン化されます。アナライザタイプが指定されていない場合は、デフォルトで文字トークン化が使用されます。

たとえば、「this is」というフレーズでクエリを実行すると、「..., this is tablestore」や「this is a table」などの行が返されますが、「this table is ...」や「is this a table」は返されません。

Query

クエリタイプ。MatchPhraseQuery を設定します。

TableName

データテーブルの名前。

IndexName

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

GetTotalCount

一致する行の総数を返すかどうかを指定します。デフォルト値は false です。true を設定すると、クエリのパフォーマンスが低下します。

ColumnsToGet

一致する行から返す列を指定します。ReturnAll、Columns、または ReturnAllFromIndex のいずれかを使用して設定します。

デフォルトでは、ReturnAllfalse であり、プライマリキー列のみが返されます。追加の列を返すには、以下のいずれかのオプションを使用します。

  • Columns を設定して、返す列を明示的に指定します。

  • ReturnAllFromIndextrue に設定して、多次元インデックス内のすべての列を返します。

ReturnAlltrue に設定すると、データテーブル内のすべての列が返されます。

次の例では、Text_type_col 列がフレーズ「Tablestore SearchIndex」と一致する行をクエリします。

/// <summary>
/// Text_type_col が "Tablestore SearchIndex" と一致する行をクエリし、一致件数の合計を返します。
/// </summary>
/// <param name="otsClient"></param>
public static void MatchPhraseQuery(OTSClient otsClient)
{
    var searchQuery = new SearchQuery();
    // クエリタイプを MatchPhraseQuery に設定します。
    searchQuery.Query = new MatchPhraseQuery("Text_type_col", "Tablestore SearchIndex");
    // 一致する行の総数を返します。
    searchQuery.GetTotalCount = true;
    var request = new SearchRequest(TableName, IndexName, searchQuery);
    // 返す列を指定します。設定しない場合、プライマリキー列のみが返されます。
    request.ColumnsToGet = new ColumnsToGet()
    {
        // 多次元インデックス内のすべての列を返します。
        ReturnAllFromIndex = true
        // 特定の列を返します。
        //Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
        // 一致する行のすべての列を返します。
        //ReturnAll = true
    };

    var response = otsClient.Search(request);

    // TotalCount は返された行数ではなく、一致する行の総数です。
    Console.WriteLine("Total Count:" + response.TotalCount);
}

よくある質問

参照

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

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

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

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

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