ワイルドカードクエリを実行する場合、クエリにアスタリスク (*) および疑問符 (?) ワイルドカード文字を使用してデータを検索できます。アスタリスク (*) は、検索語の前、後、または検索語の位置にある任意の長さの文字列と一致します。疑問符 (?) は、特定の位置にある単一の文字と一致します。文字列はアスタリスク (*) または疑問符 (?) で始めることができます。たとえば、「table*e」という文字列を検索すると、「tablestore」が一致する可能性があります。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成およびデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
パラメータ
パラメータ | 説明 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
query | クエリのタイプ。クエリタイプを WildcardQuery に設定します。 |
FieldName | クエリする列の名前。 |
Value | ワイルドカード文字を含む文字列。文字列は32文字を超えることはできません。 |
ColumnsToGet | 一致した各行のすべての列を返すかどうかを指定します。 デフォルトでは、ReturnAll の値は false で、すべての列が返されないことを指定します。 ReturnAll が false に設定されている場合、ColumnsToGet を使用して返す列を指定できます。返す列を指定しない場合は、プライマリキー列のみが返されます。 ReturnAll を true に設定すると、すべての列が返されます。 |
サンプルコード
次のサンプルコードは、Col_Keyword 列の値が「hang*u」と一致する行をテーブルで検索する方法の例を示しています。
/**
* Col_Keyword 列の値が "hang*u" と一致する行をテーブルで検索します。
*/
func WildcardQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.WildcardQuery{} // クエリタイプを WildcardQuery に設定します。
query.FieldName = "Col_Keyword"
query.Value = "hang*u"
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
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
関連情報
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。タームクエリ、タームズクエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、地理クエリ、ブールクエリ、KNNベクトル検索、ネストクエリ、存在クエリ。検索インデックスによって提供されるクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
並べ替えおよびページング機能を使用して、クエリ条件を満たす行を並べ替えまたはページングできます。詳細については、並べ替えとページングを参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に1回だけ表示されます。詳細については、折りたたみ(重複排除)を参照してください。
データテーブルのデータを分析する場合、Search オペレーションの集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値と最大値、合計、および行の総数を取得できます。詳細については、集計およびSQL クエリを参照してください。
行を並べ替える必要なく、クエリ条件を満たすすべての行を取得する場合、ParallelScan および ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンの実行を参照してください。