在 Amazon 配置表達式 CloudSearch - Amazon CloudSearch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon 配置表達式 CloudSearch

您可以定義數值運算式並將其用於對搜尋結果進行排序。運算式亦可隨搜尋結果傳回。您可以將運算式加入至網域組態或由搜尋請求中定義運算式。

為 Amazon 編寫表達式 CloudSearch

Amazon CloudSearch 表達式可以包含:

  • 啟用排序的單值數值欄位:intdoubledate(您必須指定具體欄位,不支援萬用字元)

  • 其他運算式

  • _score 變數,其為參考某文件的相關性分數

  • _time 變數,其為參考目前的 epoch 時間

  • _rand 變數,其將傳回隨機產生的值

  • 整數、浮點數、十六進位和八進位常值

  • 算術運算子:+ - * / %

  • 位元運算子: | & ^ ~ << >> >>>

  • 布林值運算子 (包括三元運算子): && || ! ?:

  • 比較運算子: < <= == >= >

  • 數學函數: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 優先順序規則適用於運算子。您可以使用括號覆寫運算子優先順序。

計算邏輯運算式時會使用捷徑計算 — 如果可以在評估第一個引數之後確定運算式的值,則不會評估第二個引數。例如,運算式 a || b 只有在 a 為非 true 時才會評估 b

運算式一律會傳回從 0 到 64 位元帶正負號整數值上限 (2^63 - 1) 的整數值。中間結果將計算成雙精度浮點值,而傳回值則捨入到最接近的整數。如果運算式無效或計算結果為負值,即會傳回 0。如果運算式的計算結果大於最大值,則將傳回最大值。

運算式名稱必須以字母開頭,長度至少 3 個字元且不超過 64 個字元。允許的字元如下:a-z (小寫字母)、0-9 和 _ (底線)。名稱 score 是保留項目,不得做為運算式名稱使用。

例如,假設您為網域定義了一個 int 欄位名為 popularity,即可使用該欄位搭配預設相關性分數 _score 建構自訂運算式。

(0.3*popularity)+(0.7*_score)

請注意,這個簡單的範例假定熱門程度排名 (popularity) 和相關性分數 (_score) 的值大致落在相同的範圍內。若要調整運算式用於將結果排名,您需要進行一些測試,以判定應如何為運算式的元件加權才能獲得您想要的結果。

在 Amazon CloudSearch 表達式中使用日期欄位

date 欄位內的值儲存為以毫秒計的 epoch 時間。這表示您可以使用數學運算子和比較運算子,利用存放在文件中的日期和目前的 epoch 時間 (_time) 建構運算式。例如,若使用以下運算將電影網域的搜尋結果排序,則最新發行日期的電影將排在清單最上方。

_score/(_time - release_date)