Tablestore SDK for Go の match クエリを使用してクエリテキストをトークン化し、テキストフィールド内のトークンを一致させます。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化します。
説明
match クエリは、インデックスフィールドに設定されたアナライザーを使用してクエリテキストをトークン化し、演算子と MinShouldMatch に基づいてトークンを結合します。このクエリは、テキストフィールドに対する全文検索に使用します。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
次の例ではデータをクエリし、最大 10 行と一致した行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.MatchQuery{FieldName: "title", Text: "go search", Operator: search.QueryOperator_OR.Enum()}
searchQuery := search.NewSearchQuery().
SetQuery(query).
SetLimit(10).
SetGetTotalCount(true)
response, err := client.Search(&tablestore.SearchRequest{
TableName: tableName,
IndexName: indexName,
SearchQuery: searchQuery,
ColumnsToGet: &tablestore.ColumnsToGet{
ReturnAllFromIndex: true,
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.TotalCount)
fmt.Println(response.Rows)
パラメータ
クエリリクエスト
request は tablestore.SearchRequest 型で、次のパラメータが含まれます。
|
名前 |
タイプ |
説明 |
|
TableName (必須) |
string |
データテーブルの名前。 |
|
IndexName (必須) |
string |
検索インデックスの名前。 |
|
SearchQuery (必須) |
search.SearchQuery |
クエリ条件と共通のクエリ設定。 |
|
ColumnsToGet (任意) |
*tablestore.ColumnsToGet |
返す列の設定。このパラメータを省略すると、プライマリキー列のみが返されます。 |
|
RoutingValues (任意) |
[]*tablestore.PrimaryKey |
カスタムルーティングフィールドのプライマリキー値。カスタムルーティングを設定していない場合は、このパラメータを省略します。 |
|
TimeoutMs (任意) |
*int32 |
リクエストのタイムアウト期間 (ミリ秒)。 |
クエリ設定
search.NewSearchQuery() を呼び出してクエリ設定を作成し、次のメソッドを使用して設定します。
|
名前 |
タイプ |
説明 |
|
SetQuery (必須) |
search.Query |
クエリ条件を指定します。 |
|
SetOffset (任意) |
int32 |
開始位置を指定します。デフォルト値:0。オフセットベースのページネーションでは、Offset + Limit は 100,000 を超えることはできません。 |
|
SetLimit (任意) |
int32 |
返す行数の上限を指定します。デフォルト値:10。最大値:100。0 を指定すると行は返されません。 |
|
SetHighlight (任意) |
*search.Highlight |
テキストフィールドのサマリーとハイライトを設定します。詳細については、「サマリーとハイライト」をご参照ください。 |
|
SetCollapse (任意) |
*search.Collapse |
クエリ結果を集約します。詳細については、「クエリ結果を集約する」をご参照ください。 |
|
SetSort (任意) |
*search.Sort |
結果のソート順を指定します。詳細については、「結果のソートとページ分割」をご参照ください。 |
|
SetGetTotalCount (任意) |
bool |
一致した行をすべてカウントするかどうかを指定します。デフォルト値:false。 |
|
SetToken (任意) |
[]byte |
前回のレスポンスで返された NextToken 値を指定します。このメソッドは、トークンに前ページのソート条件が含まれているため、Sort をクリアします。トークンベースのページネーションを使用する場合は Offset を指定しないでください。 |
|
SetSearchFilter (任意) |
*search.SearchFilter |
クエリ後フィルターを適用します。詳細については、「クエリ後フィルターを使用する」をご参照ください。 |
|
Aggregation (任意) |
...search.Aggregation |
集計を設定します。詳細については、「集計」をご参照ください。 |
|
GroupBy (任意) |
...search.GroupBy |
グルーピングを設定します。詳細については、「集計」をご参照ください。 |
クエリ条件
クエリは search.MatchQuery 型で、次のパラメータが含まれます。
|
名前 |
タイプ |
説明 |
|
FieldName (必須) |
string |
クエリ対象のテキストフィールド名。 |
|
Text (必須) |
string |
クエリテキスト。フィールドに設定されたアナライザーを使用してトークン化されます。 |
|
Operator (任意) |
*search.QueryOperator |
トークン間の論理演算子。有効な値: |
|
MinShouldMatch (任意) |
*string |
|
|
Weight (任意) |
*float32 |
クエリ条件の関連性の重み。 |
返される列
request.ColumnsToGet は tablestore.ColumnsToGet 型で、次のパラメータが含まれます。
|
名前 |
タイプ |
説明 |
|
Columns (任意) |
[]string |
返される属性列。このパラメータは、ReturnAll と ReturnAllFromIndex がどちらも false の場合にのみ有効です。 |
|
ReturnAll (任意) |
bool |
データテーブル内のすべての属性列を返すかどうかを指定します。デフォルト値:false。 |
|
ReturnAllFromIndex (任意) |
bool |
インデックス化されたすべての属性列を返すかどうかを指定します。デフォルト値:false。ReturnAll と同時に true に設定しないでください。 |
レスポンス
Search メソッドは tablestore.SearchResponse 値を返します。次の表では、主要なビジネスフィールドについて説明します。
|
名前 |
タイプ |
説明 |
|
TotalCount |
int64 |
一致した行の総数。この値は SetGetTotalCount の設定によって決まります。 |
|
Rows |
[]*tablestore.Row |
現在のクエリで返された行。行数は SetLimit で指定した値を超えません。 |
|
SearchHits |
[]*tablestore.SearchHit |
検索ヒット。ハイライト、ネストされた内部ヒット、または関連度スコアを使用する場合は、このフィールドを読み取ってください。 |
|
NextToken |
[]byte |
次のページのトークン。値が空でない場合は、次のクエリに渡してください。 |
|
IsAllSuccess |
bool |
すべてのインデックスパーティションがクエリされたかどうかを示します。値が false の場合は、部分的な結果が返され、TotalCount は実際の一致した行数より少ない可能性があります。 |
|
AggregationResults |
search.AggregationResults |
集約結果。 |
|
GroupByResults |
search.GroupByResults |
グループ化結果。 |