Tablestore SDK for Java を使用したフレーズ一致クエリは、トークンの順序と位置に基づいて Text フィールドを検索して、フレーズ条件を満たす行を関連性スコアとともに返します。
前提条件
Tablestore SDK for Java をインストールして、クライアントを初期化します。
機能の説明
フレーズ一致クエリは、Text フィールド内で、指定された順序と位置で連続して出現するトークンを検索します。フィールドタイプに関する詳細については、「文字列型」をご参照ください。フィールド値とクエリテキストは、検索インデックスの作成時に設定されたアナライザーを使用して分析されます。アナライザーが設定されていない場合、デフォルトで単一文字でのトークン化が使用されます。
フレーズ一致クエリでは、すべてのクエリトークンが同じ順序で、隣接する位置に出現する必要があります。たとえば、クエリテキスト this is は this is tablestore には一致しますが、this table is や is this a table には一致しません。match クエリ はトークンが一致するかどうかをチェックするだけで、トークンが隣接していることや、クエリテキストと同じ順序であることを要求しません。
Text フィールドでファジーアナライザーを使用する場合、フレーズ一致クエリは、より低いクエリレイテンシーで、ワイルドカードクエリ と同様のファジーマッチングを提供できます。
次の例では、description フィールドに tablestore と durable のトークンがこの順序で連続して含まれる行をクエリします。このクエリは、最大 10 行、一致した行の総数、および関連性スコアを返します。
String tableName = "example_table";
String indexName = "example_index";
MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
System.out.println(hit.getRow());
System.out.println(hit.getScore());
}
パラメーター
検索リクエスト
request は、以下のパラメーターを含む SearchRequest オブジェクトです。
|
名前 |
型 |
説明 |
|
tableName (必須) |
String |
テーブルの名前。 |
|
indexName (必須) |
String |
検索インデックスの名前。 |
|
searchQuery (必須) |
SearchQuery |
クエリ条件と共通のクエリ設定。 |
|
columnsToGet (任意) |
SearchRequest.ColumnsToGet |
返される列の設定。このパラメーターを省略した場合、プライマリキー列のみが返されます。 |
|
timeoutInMillisecond (任意) |
int |
リクエストレベルのクエリタイムアウト (ミリ秒単位)。デフォルト値は |
|
routingValues (任意) |
|
カスタムルーティングフィールドのプライマリキー値。インデックスがカスタムルーティングを使用しない場合は、このパラメーターを省略してください。 |
クエリ設定
request.searchQuery は、以下のパラメーターを含む SearchQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
query (必須) |
Query |
クエリ条件。フレーズ一致クエリの場合は、このパラメーターを |
|
offset (任意) |
Integer |
クエリの開始位置。 |
|
limit (任意) |
Integer |
返される行の最大数。このパラメーターを |
|
highlight (任意) |
Highlight |
|
|
collapse (任意) |
Collapse |
フィールドの折りたたみ設定。指定されたフィールドで結果を重複排除します。設定の詳細については、「クエリ結果の折りたたみ」をご参照ください。 |
|
sort (任意) |
Sort |
結果のソート順序。設定の詳細については、「結果のソートとページ分割」をご参照ください。 |
|
trackTotalCount (任意) |
int |
カウントする一致行の予想最大数。デフォルト値は |
|
filter (任意) |
SearchFilter |
|
|
aggregationList (任意) |
|
集計設定。設定の詳細については、「集計」をご参照ください。 |
|
groupByList (任意) |
|
グループ化設定。設定の詳細については、「集計」をご参照ください。 |
|
token (任意) |
byte[] |
ページネーショントークン。このパラメーターに前のレスポンスの |
フレーズ一致条件
request.searchQuery.query は、以下のパラメーターを含む MatchPhraseQuery オブジェクトです。
|
名前 |
型 |
説明 |
|
fieldName (必須) |
String |
クエリ対象の |
|
text (必須) |
String |
クエリテキスト。テキストはフィールドアナライザーを使用して分析され、トークンの順序と位置に基づいて照合されます。 |
|
weight (任意) |
float |
クエリの重み。デフォルト値は |
返される列
request.columnsToGet は、以下のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。
|
名前 |
型 |
説明 |
|
columns (任意) |
|
返す属性列。 |
|
returnAll (任意) |
boolean |
テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値は |
|
returnAllFromIndex (任意) |
boolean |
インデックスが作成されたすべての属性列を返すかどうかを指定します。デフォルト値は |
戻り値
クエリレスポンス
search メソッドは SearchResponse オブジェクトを返します。次の表に、主なフィールドを示します。
|
名前 |
型 |
説明 |
|
totalCount |
long |
一致した行の数。 |
|
rows |
|
現在のレスポンスで返された行。 |
|
searchHits |
|
検索ヒット。 |
|
nextToken |
byte[] |
次ページのトークン。 |
|
isAllSuccess |
boolean |
すべてのインデックスパーティションが正常にクエリされたかどうかを示します。 |
検索ヒット
response.searchHits[] は、以下の主なフィールドを含む SearchHit オブジェクトです。
|
名前 |
型 |
説明 |
|
row |
Row |
一致した行。 |
|
score |
Double |
関連性スコアです。値は |
|
highlightResultItem |
HighlightResultItem |
サマリーとハイライトの結果。 |