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

Tablestore:用語クエリ

最終更新日:Dec 28, 2024

用語クエリを使用すると、指定したフィールドの値と完全に一致するデータをクエリできます。用語クエリは、文字列一致条件に基づくクエリに似ています。列のタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードを照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致する場合、その行はクエリ条件を満たします。列の値の照合に使用されるキーワードはトークン化されません。

前提条件

パラメーター

パラメーター

説明

query

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

fieldName

クエリ対象の列の名前。

term

用語クエリの実行時に列の値の照合に使用されるキーワード。この単語はトークン化されません。代わりに、単語全体が列値の照合に使用されます。

列のタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードを照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致する場合、その行はクエリ条件を満たします。たとえば、行の TEXT タイプの列の値が "tablestore is cool" の場合、値は "tablestore"、"is"、"cool" にトークン化できます。列の値を照合するためのキーワードとして "tablestore"、"is"、または "cool" を指定すると、行はクエリ条件を満たします。

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 termQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    TermQuery termQuery = new TermQuery(); // クエリタイプを TermQuery に設定します。
    termQuery.setFieldName("Col_Keyword"); // 一致させるフィールドの名前を設定します。
    termQuery.setTerm(ColumnValue.fromString("hangzhou")); // 一致させる値を設定します。
    searchQuery.setQuery(termQuery);
    //searchQuery.setGetTotalCount(true); //GetTotalCount パラメーターを 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

参考資料