Amazon CloudSearch
開発者ガイド (API バージョン 2013-01-01)

Amazon CloudSearch での結果のソート

デフォルトでは、検索結果は検索リクエストとの関連性に基づいてソートされます。ドキュメントの関連性スコア(_score)は、検索用語がドメインのすべてのドキュメントに出現する頻度と、そのドキュメントに出現する頻度を比較した結果に基づいて計算されます。関連性スコアは、データおよびクエリによって大きく異なる正の値です。クエリの各句のスコアは加算されるため、句の数が多いほど、句の数が 1 つまたは 2 つのクエリよりも当然高いスコアになります。一般的なクエリがどのような結果になるかわかっている場合は、テストクエリを実行して、実際のスコアの範囲がどのようになるか確認することができます。

検索結果のソート方法を変更するには、以下の方法があります。

  • text または literal フィールドを使用して、結果をアルファベット順にソートします。Amazon CloudSearch では Unicode コードポイントでソートされるため、数字が文字の前に、大文字が小文字の前に来ることに注意してください。数は値ではなく文字列としてソートされ、たとえば 10 は 2 の前に来ます。

  • int または double フィールドを使用して、結果を数値順にソートします。

  • date フィールドを使用して、結果を日付順にソートします。

  • カスタム式を使用して、結果をソートします。

フィールドを使用して検索結果をソートするには、そのフィールドを SortEnabled に設定する必要があります。SortEnabled にできるのは単一値フィールドのみです—配列型のフィールドをソート時に使用することはできません。フィールドの設定の詳細については、「インデックスオプションの設定」を参照してください。

ソート時に式を使用するには、int フィールド、その他の式、ドキュメントの関連性スコア、数値演算子および数値関数を使用して、数式を作成します。式は、ドメイン設定または検索リクエスト内で定義できます。式の設定の詳細については、「式の設定」を参照してください。

ヒント

ランダムに結果を並べ替えるには、単純な _rand 式を使用できます。

/2013-01-01/search?expr.r=_rand&q=test&return=r%2Cplot%2Ctitle&sort=r+desc

この式は安定していて、最初のランダム化された並べ替えを失くことなく前後に移動できます。別のランダム化された並べ替えを使用する場合は、次のように、_rand の値の後に a-z または 0-9 文字を追加できます。

/2013-01-01/search?expr.r=_rand1a2b3c&q=test&return=r%2Cplot%2Ctitle&sort=r+desc

結果のソートに使用するフィールドまたは式を指定するには、sort パラメータを使用します。フィールドまたは式の名前と共に、明示的にソート方向を指定する必要があります。例えば、sort=year ascsort=year desc などです。

ソートにフィールドを使用するとき、値がないドキュメントは最後に表示されます。フィールドまたは式のカンマ区切りリストを指定する場合は、最初のフィールドまたは式はプライマリソート条件として使用され、2 番目はセカンダリソート条件として使用され、以降も同様です。

sort パラメータを指定しなかった場合、検索結果は、ドキュメントのデフォルトの関連性スコアを使用してランク付けされ、スコアの高いドキュメントから順に表示されます。これは sort=_score desc を指定した場合と同等です。

q.options パラメータを使用して、ドキュメントの関連性 _score を計算する際にフィールドに適用する重みを指定できます。詳細については、「フィールドの相対的重み付けを利用したテキストの関連性のカスタマイズ」を参照してください。