

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon CloudSearch での式の設定
<a name="configuring-expressions"></a>

数値式を定義し、検索結果のソートに使用できます。式は検索結果内に返すこともできます。ドメイン設定に式を追加したり、検索リクエストで式を定義したりできます。

**Topics**
+ [Amazon CloudSearch の式の記述](#writing-expressions)
+ [query time expressions](defining-expressions-in-requests.md)
+ [Amazon CloudSearch 内の検索ドメインに対する再利用可能な式の設定](configuring-reusable-expressions.md)
+ [Amazon CloudSearch での式の比較](comparing-expressions.md)

## Amazon CloudSearch の式の記述
<a name="writing-expressions"></a>

Amazon CloudSearch の式は以下で構成されている可能性があります。
+ 1 つの値が含まれるソート可能な数値フィールド (`int`、`double`、`date`)。(特定のフィールドを指定する必要があります。ワイルドカードはサポートされていません。)
+ その他の式
+ ドキュメントの関連性スコアを参照する `_score` 変数
+ 現在のエポック時間を参照する `_time` 変数
+ ランダムに生成された値を返す `_rand` 変数
+ 整数、浮動小数点、16 進数、8 進数のリテラル
+ 算術演算子: `+ - * / %`
+ ビット演算子: ` | & ^ ~ << >> >>>`
+ ブール演算子 (三項演算子を含む): ` && || ! ?: `
+ 比較演算子: ` < <= == >= > `
+ 数学関数: `abs ceil exp floor ln log10 logn max min pow sqrt `
+ 三角関数: `acos acosh asin asinh atan atan2 atanh cos cosh sin sinh tanh tan`
+ `haversin` 距離関数

[ JavaScript の優先順位ルール ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) が演算子に適用されます。演算子の優先順位は括弧を使用することで変更できます。

論理式の評価にはショートカット評価が使用されます式の値が最初の引数の評価後に決定できる場合、2 番目の引数は評価されません。例えば、式 `a || b` で `b` が評価されるのは、`a` が true でない場合のみです。

式は常に、0 から符号付き 64 ビット整数最大値 (2^63 - 1) までの整数値を返します。中間結果は倍精度浮動小数点値として計算され、戻り値は最も近い整数に丸められます。式は、無効であるか負の値に評価された場合は、0 を返します。式は、最大値よりも大きい値に評価された場合は、最大値を返します。

式名は、3 文字以上、64 文字以内で、先頭は英字にする必要があります。a～z (小文字)、0～9、\$1 (下線) の文字を使用できます。*score* という名前は予約済みのため、式名として使用できません。

例えば、ドメインに *popularity* という `int` フィールドを定義した場合、そのフィールドとデフォルトの関連性 `_score` を組み合わせてカスタム式を作成できます。

```
(0.3*popularity)+(0.7*_score)
```

この簡単な例では、使用頻度ランクと関連性 \$1score の値がほぼ同じ範囲内にあることを想定しています。結果をランク付ける式をチューニングするには、式の構成要素に付ける重みをテストして、必要な結果が得られる重みを決定する必要があります。

### Amazon CloudSearch の式での日付フィールドの使用
<a name="using-dates-in-expressions"></a>

`date` フィールドの値は、ミリ秒単位でエポック時刻として保存されます。つまり、ドキュメントに保存された日付と現在のエポック時刻 (`_time`) を使用した式を構築するために算術演算子と比較演算子を使用できるということです。例えば、以下の式を使用して movies ドメインの検索結果をソートすると、リリース日が最近の映画がリストの先頭に来ます。

```
_score/(_time - release_date)
```

# 検索リクエストでの Amazon CloudSearch の式の定義
<a name="defining-expressions-in-requests"></a>

結果のソートに使用する式を細かくチューニングしながら、すばやく反復処理できるように、検索リクエスト内で直接、式を定義して使用できます。また、検索リクエスト内で式を定義することで、ユーザーの位置情報などのコンテキスト情報を式に組み込むこともできます。ドメイン設定で定義された式を上書きするために、検索リクエスト内で同じ名前の式を定義することもできます。

検索リクエスト内で式を定義すると、その式はドメイン設定の一部として保存されません。その式を他のリクエスト内でも使用する場合は、各リクエストで定義するか、ドメイン設定に追加する必要があります。式をドメイン設定に追加せずに、各リクエストに定義すると、リクエストのオーバーヘッドが増加し、その結果として応答時間が遅くなり、ドメインの運用コストが増える可能性があります。ドメイン設定に式を追加する方法については、「[式の設定](configuring-expressions.md)」を参照してください。

検索リクエストで複数の式を定義して使用することができます。式の定義では、ドメイン設定の一部として設定された式だけでなく、リクエストに定義された他の式も参照できます。

検索リクエストで定義する式の使用方法に制限はありません。式を使用することで、検索結果をソートしたり、他の式を定義したり、検索結果内に計算後の情報を返したりできます。

**検索リクエスト内で式を定義するには**

1. `expr.NAME` パラメータを使用します。ここで、NAME は定義する式の名前です。例: 

   ```
   expr.rank1=log10(clicks)*_score
   ```

1. 式を使用して結果をソートするには、`sort` パラメータで式の名前を指定します。

   ```
   search?q=terminator&expr.rank1=log10(clicks)*_score&sort=rank1 desc
   ```

1. 検索結果内に計算後の値を返すには、`return` フィールドのリストに式を追加します。

   ```
   search?q=terminator&expr.rank1=log10(clicks)*_score&sort=rank1 desc&return=rank1
   ```

 例えば、以下のリクエストは結果のソートに使用される 2 つの式を作成し、検索結果にそのうちの 1 つを返します。

```
search?q=terminator&expr.rank1=sin( _score)&expression.rank2=cos( _score)&sort=rank1 desc,rank2 desc&return=title,_score,rank2
```

# Amazon CloudSearch 内の検索ドメインに対する再利用可能な式の設定
<a name="configuring-reusable-expressions"></a>

ドメインの設定で式を定義すると、その式は任意の検索リクエストで参照できます。ドメイン設定に式を追加すると、リクエストごとにその式を指定するオーバーヘッドが減少し、その結果として応答時間が最速になり、コストが最小になる可能性があります。

ドメイン設定に式を追加すると、その変更が処理されて新しい式がアクティブになるまでに、しばらく時間がかかります。式への変更をすばやくテストするには、「[検索リクエスト内での式の定義](defining-expressions-in-requests.md)」で説明するように、検索リクエスト内でで直接式を定義して使用できます。式をテストしてチューニングした後、ドメイン設定に追加する必要があります。

**Topics**
+ [Amazon CloudSearch console](#configuring-expressions-console)
+ [aws cloudsearch define-expression](#configuring-expressions-clt)
+ [DefineRankExpression](#configuring-expressions-sdk)

## Amazon CloudSearch コンソールを使用した式の設定
<a name="configuring-expressions-console"></a>

**式を設定するには**

1. Amazon CloudSearch コンソール ([https://console.aws.amazon.com/cloudsearch/home](https://console.aws.amazon.com/cloudsearch/home)) を開きます。

1. 左側のナビゲーションペインから **[ドメイン]** を選択します。

1. ドメイン名を選択し、設定を開きます。

1. **[高度な検索オプション]** タブに移動します。

1. **[式]** ペインで **[式の追加]** を選択します。

1. 新しい式の名前を入力します。

1. **[値]** で、検索時に評価する必要がある数式を入力します。**[挿入]** を選択して特殊な値、数学関数、三角関数を追加できます。

1. **[保存]** を選択します。

## を使用した Amazon CloudSearch 式の設定 AWS CLI
<a name="configuring-expressions-clt"></a>

`aws cloudsearch define-expression` コマンドを使用してドメイン用に計算式を定義します。

**式を設定するには**
+ `aws cloudsearch define-expression` コマンドを実行して新しい式を定義します。`--name` オプションを使用して式の名前を指定し、`--expression` オプションを使用して評価する数式を指定します。例えば以下のリクエストは、ドキュメントの `popularhits` と関連性 `popularity` を考慮に入れた `_score` という名前の式を作成します。

  ```
  aws cloudsearch define-expression --domain-name movies --name popularhits --expression '((0.3*popularity)/10.0)+(0.7* _score)'
  
  {
      "Expression": {
          "Status": {
              "PendingDeletion": false, 
              "State": "Processing", 
              "CreationDate": "2014-05-01T01:15:18Z", 
              "UpdateVersion": 52, 
              "UpdateDate": "2014-05-01T01:15:18Z"
          }, 
          "Options": {
              "ExpressionName": "popularhits", 
              "ExpressionValue": "((0.3*popularity)/10.0)+(0.7* _score)"
          }
      }
  }
  ```

## Amazon CloudSearch 設定 API を使用した式の設定
<a name="configuring-expressions-sdk"></a>

AWS SDK では (Android および iOS SDK を除く)、`DefineExpression` も含めて、Amazon CloudSearch 設定 API で定義されたすべての Amazon CloudSearch アクションがサポートされています。AWS SDK のインストールと使用の詳細については、[「AWS Software Development Kits」](https://aws.amazon.com/code)(AWS ソフトウェアデベロップメントキット) を参照してください。

# Amazon CloudSearch での式の比較
<a name="comparing-expressions"></a>

 Amazon CloudSearch コンソールを使用して式を比較し、式やフィールドの重みの変更が Amazon CloudSearch による検索結果のソート方法にどのような影響を与えるかを確認します。

**式を比較するには**

1. Amazon CloudSearch コンソール ([https://console.aws.amazon.com/cloudsearch/home](https://console.aws.amazon.com/cloudsearch/home)) を開きます。

1. 左側のナビゲーションペインで **[ドメイン]** を選択します。

1. ドメイン名を選択し、設定を開きます。

1. **[アクション]**、**[式の比較]** を選択します。

1. **[検索]** ボックスに検索する用語を入力します。Amazon CloudSearchは、指定した式と重みを使用して検索結果をランク付けします。式または重みを変更するたびに結果が更新されます。

1. 式エディタでそれぞれ、比較するランク式を指定します。新しい式を追加したり、**[保存済みの式]** メニューから既存の式を選択したりできます。Amazon CloudSearch は検索リクエストの送信時に新しい式を評価します。

1. 各式で使用するフィールドの重みを指定します。式で直接、フィールドの重みを編集することもできます。フィールドの重みは 0.0～10.0 の範囲内で指定する必要があります。デフォルトでは、すべてのフィールドの重みは 1.0 に設定されています。個々のフィールドの重みを設定することで、特定のテキストまたはリテラルのフィールドの一致がドキュメントの関連する \$1score に与える影響を制御できます。また、デフォルトの重みを変更することもできます。
**注記**  
フィールドの重みを調整すると、式が `_score` の値を参照する場合にのみ、結果のランク付けに影響を与えます。式を変更して、重みの関連性 `_score` がドキュメント全体のランク付けに与える影響を変えることができます。詳細については、「[フィールドの相対的重み付けを利用したテキストの関連性のカスタマイズ](weighting-fields.md)」を参照してください。

1. **[Run]** (実行) を選択します。

1. 2 つの式の検索結果は並べて表示されます (式が空白の場合、結果はデフォルトの関連性 `_score` に従ってソートされます)。以下の 4 つのアイコンによって違いが強調表示されます。  
![\[Green upward-pointing arrow icon indicating an increase or positive trend.\]](http://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/images/cloudsearch-console-green-up-arrow.png) 緑の上矢印  
 ドキュメントは、2 番目の式を使用した検索結果で上位にランク付けされています。  
![\[Red downward-pointing arrow icon indicating a download or direction.\]](http://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/images/cloudsearch-console-red-down-arrow.png) 赤の下矢印  
 ドキュメントは、2 番目の式を使用した検索結果で下位にランク付けされています。  
![\[Yellow plus sign icon typically used to indicate an add or create action.\]](http://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/images/cloudsearch-console-yellow-plus.png) 黄色のプラス記号  
 ドキュメントは、2 番目の式を使用した検索結果に含まれていますが、最初の式を使用した検索結果からは除外されました。  
![\[Red circular sign with a white horizontal bar, indicating prohibition or restriction.\]](http://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/images/cloudsearch-console-red-minus.png) 赤のマイナス記号  
 ドキュメントは、2 番目の式を使用した検索結果からは除外されましたが、最初の式を使用した検索結果には含まれています。

**注記**  
式は **[式の比較]** ペインから直接、ドメイン設定に保存できます。いずれかの式を保存するには、**[式の保存]** を選択します。