云搜索边界框筛选器


Cloudsearch bounding box filter

我有以下云搜索查询

$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 将结果限制在边界框区域内。 但尽管有它,它并没有限制结果。 远离该区域的结果正在返回, 我需要什么来更改它才能使其正常工作?

我有解决这个问题的解决方案

尽管 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'']'
 );