2016-10-15 2 views
0

필드의 배열이 &이고 'and'또는 'or'연산자 중 하나 또는 둘 모두를 사용하여 Amazon CloudSearchDomain에 filterQuery 인수로 전달하려는 값이 있습니다. I는 시도Amazon CloudSearch 필터 쿼리에 PHP 배열을 인코딩하는 방법

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

:

예를 들어, I는 단일 '및'필드 (카테고리) 및 ​​제 '및'필드 여러 구성된다 "또는"값을 전달하려는 :

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

그래서 검색은 '고양이 이름을'일치와 내가 수동으로 올바른 구문을 통과 할 수없는 것

적색 또는 녹색 항목을 찾은 것이다 것 다음도 좋은 깨끗한 솔루션 등 t를 변환 그는 올바른 AWS 구문으로 PHP 배열을하시기 바랍니다.

답변

0

여기에서 두 가지 사항을 확인하십시오. 먼저 'OR'연산자를 사용하는 패싯 배열 내에서 필터링을 수행하고 두 패싯 배열 사이를 필터링하는 경우 'AND'를 사용합니다. 사용법에 따라 판단하면 사용자가 "빨간색"또는 "녹색"을 선택할 때 결과를 표시하려고합니다. 예 : 반환 할 filterQuery에 쿼리 -> "(또는 color : 'red'(또는 color : 'green'))가 있어야합니다."

두 번째로 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 = % 28 또는 % 27 % 27 % 28 또는 % 3A % 27 % 27 % 29 % 29 ..... "

관련 문제