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

Tablestore:接尾辞クエリ

最終更新日:Dec 28, 2024

接尾辞クエリを実行して、接尾辞条件を指定することで、検索インデックス内のデータをクエリできます。たとえば、携帯電話番号の下4桁に基づいてパッケージをクエリできます。

前提条件

使用上の注意

  • 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

参考資料