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

Tablestore:マッチフレーズクエリを実行する

最終更新日:Dec 28, 2024

マッチフレーズクエリはマッチクエリに似ていますが、マッチフレーズクエリはトークンの位置を評価する点が異なります。行がクエリ条件を満たすのは、行内のトークンの順序と位置が、キーワードに含まれるトークンの順序と位置に一致する場合のみです。クエリ対象の列のトークン化方式がファジートークン化の場合、マッチフレーズクエリはワイルドカードクエリよりも低いレイテンシで実行されます。

前提条件

パラメータ

パラメータ

説明

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 パラメータを指定できます。

ReturnAll のデフォルト値は false で、すべての列が返されないことを指定します。次のいずれかの方法を使用して、返したい列を指定できます。次の方法を使用して返したい列を指定しない場合、主キー列のみが返されます。

  • Columns を設定して、返したい列を指定します。

  • ReturnAllFromIndex を true に設定して、検索インデックスのすべての列を返します。

ReturnAll を true に設定すると、すべての列が返されます。

次のサンプルコードは、データテーブル内の 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);
    // ColumnsToGet パラメータを設定して、返す列を指定したり、すべての列を返すように指定したり、検索インデックス内のすべての列を返すように指定したりできます。このパラメータを設定しない場合、主キー列のみが返されます。
    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);

    Console.WriteLine("Total Count:" + response.TotalCount); // 返された行数ではなく、クエリ条件を満たす行の総数を表示します。
}

FAQ

参考資料