接尾辞クエリを実行して、接尾辞条件を指定することで、検索インデックス内のデータをクエリできます。たとえば、携帯電話番号の下4桁に基づいてパッケージをクエリできます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成およびデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
使用上の注意
Tablestore SDK for Java V5.17.0 以降では、接尾辞クエリがサポートされています。接尾辞クエリを実行するには、Tablestore SDK for Java V5.17.0 以降を取得してください。 Tablestore SDK for Java のバージョン履歴については、Tablestore SDK for Java のバージョン履歴を参照してください。
接尾辞クエリは、FuzzyKeyword タイプのフィールドのみをクエリするために使用できます。
パラメーター
パラメーター | 説明 |
query | クエリのタイプ。このパラメーターを SuffixQuery に設定します。 |
fieldName | 一致させるフィールドの名前。 |
suffix | 接尾辞。 |
getTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメーターのデフォルト値は false で、クエリ条件を満たす行の総数は返されません。 このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
weight | BM25 ベースのキーワード関連性スコアを計算するために、クエリ対象のフィールドに割り当てる重み。このパラメーターは、全文検索シナリオで使用されます。クエリ対象のフィールドに高い重みを指定すると、そのフィールドの BM25 ベースのキーワード関連性スコアが高くなります。このパラメーターの値は正の浮動小数点数です。 このパラメーターは、返される行の数には影響しません。ただし、このパラメーターは、クエリ結果の BM25 ベースのキーワード関連性スコアに影響します。 |
tableName | データテーブルの名前。 |
indexName | 検索インデックスの名前。 |
columnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメーターには、returnAll フィールドと columns フィールドを設定できます。 returnAll フィールドのデフォルト値は false で、すべての列が返されないことを指定します。この場合、columns フィールドを使用して、返す列を指定できます。返す列を指定しない場合は、主キー列のみが返されます。 returnAll フィールドを true に設定すると、すべての列が返されます。 |
例
次のサンプルコードは、Col_FuzzyKeyword 列の値に "hangzhou" という接尾辞が含まれる行をクエリする方法の例を示しています。
/**
* Col_FuzzyKeyword 列の値に "hangzhou" という接尾辞が含まれる行をクエリします。
* @param client
*/
private static void suffixQuery(SyncClient client) {
SearchQuery searchQuery = new SearchQuery();
SuffixQuery suffixQuery = new SuffixQuery(); // クエリタイプを PrefixQuery に設定します。
searchQuery.setGetTotalCount(true);
suffixQuery.setFieldName("Col_FuzzyKeyword");
suffixQuery.setSuffix("hangzhou");
searchQuery.setQuery(suffixQuery);
//searchQuery.setGetTotalCount(true); // 一致する行の総数を返すように指定します。
SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
// columnsToGet パラメーターを設定して、返す列を指定するか、すべての列を返すように指定できます。このパラメーターを設定しない場合は、主キー列のみが返されます。
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
//columnsToGet.setReturnAll(true); // すべての列を返すように指定します。
columnsToGet.setColumns(Arrays.asList("Col_FuzzyKeyword")); // 返す列を指定します。
searchRequest.setColumnsToGet(columnsToGet);
SearchResponse resp = client.search(searchRequest);
//System.out.println("TotalCount: " + resp.getTotalCount()); // 返された行の数ではなく、一致する行の総数を表示するように指定します。
System.out.println("Row: " + resp.getRows());
}
FAQ
参考資料
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。タームクエリ、タームズクエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、接頭辞クエリ、範囲クエリ、ワイルドカードクエリ、地理クエリ、KNNベクトル検索、ブールクエリ、ネストされたクエリ、存在クエリ。検索インデックスを作成した後、検索インデックスが提供するクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
並べ替え機能とページング機能を使用して、クエリ条件を満たす行を並べ替えたりページ分割したりできます。詳細については、並べ替えとページングの実行を参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。これにより、指定されたタイプのデータはクエリ結果に1回だけ表示されます。詳細については、折りたたみ(重複排除)を参照してください。
テーブル内のデータを分析する場合、Search 操作を呼び出して集計機能を使用するか、SQL クエリ機能を使用できます。たとえば、最大値と最小値、値の合計、行数をクエリできます。詳細については、集計とSQL クエリを参照してください。
行を並べ替えることなく、クエリ条件を満たすすべての行を取得する場合、ParallelScan 操作と ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。