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

Tablestore:プレフィックスクエリ

最終更新日:Dec 28, 2024

プレフィックスクエリを実行して、指定したプレフィックスに一致するデータをクエリできます。プレフィックス条件の照合に使用されるフィールドがTEXTフィールドの場合、フィールド値はトークン化されます。少なくとも1つのトークンに指定されたプレフィックスが含まれている場合、行はクエリ条件を満たします。

前提条件

パラメーター

パラメーター

説明

query

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

fieldName

クエリする列の名前。

prefix

プレフィックス。

プレフィックス条件の照合に使用される列がText列の場合、列はトークン化されます。少なくとも1つのトークンに指定されたプレフィックスが含まれている場合、行はクエリ条件を満たします。

getTotalCount

クエリ条件を満たす行の総数を返すかどうかを指定します。デフォルト値:false。

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

weight

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

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

tableName

データテーブルの名前。

indexName

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

columnsToGet

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

returnAllパラメーターのデフォルト値はfalseで、すべての列が返されるわけではないことを指定します。この場合、columnsパラメーターを使用して、返す列を指定できます。返す列を指定しない場合は、プライマリキー列のみが返されます。

returnAllパラメーターをtrueに設定すると、すべての列が返されます。

サンプルコード

次のサンプルコードは、テーブル内のCol_Keyword列の値にプレフィックス「hangzhou」が含まれる行をクエリする方法の例を示しています。

/**
 * Col_Keyword の値にプレフィックス "hangzhou" が含まれる行をテーブルから検索します。
 * @param client
 */
private static void prefixQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    PrefixQuery prefixQuery = new PrefixQuery(); // クエリタイプを PrefixQuery に設定します。
    searchQuery.setGetTotalCount(true);
    prefixQuery.setFieldName("Col_Keyword");
    prefixQuery.setPrefix("hangzhou");
    searchQuery.setQuery(prefixQuery);
    //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

関連情報