Фильтр ограничивающего прямоугольника Cloudsearch

У меня есть следующий CloudSearch Query

$query = array(
'query' => '(and expiry:[' . $time . ',} updatetime:[100,} type:\'all\')',
'queryParser' => 'structured',
'queryOptions' => '{"defaultOperator":"and"}',
'sort' => 'distance asc',
'return'=>'_all_fields,_score,distance',
'size' => 5000,
'expr'=> '{"distance":"haversin(' . $lat . ',' . $lon . ',location.latitude,location.longitude)"}',
'start'=>$start,
'fq'=>'location:[\'35.628611,-120.694152\',\'35.621966,-120.686706\']'

);

Запрос работает за исключением части FQ, предполагается, что fq ограничит результаты в пределах ограничивающей области. но, несмотря на то, что это есть, это не ограничивает результаты. результаты далеко за пределами этого региона возвращаются. Что мне нужно изменить, чтобы заставить его работать правильно?

4

Решение

У меня есть решение этой проблемы

Хотя в документах aws это упоминается в примерах как FQ это на самом деле filterQuery

Также обратите внимание, что порядок расположения точек вверху слева, внизу справа

$query = array(
'query' => '(and expiry:[' . $time . ',} updatetime:[100,} type:\'all\')',
'queryParser' => 'structured',
'queryOptions' => '{"defaultOperator":"and"}',
'sort' => 'distance asc',
'return'=>'_all_fields,_score,distance',
'size' => 5000,
'expr'=> '{"distance":"haversin(' . $lat . ',' . $lon .          ',location.latitude,location.longitude)"}',
'start'=>$start,
'filterQuery'=>'location:[\'35.628611,-120.694152\',\'35.621966,-120.686706\']'

);
3

Другие решения

Других решений пока нет …