繁体   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