Tablestore SDK for Go でフレーズ一致検索を使用すると、トークンの順序と位置に基づいて、テキストフィールド内のフレーズを一致させることができます。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化します。
説明
フレーズ一致検索はクエリテキストをトークン化し、テキストフィールド内でトークンが指定された順序で出現する必要があります。スロップは、トークンがまたがることができる位置の数を制御します。テキストフィールドでファジーアナライザーを使用している場合、フレーズ一致検索により、ワイルドカードクエリに類似したファジーマッチングを、より低いクエリレイテンシーで実現できます。
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
次の例では、データをクエリし、最大 10 行と一致した行の総数を返します。
tableName := "example_table"
indexName := "example_index"
query := &search.MatchPhraseQuery{FieldName: "title", Text: "go search", Slop: proto.Int32(0)}
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.MatchPhraseQuery タイプで、以下のパラメーターを含みます。
|
名前 |
タイプ |
説明 |
|
FieldName (必須) |
string |
クエリ対象のテキストフィールドの名前。 |
|
Text (必須) |
string |
一致させるフレーズのテキスト。 |
|
Slop (オプション) |
*int32 |
トークンがまたがることができる位置の数を制御します。デフォルト値:0。 |
|
Weight (オプション) |
*float32 |
クエリ条件の関連性の重み。 |
返す列
request.ColumnsToGet は tablestore.ColumnsToGet 型で、以下のパラメーターを含みます。
|
名前 |
タイプ |
説明 |
|
Columns (オプション) |
[]string |
返す属性列。ReturnAll と ReturnAllFromIndex がいずれも false の場合にのみ有効です。 |
|
ReturnAll (オプション) |
bool |
データテーブル内のすべての属性列を返すかどうかを指定します。デフォルト値: false。 |
|
ReturnAllFromIndex (オプション) |
bool |
インデックス化されたすべての属性列を返すかどうかを指定します。デフォルト値: false。ReturnAll と同時に true に設定しないでください。 |
応答
Search メソッドは tablestore.SearchResponse 値を返します。
|
名前 |
タイプ |
説明 |
|
TotalCount |
int64 |
一致した行の総数。この値は |
|
Rows |
[]*tablestore.Row |
現在のクエリで返された行。行数は |
|
SearchHits |
[]*tablestore.SearchHit |
検索ヒット。ハイライト、ネストされたインナーヒット、または関連性スコアを使用する場合は、このフィールドを参照します。 |
|
NextToken |
[]byte |
次ページ用のトークン。値が空でない場合は、次のクエリに渡します。 |
|
IsAllSuccess |
bool |
すべてのインデックスパーティションがクエリされたかどうかを示します。値が false の場合は部分的な結果が返され、TotalCount は実際の一致行数より少ない可能性があります。 |
|
AggregationResults |
search.AggregationResults |
集約結果。 |
|
GroupByResults |
search.GroupByResults |
グルーピング結果。 |