簡體   English   中英

如何將php數組編碼為Amazon CloudSearch filterquery

[英]How to encode php array to Amazon CloudSearch filterquery

我有一組字段和值,希望使用“ and”或“ or”運算符之一或兩者作為filterQuery參數傳遞給Amazon CloudSearchDomain。

例如,我想傳遞一個'and'字段(一個類別)和第二個'and'字段,該字段由多個'or'值組成:

$filters = array(
   'category' => 'cat name',
   'colour'   => array(
      'red',
      'green'
   )
);

我努力了:

$results = $cloudSearchClient->search(array(
   'filterQuery' => "(and(category:'cat name') (or (colour:'red') (colour:'green')))"
));

因此,搜索將找到與“貓名”匹配且為紅色或綠色的項目

我似乎無法手動傳遞正確的語法,然后也希望有一個很好的干凈解決方案,請將PHP數組轉換為正確的AWS語法。

您可能要在這里檢查兩件事。 首先是當您在構面數組中進行過濾時,您使用的是“ OR”運算符;如果要在兩個構面數組之間進行過濾,則將使用“ AND”。 根據您的使用情況判斷,您想在用戶選擇“紅色”或“綠色”時顯示結果。 例如。 您返回的filterQuery應該具有查詢->“(或顏色:'紅色'(或顏色:'綠色'))”

其次是監視傳遞到aws URL的查詢。 您的過濾器查詢可能是正確的,但URL字符串需要附加html編碼的空格。 例如http:// your-search-domain / 2013-01-01 / search?&q.parser = structured&q.options =%7Bsomefield%27%2C +%27&sort = something%20 &fq =%28or + color%3A%27red %27%28or + color%3A%27green%27%29%29 .....“

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM