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

Tablestore:タームクエリ

最終更新日:Dec 28, 2024

タームクエリを使用すると、指定したキーワードと完全に一致するフィールド値をクエリできます。タームクエリは、文字列照合と同様に機能します。 TEXT 列がクエリされ、行内のトークンの少なくとも 1 つがキーワードと完全に一致する場合、その行はクエリ条件を満たします。キーワードはトークン化されません。

前提条件

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

IndexName

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

Query

クエリのタイプ。クエリタイプを TermQuery に設定します。

FieldName

一致させるフィールドの名前。

Term

タームクエリを実行するときにフィールド値と一致させるために使用されるキーワード。

このキーワードはトークン化されません。代わりに、キーワード全体がフィールド値との照合に使用されます。

フィールドのタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードと照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致すると、行はクエリ条件を満たします。たとえば、行の TEXT タイプのフィールドの値が "tablestore is cool" の場合、値は "tablestore"、"is"、"cool" にトークン化できます。フィールドの値と一致させるキーワードとして "tablestore"、"is"、または "cool" を指定すると、行はクエリ条件を満たします。

ColumnsToGet

クエリ条件を満たす各行のすべてのフィールドを返すかどうかを指定します。 ReturnAll パラメーターと Columns パラメーターを指定できます。

デフォルトでは、ReturnAll パラメーターは false に設定されており、すべてのフィールドが返されるわけではないことを示します。 ReturnAll パラメーターが false に設定されている場合、Columns パラメーターを使用して返すフィールドを指定できます。 Columns パラメーターを指定しない場合は、プライマリキーフィールドのみが返されます。

ReturnAll パラメーターを true に設定すると、すべてのフィールドが返されます。

GetTotalCount

クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメーターのデフォルト値は false で、クエリ条件を満たす行の総数は返されないことを指定します。

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

次のサンプルコードは、データテーブル内の Col_Keyword 列の値が hangzhou と完全に一致する行をクエリする方法の例を示しています。

/**
 * テーブル内の Col_Keyword フィールドの値が "hangzhou" と完全に一致する行をクエリします。
 */
func TermQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.TermQuery{} // クエリタイプを TermQuery に設定します。
    query.FieldName = "Col_Keyword" // クエリするフィールドの名前を指定します。
    query.Term = "hangzhou" // フィールド値と一致させるキーワードを指定します。
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    searchQuery.SetGetTotalCount(true)
    searchRequest.SetSearchQuery(searchQuery)
    // クエリ条件を満たす行のすべての列を返します。
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAll:true,
    })
    searchResponse, err := client.Search(searchRequest)
    if err != nil {
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // クエリ条件を満たすすべての行が返されたかどうかを確認します。
    fmt.Println("TotalCount: ", searchResponse.TotalCount) // 返された行数ではなく、クエリ条件を満たす行の総数を表示します。
    fmt.Println("RowCount: ", len(searchResponse.Rows))
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
}

FAQ

参考資料