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

Tablestore:ワイルドカードクエリ

最終更新日:Dec 28, 2024

ワイルドカードクエリを実行する場合、クエリでアスタリスク (*) および疑問符 (?) ワイルドカード文字を使用してデータを検索できます。アスタリスク (*) は、検索語の前、後、または検索語にある任意の長さの文字列と一致します。疑問符 (?) は、特定の位置にある単一の文字と一致します。文字列はアスタリスク (*) または疑問符 (?) で始めることができます。たとえば、"table*e" 文字列を検索すると、"tablestore" が一致します。

説明

前提条件

パラメータ

パラメータ

説明

fieldName

クエリ対象のフィールド名。

value

ワイルドカード文字を含む文字列。文字列は32文字を超えることはできません。

query

クエリのタイプ。このパラメータを WildcardQuery に設定します。

getTotalCount

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

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

weight

BM25ベースのキーワード関連性スコアを計算するために、クエリ対象のフィールドに割り当てる重み。このパラメータは、全文検索シナリオで使用されます。クエリ対象のフィールドに高い重みを指定すると、そのフィールドのBM25ベースのキーワード関連性スコアが高くなります。このパラメータの値は正の浮動小数点数です。

このパラメータは、返される行数には影響しませんが、クエリ結果のBM25ベースのキーワード関連性スコアに影響します。

tableName

データテーブルの名前。

indexName

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

columnsToGet

クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメータには、returnAll フィールドと columns フィールドを設定できます。

returnAll フィールドのデフォルト値は false で、すべての列が返されるわけではないことを指定します。この場合、columns フィールドを使用して、返す列を指定できます。返す列を指定しない場合は、主キー列のみが返されます。

returnAll フィールドを true に設定すると、すべての列が返されます。

次のサンプルコードは、Col_Keyword 列の値が "hang*u" パターンに一致する行をクエリする方法の例を示しています。

/**
 * Col_Keyword 列の値が "hang*u" パターンに一致する行をテーブルから検索します。
 * @param client
 */
private static void wildcardQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    WildcardQuery wildcardQuery = new WildcardQuery(); // WildcardQuery を使用します。
    wildcardQuery.setFieldName("Col_Keyword");
    wildcardQuery.setValue("hang*u"); // wildcardQuery に1つ以上のワイルドカード文字を含む文字列を指定します。
    searchQuery.setQuery(wildcardQuery);
    //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("ColName1","ColName2")); // 返す列を指定します。
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // 返された行数ではなく、一致する行の総数を表示します。
    System.out.println("Row: " + resp.getRows());
}

FAQ

参考資料