4

我有以下 CloudSearch 查询

$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

1 回答 1

3

我有这个问题的解决方案

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

 );
于 2015-02-05T03:13:57.430 回答